Docker은 오픈 소스로 인기 있는 운영 시스템 レベル의 仮想化技術であり、主に Linux과 Windows에서 실행되는 Containerization(一般的하게 통称하는) 기술입니다. Docker는 컨테이너를 사용하여 어려uno하게 create, deploy, 그리고 어플리케이션을 실행할 수 있도록 도와줍니다.
컨테이너를 사용하면 개발자(또는 시스템 관리자)는 어플리케이션과 어플리케이션을 실행하기 위해 필요한 모든 것을 Pakage up 할 수 있습니다.- 코드, 실행 시간, 라이브러리, 환경 변수, 구성 파일, 그리고 모두를 하나의 パッケ지로 배송할 수 있습니다. 네, 그렇게 좋습니다!
이 記事で는 Docker CE (Community Edition)를 설치하고 Ubuntu 분 distriution 上에서 생성하고 컨테이너를 실행하는 方法을 보여드릴 것입니다.
Ubuntu에서 Docker CE (Community Edition) 설치하는 방법
1. Docker CE를 설치하기 전에 ancient 버전의 Docker를 제거하는 것이 필요합니다.- Docker가 docker
, docker.io
, or docker-engine
로 이름이 들었던 것을 시스템에서 다음 명령어를 사용하여 제거합니다.
$ sudo apt-get remove docker docker-engine docker.io containerd runc
2. 다음 명령어를 사용하여 Docker 저장소를 설정하여 Docker를 저장소에서 설치하고 갱신할 수 있습니다.
$ sudo apt-get update $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
3. apt 팩지 인덱스를 갱신하고 다음 명령어를 사용하여 最新 버전의 Docker CE를 설치합니다.
$ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io
Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: aufs-tools cgroupfs-mount pigz The following NEW packages will be installed: aufs-tools cgroupfs-mount containerd.io docker-ce docker-ce-cli pigz 0 upgraded, 6 newly installed, 0 to remove and 167 not upgraded. Need to get 50.7 MB of archives. After this operation, 243 MB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://archive.ubuntu.com/ubuntu bionic/universe amd64 pigz amd64 2.4-1 [57.4 kB] Get:2 https://download.docker.com/linux/ubuntu bionic/stable amd64 containerd.io amd64 1.2.4-1 [19.9 MB] Get:3 http://archive.ubuntu.com/ubuntu bionic/universe amd64 aufs-tools amd64 1:4.9+20170918-1ubuntu1 [104 kB] Get:4 http://archive.ubuntu.com/ubuntu bionic/universe amd64 cgroupfs-mount all 1.4 [6,320 B] Get:5 https://download.docker.com/linux/ubuntu bionic/stable amd64 docker-ce-cli amd64 5:18.09.3~3-0~ubuntu-bionic [13.1 MB] Get:6 https://download.docker.com/linux/ubuntu bionic/stable amd64 docker-ce amd64 5:18.09.3~3-0~ubuntu-bionic [17.4 MB] Fetched 50.7 MB in 7s (7,779 kB/s) ...
4. Docker CE 팩지를 성공적으로 설치한 후에, 서비스가 자동으로 시작되고 시스템 引导시 자동으로 활성화되어야 합니다. 다음 명령어를 사용하여 그 상태를 확인할 수 있습니다.
$ sudo systemctl status docker
● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-03-06 08:06:42 UTC; 2min 18s ago Docs: https://docs.docker.com Main PID: 5274 (dockerd) Tasks: 8 CGroup: /system.slice/docker.service └─5274 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.562587408Z" level=warning msg="Your kernel does not support cgroup rt runtime" Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.562767803Z" level=warning msg="Your kernel does not support cgroup blkio weight" Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.562966844Z" level=warning msg="Your kernel does not support cgroup blkio weight_device" Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.565298457Z" level=info msg="Loading containers: start." Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.950942467Z" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a prefer Mar 06 08:06:42 tecmint dockerd[5274]: time="2019-03-06T08:06:42.036964493Z" level=info msg="Loading containers: done." Mar 06 08:06:42 tecmint dockerd[5274]: time="2019-03-06T08:06:42.156279378Z" level=info msg="Docker daemon" commit=774a1f4 graphdriver(s)=overlay2 version=18.09.3 Mar 06 08:06:42 tecmint dockerd[5274]: time="2019-03-06T08:06:42.157145045Z" level=info msg="Daemon has completed initialization" Mar 06 08:06:42 tecmint systemd[1]: Started Docker Application Container Engine. Mar 06 08:06:42 tecmint dockerd[5274]: time="2019-03-06T08:06:42.224229999Z" level=info msg="API listen on /var/run/docker.sock"
5. 마지막으로 Docker CE가 올바르게 설치되었는지 확인하려면 hello-world
이미지를 실행합니다.
$ sudo docker run hello-world
Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
우분투에서 기본 도커 명령어 배우기
6. Docker에 대한 정보를 얻으려면 다음 명령을 실행합니다.
$ sudo docker info Kernel Version: 5.0.0-050000-generic Operating System: Ubuntu 18.04.1 LTS OSType: linux Architecture: x86_64 CPUs: 1 Total Memory: 1.452GiB Name: tecmint ID: FWSB:IRIF:DYL7:PRB5:Y66E:37MY:ISPO:HZVY:6YJO:2IYL:TO6Y:GNB7 Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false Product License: Community Engine
7. 도커 버전에 대한 정보를 얻으려면 다음 명령을 실행합니다.
$ sudo docker version Client: Version: 18.09.3 API version: 1.39 Go version: go1.10.8 Git commit: 774a1f4 Built: Thu Feb 28 06:53:11 2019 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 18.09.3 API version: 1.39 (minimum version 1.12) Go version: go1.10.8 Git commit: 774a1f4 Built: Thu Feb 28 05:59:55 2019 OS/Arch: linux/amd64 Experimental: false
8. 터미널에서 docker
를 실행하여 사용 가능한 모든 도커 명령의 목록을 가져옵니다.
$ docker Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers Options: --config string Location of client config files (default "/home/tecmint/.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 "/home/tecmint/.docker/ca.pem") --tlscert string Path to TLS certificate file (default "/home/tecmint/.docker/cert.pem") --tlskey string Path to TLS key file (default "/home/tecmint/.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 ....
우분투에서 도커 이미지 다운로드하기
9. 도커 컨테이너를 실행하려면 먼저 Docker Hub에서 이미지를 다운로드해야 합니다 – 해당 저장소에서 무료 이미지를 제공합니다.
예를 들어, CentOS 7
라는 도커 이미지를 다운로드하려면 다음 명령을 사용합니다.
$ sudo docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official build of CentOS. 5227 [OK] ansible/centos7-ansible Ansible on Centos7 120 [OK] jdeathe/centos-ssh CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86… 107 [OK] consol/centos-xfce-vnc Centos container with "headless" VNC session… 81 [OK] imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 50 [OK] centos/mysql-57-centos7 MySQL 5.7 SQL database server 47 tutum/centos Simple CentOS docker image with SSH access 43 gluster/gluster-centos Official GlusterFS Image [ CentOS-7 + Glust… 40 [OK] openshift/base-centos7 A Centos7 derived base image for Source-To-I… 39 centos/postgresql-96-centos7 PostgreSQL is an advanced Object-Relational … 37 centos/python-35-centos7 Platform for building and running Python 3.5… 33 kinogmt/centos-ssh CentOS with SSH 26 [OK] openshift/jenkins-2-centos7 A Centos7 based Jenkins v2.x image for use w… 20 centos/php-56-centos7 Platform for building and running PHP 5.6 ap… 19 pivotaldata/centos-gpdb-dev CentOS image for GPDB development. Tag names… 10 openshift/wildfly-101-centos7 A Centos7 based WildFly v10.1 image for use … 6 openshift/jenkins-1-centos7 DEPRECATED: A Centos7 based Jenkins v1.x ima… 4 darksheer/centos Base Centos Image -- Updated hourly 3 [OK] pivotaldata/centos Base centos, freshened up a little with a Do… 2 pivotaldata/centos-mingw Using the mingw toolchain to cross-compile t… 2 pivotaldata/centos-gcc-toolchain CentOS with a toolchain, but unaffiliated wi… 1 openshift/wildfly-81-centos7 A Centos7 based WildFly v8.1 image for use w… 1 blacklabelops/centos CentOS Base Image! Built and Updates Daily! 1 [OK] smartentry/centos centos with smartentry 0 [OK] jameseckersall/sonarr-centos Sonarr on CentOS 7 0 [OK]
10. 요구 사항에 따라 실행할 이미지를 결정한 후 아래 명령을 실행하여 해당 이미지를 로컬로 다운로드합니다 (이 경우 CentOS 이미지를 다운로드하고 사용합니다).
$ docker pull centos Using default tag: latest latest: Pulling from library/centos a02a4930cb5d: Pull complete Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426 Status: Downloaded newer image for centos:latest
11. 호스트에 있는 모든 사용 가능한 도커 이미지를 나열하려면 다음 명령을 실행합니다.
$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest fce289e99eb9 2 months ago 1.84kB centos latest 1e1148e4cc2c 3 months ago 202MB
12. 더 이상 Docker 이미지를 사용하지 않으려면 다음 명령을 사용하여 해당 이미지를 제거할 수 있습니다.
$ sudo docker rmi centos Untagged: centos:latest Untagged: centos@sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426 Deleted: sha256:1e1148e4cc2c148c6890a18e3b2d2dde41a6745ceb4e5fe94a923d811bf82ddb Deleted: sha256:071d8bd765171080d01682844524be57ac9883e53079b6ac66707e192ea25956
우분투에서 도커 컨테이너 실행하기
13. Docker 컨테이너를 생성하고 실행하기 위해서는 우선 CentOS
이미지를 다운로드 받은 다음 cat 명령어를 사용하여 컨테이너 내에 있는 배포 버전 파일을 확인할 수 있는 기본 명령어를 실행해야 합니다. 下图과 같습니다.
$ docker run centos cat /etc/issue
14. 다시 컨테이너를 실행하기 전에는 다음 명령어를 실행하여 컨테이너 ID 또는 이름를 얻어야 합니다. 이 명령어는 실행중과 중지된 컨테이너의 목록을 보여줍니다.
$ sudo docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0ddfa81c5779 centos "cat /etc/issue" About a minute ago Exited (0) About a minute ago elastic_shirley
15. 컨테이너 ID 또는 이름을 얻었으면 다음 명령어를 사용하여 컨테이너를 시작할 수 있습니다. 이 곳에서 0ddfa81c5779
는 컨테이너 ID로 elastic_shirley
는 컨테이너 이름을 나타냅니다.
$ sudo docker start 0ddfa81c5779 OR $ sudo docker start elastic_shirley
16. 실행 중인 컨테이너를 중지하려면 docker stop
명령어를 컨테이너 ID 또는 이름를 지정하여 실행해야 합니다.
$ sudo docker stop 0ddfa81c5779 OR $ sudo docker stop elastic_shirley
17. 컨테이너 ID를 기억할 필요가 없게 하는 더 나은 방법은 생성할 때 하나의 이름을 각 컨테이너에 지정하는 것입니다. --name
옵션을 사용하여 下图처럼 표시합니다.
$ docker run --name myname centos cat /etc/issue
18. 컨테이너로 연결하여 Linux 명령어를 실행하려면 다음 명령어를 실행합니다.
$ docker run -it centos bash [root@6213ec547863 /]# uname -a Linux 6213ec547863 5.0.0-050000-generic #201903032031 SMP Mon Mar 4 01:33:18 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux [root@6213ec547863 /]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)
19. 실행 중인 컨테이너 세션을 나가고 호스트로 돌아가는 것은 exit
명령어를 下图처럼 입력해야 합니다.
$ exit
그것은 기본적인 컨테이너 조작에 관한 모든 것입니다. 이 문서에 대한 질문이나 의견이 있으시면 아래의 피드백 양식을 사용하여 저희에게 연락하십시오.
Source:
https://www.tecmint.com/install-docker-and-run-docker-containers-in-ubuntu/