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 |