Docker 교육 3일차 정리

linux / / 2021. 3. 25. 17:44
반응형

Docker 교육 3일차 정리

Docker network

Docker container load balancer

  1. 사용자 정의 브릿지 네트워크와 docker run 수행시 --net-alias 옵션으로 묶인 모든 컨테이너
    에는 기본적으로 서비스를 검색할 수 있는 내장 DNS서버가 구현
  2. 이때, docker container들은 그 network 내에서 cluster를 이루고, 하나의 네트워크 망 구성

  3.  haproxy, nginx, apache load balancer등 외부 도구에 의존한 로드 밸런싱도 가능

 

사용자정의  네트워크 구성

## netlb라는 이름을 가진 브릿지 네트워크 구성
jeff@hostos1:~$ docker network create \
> --driver bridge \
> --subnet 172.200.1.0/24 \
> --ip-range 172.200.1.0/24 \
> --gateway 172.200.1.1 \
> netlb
5b91984485d398986dfab439c054aa433789cd91ac1094fbbb0bdf923dc3af3b

jeff@hostos1:~$ docker network ls
NETWORK ID     NAME         DRIVER    SCOPE
5b91984485d3   netlb        bridge    local

 

 

netlb 네트워크 브릿지를 사용하는 클러스터 컨테이너 생성

jeff@hostos1:~$ docker run -itd --name=nettest1 --net=netlb \
> --net-alias inner-net ubuntu:14.04
0037bf6e1608544e58fbea2c1e4597b051e59dcf9bf291ddf4f1544e3ecb33f9
jeff@hostos1:~$ docker run -itd --name=nettest2 --net=netlb --net-alias inner-net ubuntu:14.04
bb68b4a659b6039cb49252dd6b4446cc8d22ec3c62efd0c11e27a00b43ca8f28
jeff@hostos1:~$ docker run -itd --name=nettest3 --net=netlb --net-alias inner-net ubuntu:14.04
70fb9f970cff2e11cf0981b7d5c128ae4c9100f84fe70716828b7e449d194b2d
jeff@hostos1:~$ docker inspect nettest1 |grep -i ipa
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAMConfig": null,
                    "IPAddress": "172.200.1.2",
jeff@hostos1:~$ docker inspect nettest2 |grep -i ipa
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAMConfig": null,
                    "IPAddress": "172.200.1.3",
jeff@hostos1:~$ docker inspect nettest3 |grep -i ipa
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAMConfig": null,
                    "IPAddress": "172.200.1.4",
  • net alias를 통해 inner-net이라는 명칭의 클러스터그룹 생성
  • 컨테이너 nettest1, 2, 3을 생성해준다

 


  • frontend 컨테이너를 생성 후,
  • inner-net그룹의 클러스터로 ping,
  • 그룹내 랜덤한 host로 ping
  • loadbalancing

dig inner-net

  • apt-get install dns-utils
  • dig inner-net
  • inner-net그룹에 container 확인
추가 컨테이너 생성
jeff@hostos1:~$ docker run -itd --name=nettest4 --net=netlb --net-alias inner-net ubuntu:14.04
7ba71a59102b6663c5f141b31bbb388b75feff325439fafcc565b9cecfd262cb
자동 등록
;; ANSWER SECTION:
inner-net.              600     IN      A       172.200.1.2
inner-net.              600     IN      A       172.200.1.4
inner-net.              600     IN      A       172.200.1.3
inner-net.              600  

추가 컨테이너를 생성하여도 자동으로 등록되어 있다.

 


NGINX LB(LoadBalancing)

jjeff@hostos1:~$ sudo nginx -v
nginx version: nginx/1.14.0 (Ubuntu)

jeff@hostos1:~$ sudo systemctl status nginx.service
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2021-03-25 09:41:42 KST; 1min 9s ago
     Docs: man:nginx(8)
  Process: 25957 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 25942 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 25959 (nginx)
    Tasks: 5 (limit: 4915)
   CGroup: /system.slice/nginx.service
           ├─25959 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ├─25960 nginx: worker process
           ├─25961 nginx: worker process
           ├─25962 nginx: worker process
           └─25963 nginx: worker process

 3월 25 09:41:42 hostos1 systemd[1]: Starting A high performance web server and a reverse proxy server...
 3월 25 09:41:42 hostos1 systemd[1]: Started A high performance web server and a reverse 
 
 jeff@hostos1:~$ netstat -nlp |grep 80
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -     
tcp6       0      0 :::80                   :::*                    LISTEN      -     
  • apt-get install nginx
  • nginx -v 버전확인
  • nginx사용을 위한 80번 포트 사용 확인

 

jeff@hostos1:~/LABs/docker-phpserver$ docker run -itd -p 5001:80 -h alb-node01 -v `pwd`/log-alb01:/var/log/apache2 --name=alb-node01 php-alb:1.0
6b280e2940b29e7ec64ea9ed87920d9da57198d1ece19028078009cab9322816
jeff@hostos1:~/LABs/docker-phpserver$ docker run -itd -p 5002:80 -h alb-node01 -v `pwd`/log-alb02:/var/log/apache2 --name=alb-node02 php-alb:1.0
5645249c0106f55a3e9a23aaa56392c5f611b1ca96ee0c82d651c1d8f608a5f2
jeff@hostos1:~/LABs/docker-phpserver$ docker run -itd -p 5003:80 -h alb-node01 -v `pwd`/log-alb03:/var/log/apache2 --name=alb-node03 php-alb:1.0
5cb1ed19a57fba0e29a95f6c67b5311339c8cd1d8eba49f81cf98df426833ebc

jeff@hostos1:~/LABs/docker-phpserver$ docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS          PORTS                    NAMES
5cb1ed19a57f   php-alb:1.0              "docker-php-entrypoi…"   6 seconds ago    Up 4 seconds    0.0.0.0:5003->80/tcp     alb-node03
5645249c0106   php-alb:1.0              "docker-php-entrypoi…"   15 seconds ago   Up 13 seconds   0.0.0.0:5002->80/tcp     alb-node02
6b280e2940b2   php-alb:1.0              "docker-php-entrypoi…"   24 seconds ago   Up 22 seconds   0.0.0.0:5001->80/tcp     alb-node01

jeff@hostos1:~/LABs/docker-phpserver$ sudo netstat -nlp |grep "5001\|5002\|5003"
[sudo] password for jeff:
tcp        0      0 0.0.0.0:5001            0.0.0.0:*               LISTEN      27291/docker-proxy
tcp        0      0 0.0.0.0:5002            0.0.0.0:*               LISTEN      27458/docker-proxy
tcp        0      0 0.0.0.0:5003            0.0.0.0:*               LISTEN      27623/docker-proxy

jeff@hostos1:~/LABs/docker-phpserver$ docker cp index.php3 alb-node01:/var/www/html/index.php
jeff@hostos1:~/LABs/docker-phpserver$ docker cp index.php3 alb-node02:/var/www/html/index.php
jeff@hostos1:~/LABs/docker-phpserver$ docker cp index.php3 alb-node03:/var/www/html/index.php

vim /etc/nginx/nginx.conf               ##weight=가중치
events { worker_connections 1024; }

http {

     # List of application servers
     upstream backend-alb {
        server 127.0.01:5001 weight=6;
        server 127.0.01:5002 weight=2;
        server 127.0.01:5003 weight=2;
     }

     # Configuration for the server
     server {

        # Running port
        listen 80 default_server;

        #Proxing the connections
        location / {
            proxy_pass  http://backend-alb;
        }
     }
}

 

  • node01~03까지 생성을 해준다.
  • hostname = alb-node01~03
  • port = 5001~5003
  • -v 볼륨마운트

위 작성시 alb-node01은 02, 03으로 작성해야 하지만 실수함.

 

  • 5001~5003까지 netstat -nlp를 통해 확인 후,
  • 미리 작성되어있는 php파일을 alb-node의 컨테이너로 복사
  • nginx.conf를 백업 후 새로작성.
  • weight = 가중치로 비율을 옵션으로 설정 가능

기본 nginx파일이다

 

localhost ip로 웹브라우저에 접근하여 새로고침을 하였을 때, port번호가 변경된다.

위에 컨테이너 작성시 오타로 인하여 alb-node 이름은 alb-node01로 고정 되어있지만, 포트 번호는 계속하여 변경 된다.

 

 

새로고침하면서 iptraf-ng를 통하여 veth의 수치가 변경되는 것을 확인

 


Docker container 관리

리소스에 대한 런타임 제약(resource limit)

container를 생성하는 run, create에서 container의 자원 할당량 조정옵션 지정 가능

 

옵션 미 지정 시 container는 host os의 자원을 제한 없이 사용 가능

  • 옵션 설정을 통해 다른 container는 host os의 자원을 제한 없이 사용 가능
  • 생성 후 변경 시에는 docker update 명령 이용

 

docker 리소스를 제한하는 기능은 linux의 cgoups 기능 활용

 

옵션 설명
-c, -cpu-shares=0(cpu time scheduling) cpu 리소스 분배(default는 1024, cpu할당에서 1의 비율 의미
-m, --memory=[메모리 사용량], --memory-swap 메모리 사용량 제한(단위는 b, k, m, g등. default는 1024)
--device-write-bps, --device-read-bps,
--device-write-iops, --device-read-iops,
--blkio
 

 

 

container memory 제한

jeff@hostos1:~/LABs$ docker run -d --memory=1g --name=nginx_mem_1g nginx
WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
d2db1d452ab18a2e3352447705979be7e9f5f20138f76d00f02523d3d89cf0ab

jeff@hostos1:~$ sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
change
GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1"
jeff@hostos1:~$ docker run -d --memory=1g --name=nginx_mem_1g nginx
428700c59ab392c1173344fc8433921f95bd08ce616dc98e886d633a16a8c46a
jeff@hostos1:~$ docker inspect nginx_mem_1g |grep \"Memory\"
            "Memory": 1073741824,
            
jeff@hostos1:~$ docker run -m=200m --memory-swap=300m -it -d --name=mem-test ubuntu:14.04
e60342f666d1e5ee329d3ab895dcd5c6faa47c76d6b07090fbb462e08afa0c61
jeff@hostos1:~$ docker inspect mem-test |grep \"Memory\"
            "Memory": 209715200,
jeff@hostos1:~$ docker inspect mem-test |grep \"MemorySwap\"
            "MemorySwap": 314572800,
  • 메모리 limit을 설정한 nginx컨테이너
  • error발생
  • 커널 수정후 완성
  • swap limit도 가능

 

container cpu 제한

host에 cpu가 여러개 있을때 --cpuset-cpus를 지정해 container가 특정 cpu만 사용하도록 지정

host가 보유한 cpu 수에서 몇 번째를 사용하도록 할 것인지 지정

--cpuset-cpus="0,3" -> 1,4번째 cpu 사용 htop

--cpuset-cpus="0-2" -> 1,2,3번째 cpu 사용

jeff@hostos1:~/LABs$ docker run -d --name cpuset_1 --cpuset-cpus=2 leecloudo/stress:1.0 stress --cpu 1
jeff@hostos1:~/LABs$ docker run -d --name cpuset_2 --cpuset-cpus=0,3 leecloudo/stress:1.0 stress --cpu 2

htop + cadvisor

cpu 사용량을 20%로 제한

jeff@hostos1:~/LABs$ docker run -d --name cpuset_1 --cpuset-cpus=2 leecloudo/stress:1.0 stress --cpu 1
jeff@hostos1:~/LABs$ docker update --cpus=0.2 cpuset_1

jeff@hostos1:~/LABs$ docker run -d --name cpuset_2 --cpuset-cpus=0,3 leecloudo/stress:1.0 stress --cpu 2
jeff@hostos1:~/LABs$ docker update --cpus=0.2 cpuset_2

cpu1

 

cpu2

container disk 제한

jeff@hostos1:~/LABs$ docker run -it --rm ubuntu:14.04 bash
root@87731e2390d6:/# dd if=/dev/zero of=test.out bs=1M count=10 oflag=diret
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0168815 s, 621 MB/s

jeff@hostos1:~/LABs$ docker run -it --rm --device-write-bps /dev/sda:1mb ubuntu:14.04 bash
root@1e796a5ce8ca:/# dd if=/dev/zero of=test.out bs=1M count=10 oflag=direct
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 10.0043 s, 1.0 MB/s

jeff@hostos1:~/LABs$ docker run -it --rm --device-write-bps /dev/sda:10mb ubuntu:14.04 bash
root@27c0f57d1834:/# dd if=/dev/zero of=test.out bs=1M count=10 oflag=direct
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 1.02809 s, 10.2 MB/s


jeff@hostos1:~/LABs$ docker run -it --rm --device-write-iops /dev/sda:1mb ubuntu:14.04 bash
root@35826a471190:/# dd if=/dev/zero of=blkio.out bs=1M count=10 oflag=direct
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.907194 s, 11.6 MB/s

jeff@hostos1:~/LABs$ docker run -it --rm --device-write-iops /dev/sda:1 ubuntu:14.04 bash
root@0d531e0aa6eb:/# dd if=/dev/zero of=blkio.out bs=1M count=10 oflag=direct
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 16.3022 s, 643 kB/s

 

container volume bind

db의 중요 데이터 보호 및 영속성 유지

jeff@hostos1:~$ docker run -it --name=mysql-vtest -e MYSQL_ROOT_PASSWORD=mjeff \
> -e MYSQL_DATABASE=dockertest -v /home/jeff/volume_test:/var/lib/mysql -d mysql:5.7
71b42d84ff4c6bb5f856bfd7702be87b90e9c735b6ca0f2c2e9c74f8b22003e6
jeff@hostos1:~$ docker exec -it mysql-vtest bash
root@71b42d84ff4c:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.33 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| dockertest         |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> use dockertest;
Database changed
mysql> create table mytab (c1 int, c2 char);
Query OK, 0 rows affected (0.01 sec)

mysql> insert into mytab values (1,'a');
Query OK, 1 row affected (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
root@71b42d84ff4c:/# exit
exit
jeff@hostos1:~$ cd volume_test/
jeff@hostos1:~/volume_test$ ls
auto.cnf         client-key.pem  ib_logfile0  performance_schema  server-key.pem
ca-key.pem       dockertest      ib_logfile1  private_key.pem     sys
ca.pem           ib_buffer_pool  ibtmp1       public_key.pem
client-cert.pem  ibdata1         mysql        server-cert.pem


jeff@hostos1:~/volume_test$ docker stop mysql-vtest
mysql-vtest
jeff@hostos1:~/volume_test$ docker rm mysql-vtest
mysql-vtest

컨테이너 볼륨을 제거하고 다시 생성 후 마운트하여도 데이터는 살아있다.

 

container volume quota(할당량) 제한

jeff@hostos1:~$ docker run -it -v `pwd`/myvolume:/webapp ubuntu:14.04 bash
root@e3d24e1572fc:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          98G   12G   82G  13% /
tmpfs            64M     0   64M   0% /dev
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
shm              64M     0   64M   0% /dev/shm
/dev/sda1        98G   12G   82G  13% /webapp
tmpfs           3.9G     0  3.9G   0% /proc/acpi
tmpfs           3.9G     0  3.9G   0% /proc/scsi
tmpfs           3.9G     0  3.9G   0% /sys/firmware

jeff@hostos1:~$ sudo su -
[sudo] password for jeff:
root@hostos1:~# dd if=/dev/zero of=temphdd.img count=512 bs=1M
512+0 records in
512+0 records out
536870912 bytes (537 MB, 512 MiB) copied, 0.24546 s, 2.2 GB/s
root@hostos1:~# ls
snap  temphdd.img
root@hostos1:~# mkfs.ext4 temphdd.img
mke2fs 1.44.1 (24-Mar-2018)
Discarding device blocks: done
Creating filesystem with 131072 4k blocks and 32768 inodes
Filesystem UUID: 9930b7ef-ad1b-4476-900c-86217db591f6
Superblock backups stored on blocks:
        32768, 98304

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

root@hostos1:~# ls
snap  temphdd.img
root@hostos1:~# ls -al
total 356
drwx------  4 root root      4096  3월 25 15:32 .
drwxr-xr-x 24 root root      4096  3월 24 11:52 ..
-rw-------  1 root root       607  3월 25 10:36 .bash_history
-rw-r--r--  1 root root      3106  4월  9  2018 .bashrc
drwx------  2 root root      4096  8월  6  2019 .cache
-rw-r--r--  1 root root       148  8월 18  2015 .profile
drwxr-xr-x  5 root root      4096  3월 24 13:00 snap
-rw-r--r--  1 root root 536870912  3월 25 15:33 temphdd.img
root@hostos1:~# fdisk -l temphdd.img
Disk temphdd.img: 512 MiB, 536870912 bytes, 1048576 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
root@hostos1:~# mkdir -p /home/jeff/myvolume/
root@hostos1:~# mount -o loop temphdd.img /home/jeff/myvolume/

root@hostos1:~# docker run -v /home/jeff/myvolume/:/webapp -it --name=vquota ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
5d3b2c2d21bb: Pull complete
3fc2062ea667: Pull complete
75adf526d75b: Pull complete
Digest: sha256:b4f9e18267eb98998f6130342baacaeb9553f136142d40959a1b46d6401f0f2b
Status: Downloaded newer image for ubuntu:latest
root@95f4df06debc:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          98G   12G   82G  13% /
tmpfs            64M     0   64M   0% /dev
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
shm              64M     0   64M   0% /dev/shm
/dev/loop17     488M  780K  452M   1% /webapp
/dev/sda1        98G   12G   82G  13% /etc/hosts
tmpfs           3.9G     0  3.9G   0% /proc/acpi
tmpfs           3.9G     0  3.9G   0% /proc/scsi
tmpfs           3.9G     0  3.9G   0% /sys/firmware

 

  • 도커 컨테이너 마운트
  • 모든 용량을 /webapp에서 마운트가 됨
  • 루트 권한 - dd명령어를 사용한 파일생성
  • img파일 ext4 포맷
  • img파일을 폴더마운트
  • 도커 컨테이너 폴더마운트

 

docker volume 생성

# 데이터 전용 container 생성
jeff@hostos1:~$ docker create -v /data-volume --name=datavol ubuntu:14.04

# 데이터 전용 container를 볼륨으로 연결 -> --volume-from
jeff@hostos1:~$ docker run -it --volumes-from datavol:rw ubuntu:14.04
root@8dab8e527a64:/# echo 'testing data container' > /data-volume/test-volume.txt
root@8dab8e527a64:/# cat /data-volume/test-volume.txt
testing data container
root@8dab8e527a64:/# exit

jeff@hostos1:~$ docker run -it --volumes-from datavol ubuntu:14.04
root@f7ea20fbcaeb:/# cat /data-volume/test-volume.txt
testing data container
root@f7ea20fbcaeb:/# echo 'testing data container2' > /data-volume/test-volume2.txt
root@f7ea20fbcaeb:/# ls /data-volume/
test-volume.txt  test-volume2.txt
root@f7ea20fbcaeb:/# exit

 

container 파일 복사

# container 내의 파일을 host로 복사
docker container cp <container명 또는 ID>:<container 내의 파일 경로> <HOST 디렉토리 경로>
docker container cp <Host 파일> <container명 또는 ID>:<container 내의 경로>

#test container의 /etc/passwd 파일을 host의 /tmp/etc에 복사
jeff@hostos1:~$ docker run -itd --name=test_container centos
jeff@hostos1:~$ docker container cp test_container:/etc/passwd /home/jeff/centos_passwd.txt

#host의 현재 디렉터리에 있는 local.txt 파일으르 text container의 /tmp/local.txt로 복사
jeff@hostos1:~$ touch local.txt
jeff@hostos1:~$ docker container cp ./local.txt test_container:/tmp/local.txt
jeff@hostos1:~$ docker exec -t test_container ls /tmp
ks-script-esd4my7v  ks-script-eusq_sc5  local.txt

jeff@hostos1:~$ docker run -d -p 7777:80 --name=webserver nginx
f5391789e4bf4a2ecb5ae1f755ab036e26bae60591a0d4a8af083839db6ccfbe
jeff@hostos1:~$ docker cp webserver:/etc/nginx/nginx.conf /home/jeff/nginx.conf
jeff@hostos1:~$ docker cp nginx.conf webserver:/etc/nginx/nginx.conf

 

container 내에서 파일 변경 이력 확인

-container 안에서 어떤 조작을 하여 container가 image로부터 생성되었을 때와 달라진 점 (차분:diff)을 확인

  • A: 추가된 파일
  • B: 변경된 파일
  • C: 삭제된 파일
jeff@hostos1:~$ docker run -it --name centos6_test centos:6 bash

[root@66a88f2c328b /]# mkdir docker_test
[root@66a88f2c328b /]# mkdir docker2_test
[root@66a88f2c328b /]# useradd docker_user


jeff@hostos1:~$ docker diff centos6_test
C /etc
C /etc/gshadow
C /etc/passwd-
C /etc/gshadow-
C /etc/group
C /etc/passwd
C /etc/shadow-
C /etc/group-
C /etc/shadow
C /home
A /home/docker_user
A /home/docker_user/.bash_logout
A /home/docker_user/.bash_profile
A /home/docker_user/.bashrc
A /docker2_test
A /docker_test
C /var
C /var/log
C /var/log/lastlog
C /var/spool
C /var/spool/mail
A /var/spool/mail/docker_user

 

container migration

# webserver container를 webserver.tar 파일로 저장
jeff@hostos1:~/LABs$ docker container run --name webserver -d -p 80:80 nginx
jeff@hostos1:~/LABs$ docker container export webserver > webserver.tar

# 생성된 tar 파일 상세 확인
jeff@hostos1:~/LABs$ tar -tvf webserver.tar
-rwxr-xr-x 0/0               0 2021-03-25 17:22 .dockerenv
drwxr-xr-x 0/0               0 2021-03-11 09:00 bin/
-rwxr-xr-x 0/0         1168776 2019-04-18 13:12 bin/bash
..

# 다른 서버로 전달
jeff@hostos1:~/LABs$ sudo scp webserver.tar jeff@hostos2:/home/jeff/webserver.tar

# 2번 서버에서 webserver.tar 파일을 기반으로 webap:1.0 image 생성
jeff@hostos2:~$ cat webserver.tar |docker import - webap:1.0

# 생성된 이미자 확인
jeff@hostos2:~$ docker images
REPOSITORY          TAG         IMAGE ID       CREATED          SIZE
webap               1.0         31c9c2918b17   4 seconds ago    131MB
1985ck/webfront     1.0         eb573e3b758f   43 minutes ago   133MB

 

 

 

 

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기