root@ubuntu:~# docker network create --driver=bridge --subnet=10.10.10.0/24 --gateway=10.10.10.1 my-net
root@ubuntu:~# docker network create --driver=bridge --subnet=10.10.10.0/24 --gateway=10.10.10.1 my-net
1e6f6c3b9995342d1331dd36250a5f6bbedf56e69029a1f5ad5a2b42787407c1
--subnet
되도록이면 host의 network와 겹치지 않게 하는 것이 좋다.
root@ubuntu:~# docker network ls
root@ubuntu:~# docker network ls
NETWORK ID NAME DRIVER SCOPE
e17e10bea72e bridge bridge local
e7d368ac9ba7 host host local
1e6f6c3b9995 my-net bridge local
2e7e0f9b2738 none null local
root@ubuntu:~# docker network inspect my-net
root@ubuntu:~# docker run -d --name net-test --net my-net httpd
root@ubuntu:~# docker run -d --name net-test --net my-net httpd
07715fb1addf0c5fa8d2c242d8cccecd86d269d804b525652e2ae4faae7ad61b
root@ubuntu:~# docker inspect net-test | grep IPAddr
root@ubuntu:~# docker inspect net-test | grep IPAddr
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAddress": "10.10.10.2",
root@ubuntu:~# docker run -d --name net-test2 --net my-net centos:7
root@ubuntu:~# docker run -d --name net-test2 --net my-net centos:7
[root@f1f841f7a840 /]#
[root@f1f841f7a840 /]# ping 10.10.10.2
[root@f1f841f7a840 /]# ping 10.10.10.2
PING 10.10.10.2 (10.10.10.2) 56(84) bytes of data.
64 bytes from 10.10.10.2: icmp_seq=1 ttl=64 time=0.210 ms
64 bytes from 10.10.10.2: icmp_seq=2 ttl=64 time=0.100 ms
^C
--- 10.10.10.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1013ms
rtt min/avg/max/mdev = 0.100/0.155/0.210/0.055 ms
container끼리도 통신이 된다.
(Ctrl+p+q)
root@ubuntu:~# docker exec net-test2 ls
root@ubuntu:~# docker exec net-test2 ls
anaconda-post.log
bin
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
container 밖에서 container 내부에 명령을 한다.
즉 위의 출력 결과는 net-test2
에서 ls
를 입력한 결과다.
root@ubuntu:~# docker exec -it net-test2 /bin/bash
[root@f1f841f7a840 /]#
container로 진입한다.
root@ubuntu:~# docker ps -q
root@ubuntu:~# docker ps -q
f1f841f7a840
07715fb1addf
81d04c495f7c
root@ubuntu:~# docker ps -aq
root@ubuntu:~# docker ps -aq
f1f841f7a840
07715fb1addf
81d04c495f7c
root@ubuntu:~# docker rm -f $(docker ps -aq)
root@ubuntu:~# docker rm -f $(docker ps -aq)
df1f841f7a840
07715fb1addf
81d04c495f7c
root@ubuntu:~# docker ps -a
root@ubuntu:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@ubuntu:~# docker run -it -w=/working -e WORK=/working centos:7 /bin/bash
root@ubuntu:~# docker run -it -w=/working -e WORK=/working centos:7 /bin/bash
[root@98e74a15f23f working]#
-w
working directory 지정
-e
environment variable
여기서는 WORK=/working으로 설정한다.
[root@98e74a15f23f working]# pwd
[root@98e74a15f23f working]# pwd
/working
[root@98e74a15f23f working]# echo $WORK
[root@98e74a15f23f working]# echo $WORK
/working
root@ubuntu:~# docker ps
root@ubuntu:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
98e74a15f23f centos:7 "/bin/bash" 3 minutes ago Up 3 minutes **infallible_poincare**
root@ubuntu:~# touch cptest.txt
root@ubuntu:~# docker cp ./cptest.txt infallible_poincare:/working/cptest.txt root@ubuntu:~# docker exec infallible_poincare ls /working cptest.txt
root@ubuntu:~# docker cp ./cptest.txt infallible_poincare:/working/cptest.txt
root@ubuntu:~# docker exec infallible_poincare ls /working
cptest.txt
내 host에 있는 파일(cptest.txt)을 container 안으로 복사한 후 확인한 것.
어쨌든 명령어 형식은 cp <SRC> <DEST>
로 동일하다.
host와 container의 구분
은 :
를 기준으로 한다.
(infallible_poincare:
는 ****infallible_poincare
라는 container를 의미하므로)
root@ubuntu:~# docker cp infallible_poincare:/working/cptest.txt ../cptest.txt
root@ubuntu:~# ls ..
root@ubuntu:~# docker cp infallible_poincare:/working/cptest.txt ../cptest.txt
root@ubuntu:~# ls ..
bin dev lib libx32 mnt root snap sys var
boot etc lib32 lost+found opt run srv tmp
**cptest.txt** home lib64 media proc sbin swap.img usr
복사가 된 것을 확인할 수 있다.