docker的基础操作及四种网络形式

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

一个完整的Docker有以下几个部分组成:

  1. dockerClient客户端

  2. Docker Daemon守护进程

  3. Docker Image镜像

  4. DockerContainer容器

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

 

[root@foundation20 mnt]# systemctl start docker

导入镜象

[root@foundation20 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

[root@foundation20 mnt]# docker load -i rhel7.tar 

e1f5733f050b: Loading layer  147.1MB/147.1MB

[root@foundation20 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

查看镜像

[root@foundation20 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

 

[root@foundation20 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.

创建容器

[root@foundation20 mnt]# docker run  -it --name vm1 ubuntu

root@ce9b17aeb721:/# exit

[root@foundation20 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容器

[root@foundation20 mnt]# docker start vm1

vm1

[root@foundation20 mnt]# docker attach vm1 

root@ce9b17aeb721:/# 

root@ce9b17aeb721:/# 

root@ce9b17aeb721:/# exit

进入交互界面

[root@foundation20 mnt]# docker attach vm1                      

read escape sequence                   ctrl+p+q 打入后台

 

[root@foundation20 mnt]# docker run -d --name  vm2 nginx

2d558e44f5cba5eb9439649411e1bbe03d79c96fadfd8fdb2b3ba0ae2d85481b

[root@foundation20 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

默认使用网络对的形式

[root@foundation20 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: veth7df6613@if45: <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

 

root@ce9b17aeb721:/# 

root@ce9b17aeb721:/# 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: eth0@if46: <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

root@ce9b17aeb721:/# exit

查看容器信息

[root@foundation20 mnt]# docker inspect vm2

查看容器历史

[root@foundation20 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 

在容器内执行指令

[root@foundation20 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

 

[root@foundation20 mnt]# vim index.html

 

www.westos.org

将文件拷入容器内

[root@foundation20 mnt]# docker cp index.html vm2:/usr/share/nginx/html

 

[root@foundation20 mnt]# docker attach vm1

root@ce9b17aeb721:/# 

root@ce9b17aeb721:/# uname -r 

3.10.0-514.el7.x86_64

root@ce9b17aeb721:/# touch file{1..20}

root@ce9b17aeb721:/# exit

将容器vm1提交为一个镜像

[root@foundation20 mnt]# docker commit vm1 ubuntu:v1

sha256:9be0a9b6f97c722bcb8f6d10620ac30cf784bb199352b65a69661ac6543284db

 

[root@foundation20 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               

[root@foundation20 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    

 

删除容器

[root@foundation20 mnt]# docker rm vm1

vm1

删除镜像

[root@foundation20 mnt]# docker rmi ubuntu:v1

Untagged: ubuntu:v1

Deleted: sha256:9be0a9b6f97c722bcb8f6d10620ac30cf784bb199352b65a69661ac6543284db

Deleted: sha256:9f242d4309ec44c7c426bb1c729fcb2156a09f562023b23999a57b52d7590590

 

如果创建容器时没有命名,会随机命名     

[root@foundation20 mnt]# docker run  -it ubuntu

root@e14dbb6ea8b3:/# exit

 

[root@foundation20 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

 

[root@foundation20 mnt]# docker start distracted_goldberg 

distracted_goldberg

 

[root@foundation20 mnt]# docker attach distracted_goldberg

root@e14dbb6ea8b3:/# 

root@e14dbb6ea8b3:/# touch file1

root@e14dbb6ea8b3:/# read escape sequence

查看容器文件系统变更

[root@foundation20 mnt]# docker diff e14dbb6ea8b3

A /file1

 

[root@foundation20 mnt]# docker attach distracted_goldberg

root@e14dbb6ea8b3:/# 

root@e14dbb6ea8b3:/# rm -rf file1 

root@e14dbb6ea8b3:/# read escape sequence

 

 

[root@foundation20 mnt]# docker diff e14dbb6ea8b3

进入容器bash的两种方式

[root@foundation20 mnt]# docker run  -it --name vm1 nginx bash

root@4ae20f55cbe3:/# exit

 

[root@foundation20 mnt]# docker start vm1

vm1

[root@foundation20 mnt]# docker exec -it vm1 bash

root@4ae20f55cbe3:/# ^C

root@4ae20f55cbe3:/# exit

导出容器

[root@foundation20 mnt]# docker export distracted_goldberg -o test.tar

导入容器

[root@foundation20 mnt]# docker import test.tar test:v1

sha256:dac6e444ddf390fb1cb2b4bdeffe6941376c19093b5d354a4e456654cc23a85b

 

从网上获取镜像

[root@foundation20 mnt]# vim /etc/docker/daemon.json

 

{

  "registry-mirrors": ["https://w8ujyhgj.mirror.aliyuncs.com"]

}

 

[root@foundation20 mnt]# systemctl daemon-reload 

[root@foundation20 mnt]# systemctl restart docker

查找镜像

[root@foundation20 mnt]# docker search busybox

NAME                        DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED

busybox                     Busybox base image.                             1381                [OK]                

下载镜像

[root@foundation20 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

 

 

[root@foundation20 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/目录下

[root@foundation20 docker]# docker run -d --name vm2 -v /tmp/docker/web/:/usr/share/nginx/html nginx

d259669ae78ba0c80cbb7374101a261350bb9f4df9e56580e9189a984a70d4c7

 

/tmp/docker/data2:/data2:ro  以只读的方式挂载

[root@foundation20 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

 

root@2720639ce8da:/# vi /etc/yum.repos.d/rhel-dvd.repo 

 

[root@foundation20 docker]# docker attach vm3

root@2720639ce8da:/# 

root@2720639ce8da:/# cd data1/

root@2720639ce8da:/data1# touch file1

root@2720639ce8da:/data1# cd ..

root@2720639ce8da:/# cd data2/

root@2720639ce8da:/data2# touch file2

touch: cannot touch 'file2': Read-only file system

root@2720639ce8da:/data2# cd ..

root@2720639ce8da:/# read escape sequence

 

创建容器的volumes

[root@foundation20 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创建容器

[root@foundation20 docker]# docker run -it --name vm4 --volumes-from=dataval ubuntu

root@6f81d3f48005:/# cd data1/

root@6f81d3f48005:/data1# cd ..

root@6f81d3f48005:/# 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 模式由于是在三层 网络上的实现手段,故肯定会影响网络的传输效率。

 

[root@foundation20 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 网络模式容器的端口映射。
 

[root@foundation20 docker]# docker run -it --name vm2 --net host ubuntu

root@foundation20:/# 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

端口映射

[root@foundation20 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 下的其他容器,传输效率较高。 虽然多个容器共享网络环境,但是多个容器形成的整体依然与宿主机以及其他容器形成网络隔离。 另外,这种模式还节约了一定数量的网络资源。但是需要注意的是, 它并没有改善容器与宿主机以外世界通信的情况。
 

[root@foundation20 docker]# docker rm vm2

vm2

[root@foundation20 docker]# docker run -it --name vm2 --net container:vm1 ubuntu

root@f29a7c9fe6b6:/# ls

bin   dev  home  lib64  mnt  proc  run   srv  tmp  var

boot  etc  lib   media  opt  root  sbin  sys  usr

 

root@f29a7c9fe6b6:/# 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: eth0@if70: <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

root@f29a7c9fe6b6:/# 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  
版权声明:本文为博主原创文章,转载请附上博文链接!

[root@foundation20 docker]# docker run -it --name vm4 --net none ubuntu

root@c3b574078d74:/# 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

 

[root@foundation20 docker]# docker attach vm4

root@c3b574078d74:/# 

root@c3b574078d74:/# 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: eth0@if76: <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

 

[root@foundation20 mnt]# ip link add name veth0 type veth peer name veth1

[root@foundation20 mnt]# brctl addif docker0 veth0

[root@foundation20 mnt]# ip link set up veth0

[root@foundation20 mnt]# ip link set up veth1

[root@foundation20 mnt]# docker inspect vm4 | grep Pid

            "Pid": 21352,

            "PidMode": "",

            "PidsLimit": 0,

[root@foundation20 mnt]# cd /proc/21352

[root@foundation20 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

[root@foundation20 21352]# cd ns/

[root@foundation20 ns]# ls

ipc  mnt  net  pid  user  uts

 

[root@foundation20 ns]# ip netns add test

[root@foundation20 ns]# ip netns list

test

[root@foundation20 ns]# cd /var/run/netns/

[root@foundation20 netns]# ls

test

[root@foundation20 netns]# ip netns del test

[root@foundation20 netns]# ls

[root@foundation20 netns]# ln -s /proc/21352/ns/net 21352

 

[root@foundation20 netns]# ip link set veth1 netns 21352

[root@foundation20 netns]# ip netns exec 21352 ip link set veth1 name eth0

[root@foundation20 netns]# ip netns exec 21352 ip link set up dev eth0

[root@foundation20 netns]# ip netns exec 21352 ip addr add 172.17.0.100/24

Not enough information: "dev" argument is required.

[root@foundation20 netns]# ip netns exec 21352 ip addr add 172.17.0.100/24 dev eth0

[root@foundation20 netns]# ip netns exec 21352 ip route add default via 172.17.0.1

 

root@c3b574078d74:/# 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: eth0@if76: <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

 

root@c3b574078d74:/# 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

 

[root@foundation20 docker]# docker rm vm1 vm2

vm1

vm2

[root@foundation20 docker]# docker run  -d --name  vm1 nginx

1c5af164e3dca1fa48ba3a3afa66eff61509f10f12570c3c3d7368e3c9342853

[root@foundation20 docker]# docker run -it --name  vm2 --net container:vm1 ubuntu

root@1c5af164e3dc:/# 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      -               

root@1c5af164e3dc:/# 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: eth0@if78: <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

root@1c5af164e3dc:/# exit

 

[root@foundation20 docker]# docker rm vm2

vm2

为vm2创建vm1网络链接,可以在vm2上通过vm1的网络别名,对vm1进行相应操作,实际是在vm2上创建vm1的解析

[root@foundation20 docker]# docker run -it --name vm2 --link vm1:nginx ubuntu

root@a72205944b17:/# 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

 

root@a72205944b17:/# 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

 

root@a72205944b17:/# 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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值