1. commit ๋ช ๋ น์ด๋ก ์ปจํ ์ด๋๋ก ์ด๋ฏธ์ง ์์ฑ
$ docker container commit [OPTION] CONTAINER NEW_IMAGE_REPO:TAG
$ docker commit [OPTION] CONTAINER NEW_IMAGE_REPO:TAG
[์์]
centos-test1์ด๋ผ๋ ์ปจํ ์ด๋๋ฅผ mycentos:first ์ด๋ฏธ์ง๋ก ์์ฑํ๋ค.
[user@localhost ~]$ docker container commit centos-test1 mycentos:first
sha256:d10bbb77df85ae628a43a2e83135de2c2501dc81f9799fdd4c368e9971c776bc
mycentos:first ์ด๋ฏธ์ง๊ฐ ์์ฑ๋์์์ ํ์ธํ ์ ์๋ค.
[user@localhost ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos first d10bbb77df85 20 seconds ago 403MB
commit ๋ช ๋ น์ด๋ก ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ฉด ์ด๋ฏธ์ง์ ๋ ์ด์ด๊ฐ ํ๋ ๋ ์ถ๊ฐ๋๋ค.
$ docker image inspect mycentos
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:174f5685490326fc0a1c0f5570b8663732189b327007e47ff13d2ca59673db02",
"sha256:b5a26371ec7bbf3a61dd83ef53c914d85da5631853f1fa3a9012ec6d4763be06"
]
}
2. Export / Import
Docker Container ์ ํ์ผ์์คํ ์ tar ์์นด์ด๋ธ๋ก ์ ์ฅ
export ๋ช ๋ น์ด๋ -o ์ต์ ์ ๊ฐ์ด ๋ถ์ฌ์ ์ฌ์ฉํด์ผ ํ๋ค !
$ docker container export -o TAR_FILE CONTAINER
$ docker export -o TAR_FILE CONTAINER
docker image save -o TAR_FILE IMAGE_REPO:TAG ์ ๋ค๋ฅธ ์ ์
export -o ๋ช ๋ น์ด๋ ์ปจํ ์ด๋์ ํ์ผ์์คํ ์ ์์นด์ด๋ธํ๋ ๋ฐ๋ฉด save -o ๋ ์ด๋ฏธ์ง๋ฅผ tar ํ์ผ๋ก ์์นด์ด๋ธ ํ๋ค. ๋ํ save -o ๋ช ๋ น์ด์ ๊ฒฝ์ฐ ์ด๋ฏธ์ง ํ์ผ์ ๋ ์ด์ด๊ฐ ๋ชจ๋ ์ ์ง๊ฐ ๋๋ค.
export๋ก ์ถ์ถ๋ ์์นด์ด๋ธ ํ์ผ์ ์ด๋ฏธ์งํํ๊ธฐ
$ docker image import TAR_FILE [IMAGE_REPO:TAG]
$ docker import TAR_FILE [IMAGE_REPO:TAG]
์์
my_newcentos ์ปจํ ์ด๋๋ฅผ my.tar ํ์ผ๋ก exportํ๋ค.
[root@localhost ~]# docker export -o my.tar new_mycentos
[root@localhost ~]# ls
anaconda-ks.cfg Documents file1 httpd_latest.tar Music Pictures Templates
Desktop Downloads file2 initial-setup-ks.cfg my.tar Public Videos
my.tar ํ์ผ์ my:0.1 ๋ผ๋ ์ด๋ฏธ์ง ํ์ผ๋ก import ํ๋ค.
[root@localhost ~]# docker import my.tar my:0.1
sha256:0b40cc8dbe6b20dc2cc8b4b1efa436e68bdf7f61f40e9c7bdd3ae055079f5ec6
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my 0.1 0b40cc8dbe6b 26 seconds ago 378MB
3. Dockerfile ์ ์ด์ฉํ ๋น๋
$ docker image build -t IMAGE_REPO:TAG BUILD_PATH
$ docker build -t IMAGE_REPO:TAG BUILD_PATH
๋์ปค๋ Dockerfile์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์ ์ํ ์ ์๋ค. Dockerfile์ ์ฝ๋๋ก ์์ฑ๋์ด ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ ํธํ๊ณ ์ด๋ฏธ์ง์ ๊ธฐ๋ฅ์ ๋ฐ๋ก ํ์ ํ ์ ์๋ค. ๋ฐ๋ผ์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ด๋ค.
Dockerfile ์ง์์ด
์ง์์ด | ์ค๋ช |
FROM ์ด๋ฏธ์ง[:ํ๊ทธ] | Base Image ์ง์ |
RUN ๋ช ๋ น์ด | Image๋ฅผ ๋น๋ํ๋ฉด์ ์คํํ ๋ช ๋ น ์ง์ ex) ํจํค์ง, ์๋น์ค ์ค์น |
CMD ๋ช ๋ น์ด | Container ์คํ์ ์คํํ ๋ช ๋ น์ด / ์ดํ๋ฆฌ์ผ์ด์ ์ง์ |
LABEL key=value | ๋ ์ด๋ธ ์ง์ |
EXPOSE ํฌํธ๋ฒํธ | ์ปจํ ์ด๋์ ์ด๋ค ํฌํธ๋ฅผ ํธ์คํธ์๊ฒ ๊ณต๊ฐํ ์ง ์ ์ํ์ฌ Docker Daemon์๊ฒ ํต์งํ๋ ๋ช ๋ น์ด |
ENV key=value | Container์ ํ๊ฒฝ๋ณ์ ์ง์ |
ADD ๋์ปคํธ์คํธ_๊ฒฝ๋ก ์ด๋ฏธ์ง_๊ฒฝ๋ก | ์ด๋ฏธ์ง ์์ฑ ์ ํ์ผ/๋๋ ํ ๋ฆฌ ์ถ๊ฐ |
COPY ๋์ปคํธ์คํธ_๊ฒฝ๋ก ์ด๋ฏธ์ง_๊ฒฝ๋ก | ์ด๋ฏธ์ง ์์ฑ ์ ๋์ปคํธ์คํธ์ ์๋ ํ์ผ ๋ณต์ฌ |
ENTRYPOINT ๋ช ๋ น์ด | ์ปจํ ์ด๋ ์์ ์ ๊ธฐ๋ณธ ์คํ ๋ช ๋ น์ด |
VOLUME ์ปจํ ์ด๋_๋ด๋ถ๊ฒฝ๋ก | ๋ณผ๋ฅจ ์ฐ๊ฒฐ |
USER ์ฌ์ฉ์ | ์ฌ์ฉ์ ์ง์ (์ปจํ ์ด๋์์ ํน์ ์ฌ์ฉ์ ๊ถํ์ผ๋ก ์คํ ํ์ํ ๊ฒฝ์ฐ ์ง์ ) |
STOPSIGNAL ์๊ทธ๋ | ์ข ๋ฃ ์๊ทธ๋ ์ง์ (์๊ทธ๋ ๋ฒํธ/์ด๋ฆ) |
WORKDIR ๋๋ ํ ๋ฆฌ | ์์ ๋๋ ํ ๋ฆฌ |
ONBUILD ๋ช ๋ น์ด | ๋น๋ ์๋ฃ์ ์คํํ ์์ |
HEALTHCHECK [์ต์ ] CMD ๋ช ๋ น์ด | ์ปจํ ์ด๋ ํฌ์ค ์ฒดํฌ |
SHELL ["์_๊ฒฝ๋ก", "ํ๋ผ๋ฏธํฐ"] | ๊ธฐ๋ณธ ์ ์ง์ |
Dockerfile RUN, CMD, ENTRYPOINT ์ง์์ด ๋ช ๋ น์ด ๋ถ๋ถ ์์ฑ ๋ฐฉ์
exec ํ์๊ณผ shellํ์ ๋๊ฐ์ง๊ฐ ์๋ค. exec ๋ฐฉ์์ ๋ช ๋ น์ ์์ ํตํด ์คํํ์ง ์๋๋ค. ์ฆ ํ๋ก์ธ์ค ํ๊ฐ๋ง ํ์ํ๊ธฐ ๋๋ฌธ์ ๋น๊ต์ ์คํ ์๋๊ฐ ๋นจ๋ผ์ docker์์ ๊ถ์ฅ๋๋ค. shell ๋ฐฉ์์ /bin/sh์ ๊ฐ์ ์์ ํตํด ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฏ๋ก, ํ๋ก์ธ์ค๊ฐ ๋ ๊ฐ ํ์ํ๋ค. exec ํ์๊ณผ shellํ์ ๋๋ค ํ์๋ง ๋ค๋ฅผ ๋ฟ ์คํํ๋ ๊ฒ์ ๋์ผํ๋ค.
exec ํ์ | ["yum" ,"-y","install","httpd"] |
shell ํ์ | yum -y install httpd |
exec ํ์์์๋ ๋ฐฐ์ด๋ก ์์ฑํด์ฃผ์ด์ผ ํ๋ค.
Dockerfile ์์ฑ ๋ฐ ๋น๋ ์์
Dockerfile์ ๋ง๋ค ๊ฒฝ๋ก๋ฅผ ์์ฑํ๋ค. /work/test1 ๋ผ๋ ๋๋ ํ ๋ฆฌ์ Dockerfile ์ ์์ฑํ๋ค.
[user@localhost ~]$ mkdir work
[user@localhost ~]$ mkdir work/test1
[user@localhost ~]$ cd work/test1
[user@localhost test1]$ vim Dockerfile
Dockerfile์ vi ํธ์ง๊ธฐ๋ก ์์ฑํ๋ค.
FROM centos:7
MAINTAINER Minjee Woo
RUN yum -y install httpd
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
ENV WEBPORT 80
EXPOSE ${WEBPORT}
EXPOSE 443
VOLUME /var/www/html
COPY index.html /var/www/html/index.html
๋น๋ํ๊ธฐ ์ด์ ์ Dockerfile์ด ํ์๋ก ํ๋ index.html ํ์ผ์ ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์์ฑํด์ค๋ค.
[user@localhost test1]$ echo "web index page" > index.html
[user@localhost test1]$ ls
Dockerfile index.html
$ docker image build -t IMAGE_REPO:TAG ๋์ปคํ์ผ์ด ์๋ ๊ฒฝ๋ก(=๋น๋๊ฒฝ๋ก) ๋ช ๋ น์ด๋ก Dockerfile์ ๋ํด ๋น๋๋ฅผ ์คํํ๋ค. Dockerfile์ ๋น๋ํ ๊ฒฝ๋ก๋ฅผ ํ์ฌ ๋๋ ํ ๋ฆฌ (.)๋ก ์ง์ ํด์ฃผ์๋ค.
$ docker build -t mjwoo0/docker:centosweb .
๋น๋๋ ์ด๋ฏธ์ง๋ก ์ปจํ ์ด๋๋ฅผ ๋์๋ณธ๋ค. ํฌํธํฌ์๋ฉ์ -p ์ต์ ์ ํตํด ํธ์คํธ์ ํฌํธ 8000๋ฒ -> ์ปจํ ์ด๋์ 80๋ฒ ํฌํธ๋ก ์ง์ ํด์ฃผ์๋ค.
[user@localhost test1]$ docker run -d -p 8000:80 -v testweb:/var/www/html --name myweb mjwoo0/docker:centosweb
docker host์์ ์ ์ํด๋ณธ๋ค.
[user@localhost test1]$ curl http://172.17.0.5
web index page
docker host ์ธ๋ถ์์ 8000๋ฒ ํฌํธ๋ก ์ ์ํด๋ณธ๋ค. ํฌํธํฌ์๋ฉ์ด ๋์ด ๋์ผํ index.html ํ์ด์ง๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
user@user-Aspire-E5-576:~$ curl http://192.168.56.110:8000
web index page
4. Docker Image tag
๋์ปค์๋ ์ด๋ฏธ์ง์ ์ด๋ฆ์ ๋ค์ ๋ณ๊ฒฝํ๋ ๊ธฐ๋ฅ์ ๋ฐ๋ก ์์ผ๋ฉฐ, ํ๊ทธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์๋ก์ด ์ด๋ฆ์ผ๋ก ์๋ก์ด Image๋ฅผ ์์ฑํ ์ ์๋ค.
$ docker image tag IMAGE_REPO:TAG_NEW_REPO:TAG
$ docker tag IMAGE_REPO:TAG NEW_IMAGE_REPO:TAG
[์์]
tag ๋ช ๋ น์ด๋ก busybox:latest ์ด๋ฏธ์ง๋ฅผ ์ด์ฉํ์ฌ mytoolbox:0.1 ๋ผ๋ ์๋ก์ด ์ด๋ฆ๊ณผ ํ๊ทธ๋ฅผ ๊ฐ์ง ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ค.
$ docker tag busybox:latest mytoolbox:0.1
mytoolbox:0.1 ์ด๋ฏธ์ง๋ฅผ ํ์ธํ ์ ์๋ค. ๊ธฐ์กด์ ์ด๋ฏธ์ง์ ์๋ก ์์ฑํ ์ด๋ฏธ์ง๊ฐ IMAGE_ID๊ฐ ๋์ผํ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ฆ, tag๋ ๋ฆฌ๋ ์ค์ ํ๋๋งํฌ๋ฅผ ์์ฑํ๋ ๊ฒ๊ณผ ๋น์ทํ๋ค๊ณ ์ดํดํ ์ ์๋ค. ํ๋๋งํฌ๋ ๋์คํฌ์ ์ค์ ๋ก ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ inode๋ฅผ ๋งํ๋ฉฐ, ์๋ก์ด ํ๋๋งํฌ๋ฅผ ์์ฑํ๋ฉด ์ด ๋ฌผ๋ฆฌ์ ์ธ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ํ๋๋งํฌ๊ฐ ํ๋ ๋ ๋์ด๋๋ค๋ ์๋ฏธ์ด๋ค.
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 66ba00ad3de8 4 weeks ago 4.87MB
mytoolbox 0.1 66ba00ad3de8 4 weeks ago 4.87MB
'Cloud Engineering > Docker ๐ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Docker] Harbor HTTPS ๊ตฌ์ฑ์ผ๋ก ๊ตฌ์ถํ๊ธฐ (0) | 2023.02.06 |
---|---|
[Docker] Docker ์ ์ฅ์์ ์ด๋ฏธ์ง ์ ๋ก๋ํ๊ธฐ (0) | 2023.02.03 |
[Docker] ์ปจํ ์ด๋ ํฌํธํฌ์๋ฉ (docker run -p) ์ค์ (0) | 2023.02.03 |
[Docker] ์ปจํ ์ด๋ link ์ค์ (0) | 2023.02.03 |
[Docker] ๋์ปค ๋คํธ์ํฌ ์ข ๋ฅ์ ๋ช ๋ น์ด (1) | 2023.02.02 |