도커 관리 · 5 min read · Feb 05, 2026

우분투에서 도커로 리눅스 컨테이너 관리하기

우분투에서 도커로 리눅스 컨테이너 관리하기

버전: 1.0
저자: Srijan Kishore
마지막 수정: 2014년 7월 2일

이 가이드는 도커를 설치하고 가상 머신을 효과적으로 관리하는 방법을 설명합니다. 도커는 개발자와 시스템 관리자가 분산 애플리케이션을 쉽게 구축, 배포 및 실행할 수 있도록 하는 오픈 소스 리눅스 가상화 플랫폼입니다. 도커는 도커 엔진, 경량 런타임 및 가상화 계층, 소스 코드 저장소와 유사한 가상 머신을 패키징하고 버전 관리하는 도구, 애플리케이션을 공유하고 워크플로를 자동화하는 클라우드 서비스인 도커 허브로 구성됩니다. 도커는 구성 요소에서 신속하게 조립된 애플리케이션을 허용하고 개발 환경, 품질 관리 및 생산 간의 마찰을 제거합니다.

1. 사전 참고 사항

제 경우에는 도커를 설치할 우분투 14.04가 있습니다. 가상화 소프트웨어 시장에는 KVM, Xen 또는 Hyper-V와 같은 여러 완전 하드웨어 가상화 기술이 있습니다. 그러나 완전 가상화는 리눅스에서 단일 애플리케이션을 가상화하기에는 너무 무겁습니다. 우리는 리눅스 컨테이너를 사용하여 이 상황을 극복할 수 있으며, 이는 운영 체제 수준의 가상화에 대한 좋은 대안입니다. 리눅스 컨테이너는 안전한 컨테이너 집합에서 개발/테스트 환경을 갖는 데 매우 유용합니다. 도커는 이 목적을 위해 리눅스 컨테이너 환경을 제공합니다.

2. 설치

위에서 언급한 바와 같이, 저는 도커를 설치할 우분투를 가지고 있습니다. 이 장에서는 도커를 설치하는 두 가지 옵션을 보여드리겠습니다. 2a에서는 우분투 저장소의 도커 버전을 사용하며, 이 버전은 LTS 지원의 전체 5년 동안 우분투에서 유지 관리하지만 최신 버전은 아닙니다. 2b에서는 우분투 PPA 저장소의 최신 버전을 사용합니다. 도커는 활발히 개발 중이므로 2b의 최신 도커 버전이 대부분의 사용자에게 적합할 것입니다. 방법 2a 또는 2b 중 하나를 사용하시되 동시에 두 가지 방법을 사용하지 마십시오!

2a 공식 우분투 저장소에서 설치

설치하려면 다음을 사용하십시오:

sudo apt-get update  
sudo apt-get install docker.io

그리고 사용을 쉽게 하기 위해 심볼릭 링크를 만듭니다.

sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker  
sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io

2b 최신 도커 버전 설치

docker.io 저장소에서 최신 도커 버전을 설치하려면 다음 명령을 실행하십시오.

curl -s https://get.docker.io/ubuntu/ | sudo sh

3. 셸 환경 준비

이제 제 사용자 srijan을 도커 그룹에 추가하겠습니다.

sudo usermod -a -G docker srijan

또는 다음을 사용하십시오:

sudo usermod -a -G docker $USER

여기서 현재 세션에서 로그아웃하고 다시 로그인하겠습니다. 이제 도커 구성 파일을 추가하여 시스템이 그 위치를 알 수 있도록 하겠습니다.

sudo vi /etc/default/docker.io

| DOCKER="/usr/bin/docker.io" |

이제 다음과 같이 서비스를 재시작합니다:

sudo service docker.io restart

4. 컨테이너 관리

우분투 운영 체제로 컨테이너를 시작하겠습니다. 다음과 같이 도커 이미지를 다운로드하겠습니다:

docker pull ubuntu
 주의: pull은 레지스트리에서 이미지나 리포지토리를 가져오는 데 사용됩니다.

이제 다음을 사용하여 우분투 컨테이너의 bash 셸에 로그인하겠습니다:

docker run -i -t ubuntu /bin/bash

확인을 위해 다음과 같이 컨테이너 IP를 확인하겠습니다:

root@fd98ee950252:/# ifconfig 
eth0      Link encap:Ethernet  HWaddr 5a:a6:c6:88:f2:48  
          inet addr:172.17.0.3  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::58a6:c6ff:fe88:f248/64 Scope:Link
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:7 errors:0 dropped:2 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:558 (558.0 B)  TX bytes:648 (648.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@fd98ee950252:/#

컨테이너의 IP는 172.17.0.3입니다. 마찬가지로 다른 컨테이너도 사용할 수 있습니다. 컨테이너에서 나가려면 다음을 입력하십시오:

exit

마찬가지로 다른 운영 체제의 컨테이너를 사용할 수 있습니다. 예를 들어,

Debian 컨테이너를 사용하려면 다음 코드를 사용하겠습니다:

docker run -i -t debian /bin/bash

특정 배포판을 원하시면 다음을 사용하십시오:

docker run -i -t ubuntu:12.04 /bin/bash

이렇게 하면 ubuntu12.04 컨테이너가 생성됩니다. 다음과 같이 확인하겠습니다:

root@44b56100fd1f:/# cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.4 LTS"
root@44b56100fd1f:/#

4. 나만의 이미지 만들기

도커 이미지를 만드는 방법은 두 가지가 있습니다:

  • 도커 커밋 명령을 통한 방법
  • 도커파일을 사용한 도커 빌드 명령을 통한 방법

도커 커밋 방법은 현재 추천되지 않으며, 도커파일로 빌드하는 것이 훨씬 더 유연하고 강력하지만, 완전성을 위해 이를 시연하겠습니다. 그 후, 도커 이미지를 빌드하는 추천 방법인 도커파일 작성 및 도커 빌드 명령 사용에 집중하겠습니다.

4.1 도커 커밋을 사용하여 이미지 생성

컨테이너를 생성하고, 해당 컨테이너에서 코드를 변경하듯이 변경한 후, 이러한 변경 사항을 새 이미지로 커밋하겠습니다.

먼저 이전에 사용한 우분투 이미지에서 컨테이너를 생성하겠습니다.

docker run -i -t ubuntu /bin/bash  
root@73527b8b4261:/#
주의: 위의 root는 호스트 이름 73527b8b4261을 표시하고 있으며, 이는 생성된 컨테이너 이름이며, 귀하의 경우 다를 수 있습니다.

그 후, 아파치를 설치하겠습니다:

apt-get install apache2

컨테이너를 실행하고 그 안에 아파치를 설치했습니다. 이제 이 컨테이너를 웹 서버로 사용하려고 하므로 현재 상태로 저장하겠습니다. 이렇게 하면 새 컨테이너를 만들 때마다 아파치를 다시 빌드할 필요가 없습니다. 이를 위해 컨테이너에서 나가고 exit 명령을 사용하겠습니다.

exit
docker commit 73527b8b4261 srijan/apache2 8ce0ea7a1528

주의: 여기서 73527b8b4261은 제 컨테이너 이름이며, 8ce0ea7a1528 태그를 사용하고 있습니다. 태그 이름은 아무 것이나 지정하거나 동일한 것을 사용할 수 있습니다.

마지막으로 생성된 컨테이너의 ID를 잊어버린 경우 다음을 사용할 수 있습니다:

docker ps -l -q

이 명령은 73527b8b4261을 반환합니다.

주의: 73527b8b4261은 마지막으로 생성된 컨테이너 이름이며, 귀하의 경우 다를 수 있습니다.*

이제 새 이미지를 확인해 보겠습니다. 다음과 같이 할 수 있습니다:

docker images srijan/apache2
srijan@vboxtest:~$ docker images srijan/apache2
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
srijan/apache2      8ce0ea7a1528        741155868ac8        6 minutes ago       207.2 MB
srijan@vboxtest:~$
주의: 여기서 8ce0ea7a1528은 컨테이너를 저장할 때 사용한 태그 이름이며, 741155868ac8은 해당 컨테이너의 이미지 ID입니다.  
주의: 이 값들은 컨테이너를 저장할 때 도커가 무작위로 생성하므로 귀하의 경우 다를 수 있습니다.

이제 사용자 정의 이미지를 다음과 같이 저장하겠습니다:

docker commit -m="새로운 사용자 정의 이미지" --author="Srijan Kishore" 73527b8b4261 srijan/apache2:webserver 

결과는 다음과 같습니다:

srijan@vboxtest:~$ docker commit -m="새로운 사용자 정의 이미지" --author="Srijan Kishore" 73527b8b4261 srijan/apache2:webserver
f0367362eb405c513ac002b5cf172a2c0bc6c8212eab91c613f9ee611cf92fec

새 이미지에서 컨테이너를 실행하려면 도커 run 명령을 사용하면 됩니다.

docker run -t -i srijan/apache2:webserver /bin/bash

커밋한 이미지를 다음과 같이 확인할 수 있습니다:

docker inspect srijan/apache2:webserver
srijan@vboxtest:~$ docker inspect srijan/apache2:webserver
[{
    "Architecture": "amd64",
    "Author": "Srijan Kishore",
    "Comment": "새로운 사용자 정의 이미지",
    "Config": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "Cmd": [
            "/bin/bash"
        ],
        "CpuShares": 0,
        "Cpuset": "",
        "Domainname": "",
        "Entrypoint": null,
        "Env": [
            "HOME=/",
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
        ],
        "ExposedPorts": null,
        "Hostname": "",
        "Image": "",
        "Memory": 0,
        "MemorySwap": 0,
        "NetworkDisabled": false,
        "OnBuild": null,
        "OpenStdin": false,
        "PortSpecs": null,
        "StdinOnce": false,
        "Tty": false,
        "User": "",
        "Volumes": null,
        "WorkingDir": ""
    },
    "Container": "73527b8b42614f6ecd83fb5f9822d6086988d3b68fd5e32b4afbc7cd415402fd",
    "ContainerConfig": {
        "AttachStderr": true,
        "AttachStdin": true,
        "AttachStdout": true,
        "Cmd": [
            "/bin/bash"
        ],
        "CpuShares": 0,
        "Cpuset": "",
        "Domainname": "",
        "Entrypoint": null,
        "Env": [
            "HOME=/",
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
        ],
        "ExposedPorts": null,
        "Hostname": "73527b8b4261",
        "Image": "ubuntu",
        "Memory": 0,
        "MemorySwap": 0,
        "NetworkDisabled": false,
        "OnBuild": null,
        "OpenStdin": true,
        "PortSpecs": null,
        "StdinOnce": true,
        "Tty": true,
        "User": "",
        "Volumes": null,
        "WorkingDir": ""
    },
    "Created": "2014-06-30T12:58:04.973349049Z",
    "DockerVersion": "1.0.1",
    "Id": "f0367362eb405c513ac002b5cf172a2c0bc6c8212eab91c613f9ee611cf92fec",
    "Os": "linux",
    "Parent": "ef83896b7fb99b00b9e0e6ac943826386e7edcef11a3a2f58b42011ab4a4e683",
    "Size": 14463026
}
]srijan@vboxtest:~$

새 이미지에서 컨테이너를 실행하려면 도커 run 명령을 사용하면 됩니다.

docker run -t -i srijan/apache2:webserver /bin/bash
Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.