안녕하세요. 도정진입니다.
Docker 를 사용해보고 있는 중입니다만, 아직 글을 쓸 정도는 아닌데 글을 적고 있습니다. 요즘 너무 바쁘다 보니 블로그 글을 적을 시간이 너무 없어서 일단 게시하고 있습니다.
모든 걸 알기 전까지 글을 잘 적지 않는 편인데.. 부족하더라도 도움이 되셨으면 합니다.
1. docker 설치하기
일단 X86의 경우에 그냥 아래 명령으로 쉽게 설치가 됩니다.
curl -fsSL https://get.docker.com/ | sudo sh
커맨트 창에 docker 라고 입력해 봅니다.
root@debian-4350:~# docker
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/root/.docker")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit
Management Commands:
builder Manage builds
config Manage Docker configs
container Manage containers
engine Manage the docker engine
image Manage images
network Manage networks
node Manage Swarm nodes
plugin Manage plugins
secret Manage Docker secrets
service Manage services
stack Manage Docker stacks
swarm Manage Swarm
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes
Commands:
attach Attach local standard input, output, and error streams to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
login Log in to a Docker registry
logout Log out from a Docker registry
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive (streamed to STDOUT by default)
search Search the Docker Hub for images
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
version Show the Docker version information
wait Block until one or more containers stop, then print their exit codes
Run 'docker COMMAND --help' for more information on a command.
기본적으로 모르는 부분에 대해서는 --help 로 확인하실 수 있으니 어려움이 없으실 것입니다.
2. docker 이미지 검색 및 다운로드
root@debian-4350:~# docker search gitlab
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
gitlab/gitlab-ce GitLab Community Edition docker image based … 2571 [OK]
sameersbn/gitlab Dockerized gitlab web server 1121 [OK]
gitlab/gitlab-runner GitLab CI Multi Runner used to fetch and run… 524 [OK]
twang2218/gitlab-ce-zh 汉化的 GitLab 社区版 Docker Image 184 [OK]
gitlab/gitlab-ee GitLab Enterprise Edition docker image based… 148
jangrewe/gitlab-ci-android GitLab CI image for building Android apps 51 [OK]
centurylink/gitlab This image uses the image from sameersbn / g… 26 [OK]
edbizarro/gitlab-ci-pipeline-php Docker images for build and test PHP applica… 24
klud/gitlab-runner GitLab Runner for ARM devices 19
ciricihq/gitlab-sonar-scanner Gitlab Docker container to run sonar-scanner… 15 [OK]
gitlab/gitlab-runner-helper 14
dockerphp/gitlab-ci-pipeline Gitlab CI pipeline for PHP applications 4 [OK]
gitlab/cog GitLab Bundle for Cog 3
sgillespie/gitlab-runner A Dockerized GitLab Runner that automaticall… 3 [OK]
gitlab/gitlab-ce-qa GitLab QA has a test suite that allows end-t… 2
mastertinner/gitlab-merge-request-resource A concourse resource to check for new merge … 1 [OK]
lorands/gitlab-merge-request-resource This is a fork of swisscom/gitlab-merge-requ… 1 [OK]
boldcommerce/gitlab-merge-request-resource Reverted build of Swisscom's resource until … 0 [OK]
samcontesse/gitlab-merge-request-resource A concourse resource to check for new merge … 0 [OK]
stanfordlegion/gitlab-ci An image for Gitlab CI. 0 [OK]
edtan1/gitlab-merge-request-resource GitLab Merge Request resource for ConcourseCI 0 [OK]
instrumentisto/gitlab-builder Docker image with minimal toolchain required… 0 [OK]
gitlab/gitlab-ee-qa GitLab QA has a test suite that allows end-t… 0
gitlab/gitlab-qa GitLab QA has a test suite that allows end-t… 0
adamkl/gitlab-merge-request-resource Customized with support for gitlab ssh on di… 0 [OK]
아쉽게도 docker cli 로는 tag 는 검색이 불가능합니다. 그래서 docker hub 웹 페이지를 봐야하는 불편함이 조금 있습니다.
gitlab 을 설치하기 위해서 아래의 사이트에 들어가보았습니다.
https://hub.docker.com/r/gitlab/gitlab-ce/tags
여기서 latest 를 설치해보겠습니다.
한편, docker 의 경우 기본 베이스 이미지는 공통으로 사용하고 변경분만 추가 다운로드 하기 때문에 차후에 다른 이미지를 받을 때, 용량이 절감되는 부분이 있습니다.
root@debian-4350:~# docker pull gitlab/gitlab-ce:latest
latest: Pulling from gitlab/gitlab-ce
35b42117c431: Pull complete
ad9c569a8d98: Pull complete
293b44f45162: Pull complete
0c175077525d: Pull complete
c00f43f22198: Pull complete
919116aa9eac: Pull complete
c43ba802d09b: Pull complete
b2785e018405: Pull complete
bcae678431d3: Pull complete
5d91b12e0d65: Pull complete
Digest: sha256:2303e18d40be3ebecd5b0e7ed06361942957b746d83f44f6c191a82eb9abc8fd
Status: Downloaded newer image for gitlab/gitlab-ce:latest
3. 컨테이너 실행하기
컨테이너를 실행하기 위해서 필요한 옵션들을 상기 dockerhub 에서 확인합니다.
혹은 dockerfile 을 직접 찾아서 확인할 수 있습니다. 옵션들을 확인한 후 아래의 정보를 파악할 수 있습니다.
- 사용포트
- 디렉터리
- 환경변수
상기 3가지를 체크해야하나, dockerfile 을 볼 수가 없어서 공식문서에서 가이드하는 부분으로 컨테이너를 실행해 보겠습니다.
이 컨테이너는 443포트 80포트 22포트를 사용합니다. 그리고 볼륨으로는 /etc/gitlab, /var/log/gitlab, /var/opt/gitlab 이 있으나 일단 저는 테스트 목적이기 때문에 볼륨은 신경쓰지 않고 진행해 보겠습니다.
root@debian-4350:~# docker run --detach --hostname localhost \
> --publish 8443:443 --publish 8080:80 --publish 2222:22 \
> --name gitlab --restart always \
> gitlab/gitlab-ce:latest
ac4a5bb354af02cad1b0dde971c3cbac79e999d5df3513dbf6adbbe1bd23592b
--detach 는 백그라운드 옵션, --publish [호스트]:[컨테이너] 포트 매핑, 그리고 --name 은 이름 --restart 옵션은 재시작 옵션입니다.
특정 컨테이너 사용시, restart 옵션을 주면 계속 재시작 되는 부분이 있습니다. 특히 ubuntu 컨테이너같은 것들이 그렇습니다.
4. 컨테이너 쉘에 연결하기 및 동작 확인
아래의 명령으로 컨테이너 쉘에 연결이 가능합니다.
root@debian-4350:~# docker exec -it gitlab /bin/bash
root@localhost:/# htop
bash: htop: command not found
root@localhost:/# apt update
Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]
Get:2 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]
Get:3 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]
Get:4 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB]
Get:5 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages [896 kB]
Get:6 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages [1558 kB]
Get:7 http://security.ubuntu.com/ubuntu xenial-security/restricted amd64 Packages [12.7 kB]
Get:8 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 Packages [571 kB]
Get:9 http://security.ubuntu.com/ubuntu xenial-security/multiverse amd64 Packages [6117 B]
Get:10 http://archive.ubuntu.com/ubuntu xenial/restricted amd64 Packages [14.1 kB]
Get:11 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages [9827 kB]
Get:12 http://archive.ubuntu.com/ubuntu xenial/multiverse amd64 Packages [176 kB]
Get:13 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [1279 kB]
Get:14 http://archive.ubuntu.com/ubuntu xenial-updates/restricted amd64 Packages [13.1 kB]
Get:15 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages [977 kB]
Get:16 http://archive.ubuntu.com/ubuntu xenial-updates/multiverse amd64 Packages [19.1 kB]
Get:17 http://archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages [7942 B]
Get:18 http://archive.ubuntu.com/ubuntu xenial-backports/universe amd64 Packages [8532 B]
Fetched 15.9 MB in 11s (1369 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
7 packages can be upgraded. Run 'apt list --upgradable' to see them.
root@localhost:/#
실행 확인은 아래와 같이 가능합니다.
root@debian-4350:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ac4a5bb354af gitlab/gitlab-ce:latest "/assets/wrapper" 3 minutes ago Up 3 minutes (health: starting) 0.0.0.0:2222->22/tcp, 0.0.0.0:8080->80/tcp, 0.0.0.0:8443->443/tcp gitlab
실제 gitlab 이 되는지 확인해보겠습니다. 실행이 잘 됩니다.
5. 컨테이너 삭제 및 이미지 관리
컨테이너를 삭제한다고 해서 이미지가 삭제되는 것도 아닙니다.
한 이미지로 여러개 컨테이너도 운영 가능합니다.
# 이미지 목록 보기
root@debian-4350:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab/gitlab-ce latest 15563c211d40 2 weeks ago 1.8GB
# gitlab 컨테이너 중단, 이름을 지정하지 않았으면 컨테이너 이름으로 삭제
root@debian-4350:~# docker stop gitlab
gitlab
# gitlab 컨테이너 삭제
root@debian-4350:~# docker rm gitlab
gitlab
# gitlab 이미지 삭제
root@debian-4350:~# docker rmi gitlab/gitlab-ce:latest
Untagged: gitlab/gitlab-ce:latest
Untagged: gitlab/gitlab-ce@sha256:2303e18d40be3ebecd5b0e7ed06361942957b746d83f44f6c191a82eb9abc8fd
Deleted: sha256:15563c211d4020fdb3245d2fd5b316852635d48ad6b8727fee682e49e8f8c225
Deleted: sha256:64ff10a12cefbd1cdae06283fdb80f79b5c2317a7e0d63ce67188076dbfe9c06
Deleted: sha256:40b53d7d0b235543496912583f2f95c8aed124d9d8d30bbf5f072136e6d3e154
Deleted: sha256:5cead1b1559cffdc2afd8bb7d43a3e9aee09992c4c34f86e60a2f162809a064e
Deleted: sha256:510020eeb55084f02dc4a45e9b39f94b6556d3879999bcc344a7e9bdee05a53b
Deleted: sha256:6c4b80a5448ff501dfd54dfc4474103b616abddeda14f66d48dc99f52def6548
Deleted: sha256:2054683814766412635748b2bf2cc9e3b6655f852a3b280aa9261f122d6034a2
Deleted: sha256:03952d61b1fc131f23629c02f7ffb93708ae77108a32e4eedd83d4ec987ba51c
Deleted: sha256:a48e1b8909b41276ed1666d5262d981258163c6f0998b58e61efa4188944652e
Deleted: sha256:872ef8aee8632246e43a346a70274030c3613fe81af162a2fb6d14e1fcba980d
Deleted: sha256:1ea5a27b0484f2a227275fbb913d281461d9f356134a56002574904c3cfdea04
root@debian-4350:~#
6. 마치며..
일단 간단하게 여기까지만 알아보겠습니다.
이후에 하드웨어 바인딩 및 상세 옵션에 대해서 알아볼 예정입니다.
감사합니다.
'서버 > 리눅스 서버' 카테고리의 다른 글
AndroidOverLinux on Beelink GTmini-A (알파) (0) | 2019.08.03 |
---|---|
mpd 0.22 sacd iso meson / ninja 빌드 하기 (armhf) (0) | 2019.07.21 |
Showdown 자동 리셋 스크립트 (0) | 2019.06.24 |
TVHeadend 빌드하기 (Debian Base) (0) | 2019.05.30 |
라즈베리파이 RTL8811CU 2.4/5G AC 와이파이 드라이버 설치하기 (0) | 2019.05.08 |
댓글