Container image


시나리오

container를 만든 뒤 변경사항이 생긴걸 image로 만들어서 저장하고 싶다.

 

변경사항 확인

docker diff apache 명령을 통해 확인 가능

A는 ADD , C는 Change

더보기
[vagrant@dcentos ~]$ docker diff apache
C /etc
C /etc/passwd-
A /etc/vim
A /etc/vim/vimrc
A /etc/gshadow-
C /etc/shadow
A /etc/subgid-
C /etc/group
C /etc/subuid
C /etc/subgid
C /etc/passwd
A /etc/shadow-
C /etc/alternatives
A /etc/alternatives/vi
A /etc/alternatives/rvim
A /etc/alternatives/vim
A /etc/alternatives/vimdiff
A /etc/alternatives/view
A /etc/alternatives/editor
A /etc/alternatives/rview
A /etc/alternatives/ex
C /etc/gshadow
A /etc/subuid-
C /etc/ld.so.cache
C /home
A /home/admin
A /home/admin/.bash_logout
A /home/admin/.bashrc
A /home/admin/.profile
C /root
A /root/.bash_history
A /root/.viminfo
C /usr
C /usr/share
중략

 

1. 컨테이너로부터 이미지 만들기

docker container commit -a 'guam<prac@mail.com' apache

더보기
[vagrant@dcentos ~]$ docker ps
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS          PORTS     NAMES
cddb998a37a2   httpd     "httpd-foreground"   19 minutes ago   Up 19 minutes   80/tcp    apache

[vagrant@dcentos ~]$ docker container commit -a 'guam<prac@mail.com>' apache
sha256:a8ddccb5fc4658265ec9b3a89012dfa617e150e057c3cee679e95e8299da6e16

[vagrant@dcentos ~]$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
<none>        <none>    a8ddccb5fc46   5 seconds ago   229MB !!!!!!!!!!!
mariadb       latest    b8bba28b797b   12 days ago     405MB
nginx         latest    e4720093a3c1   2 weeks ago     187MB
alpine        latest    05455a08881e   5 weeks ago     7.38MB
mysql         latest    a88c3e85e887   6 weeks ago     632MB
httpd         latest    2776f4da9d55   6 weeks ago     167MB
ubuntu        18.04     f9a80a55f492   9 months ago    63.2MB
hello-world   latest    d2c94e258dcb   10 months ago   13.3kB
centos        8         5d0da3dc9764   2 years ago     231MB

# 이름 붙이기

[vagrant@dcentos ~]$ docker container commit -a 'guam<prac@mail.com>' apache apache112
sha256:4ba4201b08f87054288190728a9157085d60bc6dfcf89b9b175a16c8efbfe091

[vagrant@dcentos ~]$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
apache112     latest    4ba4201b08f8   3 seconds ago    229MB !!!!!!!!
myapache      latest    6a2d3e761653   3 minutes ago    226MB
<none>        <none>    a8ddccb5fc46   24 minutes ago   229MB
mariadb       latest    b8bba28b797b   12 days ago      405MB
nginx         latest    e4720093a3c1   2 weeks ago      187MB
alpine        latest    05455a08881e   5 weeks ago      7.38MB
mysql         latest    a88c3e85e887   6 weeks ago      632MB
httpd         latest    2776f4da9d55   6 weeks ago      167MB
ubuntu        18.04     f9a80a55f492   9 months ago     63.2MB
hello-world   latest    d2c94e258dcb   10 months ago    13.3kB
centos        8         5d0da3dc9764   2 years ago      231MB

2. 컨테이너 파일을 tar 로 출력

[vagrant@dcentos ~]$ docker container export apache > httpd.tar
[vagrant@dcentos ~]$ ls
httpd.tar

 

tar 파일로 image 적용

더보기
[vagrant@dcentos ~]$ cat httpd.tar | docker image import - myapache
sha256:6a2d3e7616533e1238a9a31111b2ab581bbe48001d7c472053d43fba1e3b552b
[vagrant@dcentos ~]$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
myapache      latest    6a2d3e761653   5 seconds ago    226MB   !!!!!!!!!!!!!!!!!
<none>        <none>    a8ddccb5fc46   21 minutes ago   229MB
mariadb       latest    b8bba28b797b   12 days ago      405MB
nginx         latest    e4720093a3c1   2 weeks ago      187MB
alpine        latest    05455a08881e   5 weeks ago      7.38MB
mysql         latest    a88c3e85e887   6 weeks ago      632MB
httpd         latest    2776f4da9d55   6 weeks ago      167MB
ubuntu        18.04     f9a80a55f492   9 months ago     63.2MB
hello-world   latest    d2c94e258dcb   10 months ago    13.3kB
centos        8         5d0da3dc9764   2 years ago      231MB

접속

많이 복잡하다.

그래서 이 방식은 보통 사용하지 않는다.

더보기
[vagrant@dcentos ~]$ docker run -d myapache /usr/local/apache2/bin/httpd -DFOREGROUND
e9cf30ff9f2099faed4294dc2e3b95513ec34ae4f14f949b0199fc25ad9effdd

[vagrant@dcentos ~]$ docker ps -a
CONTAINER ID   IMAGE      COMMAND                  CREATED             STATUS                       PORTS     NAMES
e9cf30ff9f20   myapache   "/usr/local/apache2/…"   5 seconds ago       Up 3 seconds                           youthful_euclid
744a2959dcc3   myapache   "httpd-foreground"       3 minutes ago       Exited (127) 3 minutes ago             blissful_proskuriakova
cddb998a37a2   httpd      "httpd-foreground"       About an hour ago   Up About an hour             80/tcp    apache

3. 도커 이미지를 tar로 저장

시나리오

인터넷이 안되는 상황에서 내부 네트워크가 연결된 다른 장비에서 도커 이미지를 받아오기

 

일단 하나의 도커 서버(Centos)에서 인터넷을 끊음

더보기
[vagrant@dcentos ~]$ sudo nmcli d d eth0
Device 'eth0' successfully disconnected.

[vagrant@dcentos ~]$ nmcli d s
DEVICE       TYPE      STATE         CONNECTION
eth1         ethernet  connected     System eth1
eth0         ethernet  disconnected  --
docker0      bridge    unmanaged     --
veth8b917f7  ethernet  unmanaged     --
vethedeb05b  ethernet  unmanaged     --
lo           loopback  unmanaged     --

[vagrant@dcentos ~]$ ping 8.8.8.8
connect: Network is unreachable
[vagrant@dcentos ~]$ ping google.com
ping: google.com: Name or service not known

Centos에는 docker image중 DB관련 이미지를 모두 삭제

더보기
[vagrant@dcentos ~]$ docker rmi mariadb
Untagged: mariadb:latest
Untagged: mariadb@sha256:851f05fe1e4cb290442c1b12b7108436a33fd8f6a733d4989950322d06d45c65
Deleted: sha256:b8bba28b797b16949bb91f9d0834f53d0a85633e7a902453029570b19dc45bf8
Deleted: sha256:ba610676e3f923069c86193d7e8521f0c578ae3cd84dcb8389ce7c4b056b4524
Deleted: sha256:db6d1740a05fa7b3716842af0d4873bae4d2d0863763fe4d57f88ec6071533f1
Deleted: sha256:5e1421b823106ab99a8e646bc076b566b356f25ae1a7e7e55fe9db14e6ad5d9b
Deleted: sha256:f6f641921e9cbf371c7f093fc85a8f7002a1756883d65253ae05830ea6d725d5
Deleted: sha256:39da760dfc512c90f8768041fef07dea83b16cd982609e5594b6bcf5907e2e60
Deleted: sha256:16235df029daaf609d02a40616b6c81c1f9d18e98d9109713afcde51aff9faa1
Deleted: sha256:1903ad33974c4af1c08fc96bb81890145cdb2a09f7cad0c26b9046bfaeaf1c88
Deleted: sha256:d101c9453715a978a2a520f553588e77dfb4236762175eba61c5c264a449c75d

[vagrant@dcentos ~]$ docker rmi mysql
Untagged: mysql:latest
Untagged: mysql@sha256:ff5ab9cdce0b4c59704b4e2a09deed5ab8467be795e0ea20228b8528f53fcf82
Deleted: sha256:a88c3e85e887d78c6c16ee6a0a6297e09bd573193918a08f269a942ddad77856
Deleted: sha256:a47e3f5184188d0ded58167f81ed399bda838b37716d6a0d9fb538ae64371767
Deleted: sha256:750ea5242272cdbf344d0af35c4eff64c7b0296491bf9747214d4012c4feb391
Deleted: sha256:2f17d48c81db0969179826d20d81e1cd333676a714e293a19a6fdaa2d57b1f27
Deleted: sha256:bea3f162c4bd2492d6cfce9f715c60a61020205e82647343034c33c2d2c1c720
Deleted: sha256:d3ad25eecba2cc8f5d837c5436fd4ce2230c51c6a6b206125b9dba76f83bd02f
Deleted: sha256:8fb5524227094d3e8963e8bb93af8835a5928f34a072e2272aaf330b00fc3a58
Deleted: sha256:3dcdcc4db1094b30a257b6feb414db6149934171333bc8c6ea543578021862ac
Deleted: sha256:706b673eebeed9bc92da642eee3a1f5ea076e149b98491624ce7436ee40d115d
Deleted: sha256:ed862c4f3420f8cdf5fb1160305a714585ffd0cc739c6f6306c750e82d50cd75
Deleted: sha256:55d310cc1793fd699f7389585b86d5ff0270ad8f516f81db295e51e12f6d0b5b

[vagrant@dcentos ~]$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
apache112     latest    4ba4201b08f8   22 minutes ago   229MB
myapache      latest    6a2d3e761653   25 minutes ago   226MB
<none>        <none>    a8ddccb5fc46   46 minutes ago   229MB
nginx         latest    e4720093a3c1   2 weeks ago      187MB
alpine        latest    05455a08881e   5 weeks ago      7.38MB
httpd         latest    2776f4da9d55   6 weeks ago      167MB
ubuntu        18.04     f9a80a55f492   9 months ago     63.2MB
hello-world   latest    d2c94e258dcb   10 months ago    13.3kB
centos        8         5d0da3dc9764   2 years ago      231MB

다른 도커 서버(Ubuntu)에 MySQL 이미지 다운로드

더보기
vagrant@dubuntu:~$ docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
81badc5f380f: Pull complete
c490e5dd1a9d: Pull complete
87aeb61f1478: Pull complete
1cacbea6ceda: Pull complete
1e72891ace67: Pull complete
42b720363d36: Pull complete
6b3b50f9990a: Pull complete
3811d52cfa61: Pull complete
05bc7a0277d8: Pull complete
cc0abd25a274: Pull complete
Digest: sha256:ff5ab9cdce0b4c59704b4e2a09deed5ab8467be795e0ea20228b8528f53fcf82
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest

MySQL 이미지 파일을 tar파일로 변환

docker image save -o mysql.tar mysql

vagrant@dubuntu:~$ docker image save -o mysql.tar mysql
vagrant@dubuntu:~$ ls
mysql.tar

 

sftp를 통해 tar파일 전송

더보기
vagrant@dubuntu:~$ sftp vagrant@192.168.25.10
The authenticity of host '192.168.25.10 (192.168.25.10)' can't be established.
ED25519 key fingerprint is SHA256:ErNOIs/s3fbKLdkUIv1kXH+1FPrM3Wz4dXMvmdjXSf0.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.25.10' (ED25519) to the list of known hosts.
vagrant@192.168.25.10's password:
Connected to 192.168.25.10.
sftp>
sftp> !pwd
/home/vagrant
sftp> put mysql.tar
Uploading mysql.tar to /home/vagrant/mysql.tar
mysql.tar                                                        100%  619MB  69.8MB/s   00:08
sftp> !ls
mysql.tar

Centos에 image파일 적용

더보기
[vagrant@dcentos ~]$ docker image load -i mysql.tar
55d310cc1793: Loading layer  118.8MB/118.8MB
750da67a1a6f: Loading layer  11.26kB/11.26kB
3bac5d5ee750: Loading layer  2.359MB/2.359MB
2750a469bea2: Loading layer  13.85MB/13.85MB
8b4846888b1b: Loading layer  6.656kB/6.656kB
33d3b3159e30: Loading layer  3.072kB/3.072kB
eb8536f76859: Loading layer    201MB/201MB
4c8b4f38c0d5: Loading layer  3.072kB/3.072kB
1319321d3298: Loading layer  312.7MB/312.7MB
4d7acf174bcc: Loading layer   16.9kB/16.9kB
Loaded image: mysql:latest

[vagrant@dcentos ~]$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
apache112     latest    4ba4201b08f8   30 minutes ago   229MB
myapache      latest    6a2d3e761653   34 minutes ago   226MB
<none>        <none>    a8ddccb5fc46   55 minutes ago   229MB
nginx         latest    e4720093a3c1   2 weeks ago      187MB
alpine        latest    05455a08881e   5 weeks ago      7.38MB
mysql         latest    a88c3e85e887   6 weeks ago      632MB   !!!!!!!!!!!!!!!!!!!!
httpd         latest    2776f4da9d55   6 weeks ago      167MB
ubuntu        18.04     f9a80a55f492   9 months ago     63.2MB
hello-world   latest    d2c94e258dcb   10 months ago    13.3kB
centos        8         5d0da3dc9764   2 years ago      231MB

결국 이미지만을 보내주는 것이고, 컨테이너를 수정한 것을 보내주는 것이 아님

 

 

'Container > Docker' 카테고리의 다른 글

Docker Hub에 업로드하기  (0) 2024.03.06
Dockerfile 명령어, Multi-stage build  (0) 2024.03.05
Docker Network  (0) 2024.03.04
Docker 설정 및 기본 명령어  (0) 2024.03.04
Container 개요 및 Docker 설치  (0) 2024.03.04

+ Recent posts