Docker

컨테이너로 이미지 생성

기억보다는 기록을... 2024. 2. 5. 15:36

Docker Hub에서 내려 받은 ubuntu 이미지에 nginx 설치 후 신규 이미지 생성 

 

 

도커 허브에서 내려 받은 이미지 확인

$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       22.04     fd1d8f58e8ae   10 days ago   77.9MB

 

 

해당 이미지로 컨테이너 생성

$ docker run -d --name ubuntu -it --privileged ubuntu:22.04
ba436e745dee1c5fe18317fdb046630c4119d3eb228d988a96ae6a80e0bc1cb6

 

 

생성 된 컨테이너 확인

$ docker ps
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES
ba436e745dee   ubuntu:22.04   "/bin/bash"   8 seconds ago   Up 5 seconds             ubuntu

 

 

컨테이너 접속 후 nginx 설치

$ docker attach ubuntu
root@ba436e745dee:/# apt update
root@ba436e745dee:/# apt -y install vim nginx
root@ba436e745dee:/# service nginx start; service nginx status
 * Starting nginx nginx     [ OK ]
 * nginx is running

 

 

컨테이너로 신규 이미지 생성

Ctrl + P,Q 로 빠져 나온 후 도커 서버에서 진행

$ docker commit -m "nginx install" ubuntu ubuntu_web:22.04
sha256:752aa8517ebdb352cec8c0ff58cfaf2b380538c9a899b2ffaf2a29a116a8efc6

 

[docker commit 명령어]

  • 형식: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    • OPTIONS: 커밋 옵션을 지정(--author, --message 등)
    • CONTAINER: 커밋할 컨테이너의 이름
    • REPOSITORY: 새로 생성될 이미지의 레포지토리 이름
    • TAG: 새로 생성될 이미지의 태그를 지정. 태그를 지정하지 않으면, latest 태그가 사용.

 

커밋 되면서 신규 컨테이너가 생성 됨 (ubuntu_web)

$ docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS     NAMES
9cc5fdc7e5c2   ubuntu:22.04   "/bin/bash"   14 seconds ago   Created                   ubuntu_web
ba436e745dee   ubuntu:22.04   "/bin/bash"   12 minutes ago   Up 12 minutes             ubuntu

 

 

생성 된 신규 이미지 확인 (ubuntu_web)

vim과 nginx 만 설치 했는데.. 용량이 3배 증가 됨.;;

$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
ubuntu_web   22.04     752aa8517ebd   51 seconds ago   239MB
ubuntu       22.04     fd1d8f58e8ae   10 days ago      77.9MB

 

 

신규 이미지로 컨테이너 생성 및 확인

  • ubuntu_web - 도커 허브 이미지로 생성한 컨테이너
  • ubuntu_web1 - 신규(ubuntu_web) 이미지로 생성한 컨테이너 (nginx 설치되어 있음)
$ docker run -d --name ubuntu_web1 -it --privileged ubuntu_web:22.04
77c64adec197ba696d814b9770e084afa5e2bf285a4b8ba9fabede16a151aa23

$ docker ps
CONTAINER ID   IMAGE              COMMAND       CREATED          STATUS              PORTS     NAMES
77c64adec197   ubuntu_web:22.04   "/bin/bash"   16 seconds ago   Up 14 seconds                 ubuntu_web1
9cc5fdc7e5c2   ubuntu:22.04       "/bin/bash"   2 minutes ago    Up About a minute             ubuntu_web
ba436e745dee   ubuntu:22.04       "/bin/bash"   14 minutes ago   Up 14 minutes                 ubuntu

$ docker attach ubuntu_web1
root@77c64adec197:/# service nginx start; service nginx status
 * Starting nginx nginx     [ OK ]
 * nginx is running

 

 

신규 생성한 이미지를 push 명령을 사용하여 도커 허브로 업로드도 가능 (도커 허브 로그인 필요)