docker的基礎操作及四種網路形式
yum install -y container-selinux-2.21-1.el7.noarch.rpm
docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm
libsemanage-2.5-8.el7.x86_64.rpm
libsemanage-python-2.5-8.el7.x86_64.rpm
pigz-2.3.4-1.el7.x86_64.rpm
policycoreutils-2.5-17.1.el7.x86_64.rpm
policycoreutils-python-2.5-17.1.el7.x86_64.rpm
匯入鏡象
[[email protected] mnt]# docker load -i ubuntu.tar
454970bd163b: Loading layer 196.8MB/196.8MB
38112156678d: Loading layer 208.9kB/208.9kB
4e1f7c524148: Loading layer 4.608kB/4.608kB
56063ad57855: Loading layer 1.024kB/1.024kB
[[email protected] mnt]# docker load -i rhel7.tar
e1f5733f050b: Loading layer 147.1MB/147.1MB
[[email protected] mnt]# docker load -i nginx.tar
cdb3f9544e4c: Loading layer 58.44MB/58.44MB
a8c4aeeaa045: Loading layer 54.24MB/54.24MB
08d25fa0442e: Loading layer 3.584kB/3.584kB
Loaded image: nginx:latest
檢視映象
[[email protected] mnt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest c82521676580 2 months ago 109MB
ubuntu latest 07c86167cdc4 2 years ago 188MB
rhel7 latest 0a3eb3fde7fd 4 years ago 140MB
[[email protected] mnt]# docker image --help
Usage: docker image COMMAND
Manage images
Options:
Commands:
build Build an image from a Dockerfile
history Show the history of an image
import Import the contents from a tarball to create a filesystem image
inspect Display detailed information on one or more images
load Load an image from a tar archive or STDIN
ls List images
prune Remove unused images
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rm Remove one or more images
save Save one or more images to a tar archive (streamed to STDOUT by default)
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
Run 'docker image COMMAND --help' for more information on a command.
建立容器
[[email protected] mnt]# docker run -it --name vm1 ubuntu
[email protected]:/# exit
[[email protected] mnt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ce9b17aeb721 ubuntu "/bin/bash" About a minute ago Exited (0) 28 seconds ago vm1
開啟vm1容器
[[email protected] mnt]# docker start vm1
vm1
[[email protected] mnt]# docker attach vm1
[email protected]:/# exit
進入互動介面
[[email protected] mnt]# docker attach vm1
read escape sequence ctrl+p+q 打入後臺
[[email protected] mnt]# docker run -d --name vm2 nginx
2d558e44f5cba5eb9439649411e1bbe03d79c96fadfd8fdb2b3ba0ae2d85481b
[[email protected] mnt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2d558e44f5cb nginx "nginx -g 'daemon of…" 7 seconds ago Up 6 seconds 80/tcp vm2
ce9b17aeb721 ubuntu "/bin/bash" 6 minutes ago Up 4 minutes vm1
預設使用網路對的形式
[[email protected] mnt]# ip addr
14: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 02:42:9b:38:13:f7 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:9bff:fe38:13f7/64 scope link
valid_lft forever preferred_lft forever
46: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP
link/ether ca:aa:ea:2a:bf:e2 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::c8aa:eaff:fe2a:bfe2/64 scope link
valid_lft forever preferred_lft forever
[email protected]:/# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
45: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
[email protected]:/# exit
檢視容器資訊
[[email protected] mnt]# docker inspect vm2
檢視容器歷史
[[email protected] mnt]# docker history nginx:latest
IMAGE CREATED CREATED BY SIZE COMMENT
c82521676580 2 months ago /bin/sh -c #(nop) CMD ["nginx" "-g" "daemon… 0B
<missing> 2 months ago /bin/sh -c #(nop) STOPSIGNAL [SIGTERM] 0B
<missing> 2 months ago /bin/sh -c #(nop) EXPOSE 80/tcp 0B
<missing> 2 months ago /bin/sh -c ln -sf /dev/stdout /var/log/nginx… 22B
<missing> 2 months ago /bin/sh -c set -x && apt-get update && apt… 53.7MB
<missing> 2 months ago /bin/sh -c #(nop) ENV NJS_VERSION=1.15.2.0.… 0B
<missing> 2 months ago /bin/sh -c #(nop) ENV NGINX_VERSION=1.15.2-… 0B
<missing> 3 months ago /bin/sh -c #(nop) LABEL maintainer=NGINX Do… 0B
<missing> 3 months ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 3 months ago /bin/sh -c #(nop) ADD file:919939fa022472751… 55.3MB
在容器內執行指令
[[email protected] mnt]# docker exec vm2 ls -ld /usr/share/nginx/html
drwxr-xr-x 2 root root 40 Jul 24 17:21 /usr/share/nginx/html
[[email protected] mnt]# vim index.html
將檔案拷入容器內
[[email protected] mnt]# docker cp index.html vm2:/usr/share/nginx/html
[[email protected] mnt]# docker attach vm1
[email protected]:/# uname -r
3.10.0-514.el7.x86_64
[email protected]:/# touch file{1..20}
[email protected]:/# exit
將容器vm1提交為一個映象
[[email protected] mnt]# docker commit vm1 ubuntu:v1
sha256:9be0a9b6f97c722bcb8f6d10620ac30cf784bb199352b65a69661ac6543284db
[[email protected] mnt]# docker history ubuntu:v1
IMAGE CREATED CREATED BY SIZE COMMENT
9be0a9b6f97c 15 seconds ago /bin/bash 35B
07c86167cdc4 2 years ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
220d2912ab1d 2 years ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$… 1.9kB
cc77a2e3d72c 2 years ago /bin/sh -c echo '#!/bin/sh' > /usr/sbin/poli… 195kB
c8fa7cdceff3 2 years ago /bin/sh -c #(nop) ADD file:b9504126dc5590898… 188MB
[[email protected] mnt]# docker history ubuntu
IMAGE CREATED CREATED BY SIZE COMMENT
07c86167cdc4 2 years ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
220d2912ab1d 2 years ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$… 1.9kB
cc77a2e3d72c 2 years ago /bin/sh -c echo '#!/bin/sh' > /usr/sbin/poli… 195kB
c8fa7cdceff3 2 years ago /bin/sh -c #(nop) ADD file:b9504126dc5590898… 188MB
刪除容器
[[email protected] mnt]# docker rm vm1
vm1
刪除映象
[[email protected] mnt]# docker rmi ubuntu:v1
Untagged: ubuntu:v1
Deleted: sha256:9be0a9b6f97c722bcb8f6d10620ac30cf784bb199352b65a69661ac6543284db
Deleted: sha256:9f242d4309ec44c7c426bb1c729fcb2156a09f562023b23999a57b52d7590590
如果建立容器時沒有命名,會隨機命名
[[email protected] mnt]# docker run -it ubuntu
[email protected]:/# exit
[[email protected] mnt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e14dbb6ea8b3 ubuntu "/bin/bash" 13 seconds ago Exited (0) 11 seconds ago distracted_goldberg
6591d472ee9a nginx "nginx -g 'daemon of…" 37 minutes ago Exited (0) 5 minutes ago vm2
[[email protected] mnt]# docker start distracted_goldberg
distracted_goldberg
[[email protected] mnt]# docker attach distracted_goldberg
[email protected]:/# touch file1
[email protected]:/# read escape sequence
檢視容器檔案系統變更
[[email protected] mnt]# docker diff e14dbb6ea8b3
A /file1
[[email protected] mnt]# docker attach distracted_goldberg
[email protected]:/# rm -rf file1
[email protected]:/# read escape sequence
[[email protected] mnt]# docker diff e14dbb6ea8b3
進入容器bash的兩種方式
[[email protected] mnt]# docker run -it --name vm1 nginx bash
[email protected]:/# exit
[[email protected] mnt]# docker start vm1
vm1
[[email protected] mnt]# docker exec -it vm1 bash
[email protected]:/# ^C
[email protected]:/# exit
匯出容器
[[email protected] mnt]# docker export distracted_goldberg -o test.tar
匯入容器
[[email protected] mnt]# docker import test.tar test:v1
sha256:dac6e444ddf390fb1cb2b4bdeffe6941376c19093b5d354a4e456654cc23a85b
從網上獲取映象
[[email protected] mnt]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://w8ujyhgj.mirror.aliyuncs.com"]
}
[[email protected] mnt]# systemctl daemon-reload
[[email protected] mnt]# systemctl restart docker
查詢映象
[[email protected] mnt]# docker search busybox
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
busybox Busybox base image. 1381 [OK]
下載映象
[[email protected] mnt]# docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
90e01955edcd: Pull complete
Digest: sha256:2a03a6059f21e150ae84b0973863609494aad70f0a80eaeb64bddd8d92465812
Status: Downloaded newer image for busybox:latest
[[email protected] mnt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test v1 dac6e444ddf3 24 minutes ago 188MB
busybox latest 59788edf1f3e 2 weeks ago 1.15MB
將容器/usr/share/nginx/html掛在到主機 /tmp/docker/web/目錄下
[[email protected] docker]# docker run -d --name vm2 -v /tmp/docker/web/:/usr/share/nginx/html nginx
d259669ae78ba0c80cbb7374101a261350bb9f4df9e56580e9189a984a70d4c7
/tmp/docker/data2:/data2:ro 以只讀的方式掛載
[[email protected] docker]# docker run -it --name vm3 -v /tmp/docker/data1:/data1 -v /tmp/docker/data2:/data2:ro -v /etc/yum.repos.d/rhel-dvd.repo:/etc/yum.repos.d/rhel-dvd.repo:ro ubuntu
[email protected]:/# vi /etc/yum.repos.d/rhel-dvd.repo
[[email protected] docker]# docker attach vm3
[email protected]:/# cd data1/
[email protected]:/data1# touch file1
[email protected]:/data1# cd ..
[email protected]:/# cd data2/
[email protected]:/data2# touch file2
touch: cannot touch 'file2': Read-only file system
[email protected]:/data2# cd ..
[email protected]:/# read escape sequence
建立容器的volumes
[[email protected] docker]# docker create --name dataval -v /tmp/docker/data1:/data1 -v /tmp/docker/data2:/data2:ro -v /etc/yum.repos.d/rhel-dvd.repo:/etc/yum.repos.d/rhel-dvd.repo:ro ubuntu
使用volumes建立容器
[[email protected] docker]# docker run -it --name vm4 --volumes-from=dataval ubuntu
[email protected]:/# cd data1/
[email protected]:/data1# cd ..
[email protected]:/# cd /data2/
容器的四種網路模式
一、Bridge 橋接模式
Bridge 橋接模式的實現步驟主要如下:
(1) Docker Daemon 利用 veth pair 技術,在宿主機上建立兩個虛擬網路介面裝置 假設為veth0 和 veth1。 而 veth pair 技術的特性可以保證無論哪一個 veth 接收到網路報文,都會將報文傳輸給另一方。
(2) Docker Daemon 將 veth0 附加到 Docker Daemon 建立的 docker0 網橋上。 保證宿主機的網路報文可以發往 veth0;
(3) Docker Daemon 將 veth1 新增到 Docker Container 所屬的 namespace 下,並被改名為 eth0。 如此一來,保證宿主機的網路報文若發往 veth0,則立即會被 eth0 接收 實現宿主機到Docker Container 網路的聯通性; 同時,也保證 Docker Container 單獨使用 eth0,實現容器網路環境的隔離性。 bridge 橋接模式下的 Docker Container 在使用時,並非為開發者包辦了一切。 最明顯的是,該模式下 Docker Container 不具有一個公有 IP, 即和宿主機的 eth0 不處於同一個網段。導致的結果是宿主機以外的世界不能直接和容器進行通訊。 雖然 NAT 模式經過中間處理實現了這一點 但是 NAT 模式仍然存在問題與不便,如:容器均需要在宿主機上競爭埠,容器 內部服務的訪問者需要使用服務發現獲知服務的外部埠等。 另外 NAT 模式由於是在三層 網路上的實現手段,故肯定會影響網路的傳輸效率。
[[email protected] docker]# docker run -d --name vm1 nginx
f29a7c9fe6b6b10b9e54e256ef47e694d9f361716bc15de3143555caeeb231e1
二、Host 網路模式:
host 模式是 bridge 橋接模式很好的補充。 採用 host 模式的 Docker Container,可以直接使用 宿主機的 IP 地址與外界進行通訊,若宿主機的 eth0 是一個公有 IP, 那麼容器也擁有這個公有 IP。 同時容器內服務的埠也可以使用宿主機的埠,無需額外進行 NAT 轉換。 當然,有這樣的方便,肯定會損失部分其他的特性, 最明顯的是 Docker Container 網路環境隔離性的弱化, 即容器不再擁有隔離、獨立的網路棧。 另外,使用 host 模式的 Docker Container 雖 然可以讓容器內部的服務和傳統情況無差別、無改造的使用, 但是由於網路隔離性的弱化,該容器會與宿主機共享競爭網路棧的使用; 另外,容器內部將不再擁有所有的埠資源, 原因是部分埠資源已經被宿主機本身的服務佔用, 還有部分埠已經用以 bridge 網路模式容器的埠對映。
[[email protected] docker]# docker run -it --name vm2 --net host ubuntu
[email protected]:/# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
link/ether 00:21:cc:5f:d1:ca brd ff:ff:ff:ff:ff:ff
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 74:e5:0b:88:f8:0c brd ff:ff:ff:ff:ff:ff
inet 192.168.43.164/24 brd 192.168.43.255 scope global dynamic wlp3s0
valid_lft 3137sec preferred_lft 3137sec
inet6 240e:bf:d206:aba5:ff6f:936a:2372:adc6/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::8c56:99c9:940f:272d/64 scope link
valid_lft forever preferred_lft forever
埠對映
[[email protected] docker]# docker run -d --name vm3 -p 8080:80 nginx
dd3a11de173e9f90f5beace765f58b6de6832c3af6ecf1c27cfc3b2baf9601c8
三、Container 網路模式:
(1) 查詢 other container(即需要被共享網路環境的容器)的網路 namespace;
(2) 將新建立的 Docker Container(也是需要共享其他網路的容器)的 namespace, 使用other container 的 namespace。 Docker Container 的 other container 網路模式, 可以用來更好的服務於容器間的通訊。 在這種模式下的 Docker Container 可以通過 localhost 來訪問 namespace 下的其他容器,傳輸效率較高。 雖然多個容器共享網路環境,但是多個容器形成的整體依然與宿主機以及其他容器形成網路隔離。 另外,這種模式還節約了一定數量的網路資源。但是需要注意的是, 它並沒有改善容器與宿主機以外世界通訊的情況。
[[email protected] docker]# docker rm vm2
vm2
[[email protected] docker]# docker run -it --name vm2 --net container:vm1 ubuntu
[email protected]:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
[email protected]:/# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
69: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
[email protected]:/# exit
四、None 網路模式:
網路環境為 none,即不為 Docker Container 任何的網路環境。 一旦 Docker Container 採用了none 網路模式 那麼容器內部就只能使用 loopback 網路裝置,不會再有其他的網路資源。 可以說 none 模式為 Docker Container 做了極少的網路設定 但是俗話說得好“少即是多”在沒有網路配置的情況下,作為 Docker 開發者 才能在這基礎做其他無限多可能的網路定製開發。 這也恰巧體現了 Docker 設計理念的開放。 在 none 網路模式下分配固定 ip:netns 是在 linux 中提供網路虛擬化的一個專案 使用 netns 網路空間虛擬化可以在本地虛擬化出多個網路環境 目前 netns 在 lxc 容器中被用來為容器提供網路。 使用 netns 建立的網路空間獨立於當前系統的網路空間 其中的網路裝置以及 iptables 規則 等都是獨立的,就好像進入了另外一個網路一樣。 --------------------- 作者:xbw_linux123 來源:CSDN 原文:https://blog.csdn.net/xbw_linux123/article/details/81873490 版權宣告:本文為博主原創文章,轉載請附上博文連結!
[[email protected] docker]# docker run -it --name vm4 --net none ubuntu
[email protected]:/# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
[[email protected] docker]# docker attach vm4
[email protected]:/# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
75: [email protected]: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 5a:19:45:43:da:d6 brd ff:ff:ff:ff:ff:ff
[[email protected] mnt]# ip link add name veth0 type veth peer name veth1
[[email protected] mnt]# brctl addif docker0 veth0
[[email protected] mnt]# ip link set up veth0
[[email protected] mnt]# ip link set up veth1
[[email protected] mnt]# docker inspect vm4 | grep Pid
"Pid": 21352,
"PidMode": "",
"PidsLimit": 0,
[[email protected] mnt]# cd /proc/21352
[[email protected] 21352]# ls
attr coredump_filter gid_map mountinfo oom_score schedstat status
autogroup cpuset io mounts oom_score_adj sessionid syscall
auxv cwd limits mountstats pagemap setgroups task
cgroup environ loginuid net personality smaps timers
clear_refs exe map_files ns projid_map stack uid_map
cmdline fd maps numa_maps root stat wchan
comm fdinfo mem oom_adj sched statm
[[email protected] 21352]# cd ns/
[[email protected] ns]# ls
ipc mnt net pid user uts
[[email protected] ns]# ip netns add test
[[email protected] ns]# ip netns list
test
[[email protected] ns]# cd /var/run/netns/
[[email protected] netns]# ls
test
[[email protected] netns]# ip netns del test
[[email protected] netns]# ls
[[email protected] netns]# ln -s /proc/21352/ns/net 21352
[[email protected] netns]# ip link set veth1 netns 21352
[[email protected] netns]# ip netns exec 21352 ip link set veth1 name eth0
[[email protected] netns]# ip netns exec 21352 ip link set up dev eth0
[[email protected] netns]# ip netns exec 21352 ip addr add 172.17.0.100/24
Not enough information: "dev" argument is required.
[[email protected] netns]# ip netns exec 21352 ip addr add 172.17.0.100/24 dev eth0
[[email protected] netns]# ip netns exec 21352 ip route add default via 172.17.0.1
[email protected]:/# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
75: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 5a:19:45:43:da:d6 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.100/24 scope global eth0
valid_lft forever preferred_lft forever
[email protected]:/# ping baidu.com
PING baidu.com (220.181.57.216) 56(84) bytes of data.
64 bytes from 220.181.57.216: icmp_seq=1 ttl=52 time=45.1 ms
64 bytes from 220.181.57.216: icmp_seq=2 ttl=52 time=46.9 ms
64 bytes from 220.181.57.216: icmp_seq=3 ttl=52 time=41.2 ms
^C
--- baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 41.276/44.457/46.912/2.357 ms
[[email protected] docker]# docker rm vm1 vm2
vm1
vm2
[[email protected] docker]# docker run -d --name vm1 nginx
1c5af164e3dca1fa48ba3a3afa66eff61509f10f12570c3c3d7368e3c9342853
[[email protected] docker]# docker run -it --name vm2 --net container:vm1 ubuntu
[email protected]:/# netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
[email protected]:/# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
77: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
[email protected]:/# exit
[[email protected] docker]# docker rm vm2
vm2
為vm2建立vm1網路連結,可以在vm2上通過vm1的網路別名,對vm1進行相應操作,實際是在vm2上建立vm1的解析
[[email protected] docker]# docker run -it --name vm2 --link vm1:nginx ubuntu
[email protected]:/# ping nginx
PING nginx (172.17.0.2) 56(84) bytes of data.
64 bytes from nginx (172.17.0.2): icmp_seq=1 ttl=64 time=0.087 ms
64 bytes from nginx (172.17.0.2): icmp_seq=2 ttl=64 time=0.075 ms
^C
--- nginx ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.075/0.081/0.087/0.006 ms
[email protected]:/# vi /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 nginx 1c5af164e3dc vm1
172.17.0.3 a72205944b17
[email protected]:/# env
HOSTNAME=a72205944b17
TERM=xterm
NGINX_ENV_NJS_VERSION=1.15.2.0.2.2-1~stretch
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
NGINX_ENV_NGINX_VERSION=1.15.2-1~stretch
NGINX_NAME=/vm2/nginx
NGINX_PORT_80_TCP_PROTO=tcp
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
SHLVL=1
HOME=/root
NGINX_PORT_80_TCP=tcp://172.17.0.2:80
NGINX_PORT_80_TCP_PORT=80
LESSOPEN=| /usr/bin/lesspipe %s
NGINX_PORT_80_TCP_ADDR=172.17.0.2
LESSCLOSE=/usr/bin/lesspipe %s %s
NGINX_PORT=tcp://172.17.0.2:80
_=/usr/bin/env