docker容器技术

 docker简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包括系统。

Docker安装

1.环境准备

在centos7机器上关闭防火墙和SELinux。

关闭firewalld

systemctl stop firewalld

systemctl disable firewalld

关闭selinux

setenforce 0

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

安装Docker

安装必要的依赖包。

yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息。

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新并安装 Docker-CE。

yum makecache fast

yum -y install docker-ce

开启docker服务。

systemctl daemon-reload

systemctl restart docker

systemctl enable docker

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

Docker镜像管理/仓库管理

注册仓库DockerHub

https://hub.docker.com/ 注册账号,登录邮箱激活

登录dockerhub

docker login docker.io

Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.

Username: xmfree      #输入注册的用户名

Password:             #输入密码

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded//表示成功的登入

 搜索镜像

搜索alpine镜像

[root@docker ~]# docker search alpine

NAME                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED

alpine                                 A minimal Docker image based on Alpine Linux…   7107      [OK]       

mhart/alpine-node                      Minimal Node.js built on Alpine Linux           479                  

anapsix/alpine-java                    Oracle Java 8 (and 7) with GLIBC 2.28 over A…   467                  [OK]

frolvlad/alpine-glibc                  Alpine Docker image with glibc (~12MB)          251                  [OK]

alpine/git                             A  simple git container running in alpine li…   163                  [OK]

mvertes/alpine-mongo                   light MongoDB container                         117                  [OK]

yobasystems/alpine-mariadb             MariaDB running on Alpine Linux [docker] [am…   80                   [OK]

alpine/socat                           Run socat command in alpine container           64                   [OK]

搜索nginx镜像

     [root@docker ~]# docker search nginx

NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED

nginx                              Official build of Nginx.                        14447     [OK]       

jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   1965                 [OK]

richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   807                  [OK]

jc21/nginx-proxy-manager           Docker container for managing Nginx proxy ho…   147                  

linuxserver/nginx                  An Nginx container, brought to you by LinuxS…   141                  

tiangolo/nginx-rtmp                Docker image with Nginx using the nginx-rtmp…   113                  [OK]

bitnami/nginx                      Bitnami nginx Docker Image                      94                   [OK]

jlesage/nginx-proxy-manager        Docker container for Nginx Proxy Manager        94                   [OK]

alfg/nginx-rtmp                    NGINX, nginx-rtmp-module and FFmpeg from sou…   89                   [OK]

nginxdemos/hello                   NGINX webserver that serves a simple page co…   66                   [OK]

nginx/nginx-ingress                NGINX Ingress Controller for Kubernetes         48                   

privatebin/nginx-fpm-alpine        PrivateBin running on an Nginx, php-fpm & Al…   46                   [OK]

nginxinc/nginx-unprivileged        Unprivileged NGINX Dockerfiles                  30                   

下载镜像

[root@docker ~]# docker pull alpine

Using default tag: latest

latest: Pulling from library/alpine

801bfaa63ef2: Pull complete

Digest: sha256:3c7497bf0c7af93428242d6176e8f7905f2201d8fc5861f45be7a346b5f23436

Status: Downloaded newer image for alpine:latest

docker.io/library/alpine:latest

下载nginx镜像

[root@docker ~]# docker pull nginx

Using default tag: latest

latest: Pulling from library/nginx

a076a628af6f: Pull complete

0732ab25fa22: Pull complete

d7f36f6fe38f: Pull complete

f72584a26f32: Pull complete

7125e4df9063: Pull complete

Digest: sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa

Status: Downloaded newer image for nginx:latest

docker.io/library/nginx:latest

下载指定tag

[root@docker ~]# docker pull alpine:3.12.3

3.12.3: Pulling from library/alpine

Digest: sha256:3c7497bf0c7af93428242d6176e8f7905f2201d8fc5861f45be7a346b5f23436

Status: Downloaded newer image for alpine:3.12.3

docker.io/library/alpine:3.12.3

 查看本地镜像

[root@docker ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

alpine       3.12.3    389fef711851   2 weeks ago   5.58MB

alpine       latest    389fef711851   2 weeks ago   5.58MB

nginx        latest    ae2feff98a0c   3 weeks ago   133MB

 给镜像打标签

 [root@docker ~]# docker tag 389fef711851 docker.io/xmfree/alpine:v3.12.3

[root@docker ~]# docker images

REPOSITORY      TAG       IMAGE ID       CREATED       SIZE

alpine          3.12.3    389fef711851   2 weeks ago   5.58MB

alpine          latest    389fef711851   2 weeks ago   5.58MB

xmfree/alpine   v3.12.3   389fef711851   2 weeks ago   5.58MB

nginx           latest    ae2feff98a0c   3 weeks ago   133MB

推送镜像

[root@docker ~]# docker push docker.io/xmfree/alpine:v3.12.3

The push refers to repository [docker.io/xmfree/alpine]

777b2c648970: Mounted from library/alpine

v3.12.3: digest: sha256:074d3636ebda6dd446d0d00304c4454f468237fdacf08fb0eeac90bdbfa1bac7 size: 528

 删除镜像

[root@docker ~]# docker images

REPOSITORY      TAG       IMAGE ID       CREATED       SIZE

alpine          3.12.3    389fef711851   2 weeks ago   5.58MB

alpine          latest    389fef711851   2 weeks ago   5.58MB

xmfree/alpine   v3.12.3   389fef711851   2 weeks ago   5.58MB

nginx           latest    ae2feff98a0c   3 weeks ago   133MB

[root@docker ~]# docker rmi 389fef711851

Error response from daemon: conflict: unable to delete 389fef711851 (must be forced) - image is referenced in multiple repositories

[root@docker ~]# docker rmi -f 389fef711851

Untagged: alpine:3.12.3

Untagged: alpine:latest

Untagged: alpine@sha256:3c7497bf0c7af93428242d6176e8f7905f2201d8fc5861f45be7a346b5f23436

Untagged: xmfree/alpine:v3.12.3

Untagged: xmfree/alpine@sha256:074d3636ebda6dd446d0d00304c4454f468237fdacf08fb0eeac90bdbfa1bac7

Deleted: sha256:389fef7118515c70fd6c0e0d50bb75669942ea722ccb976507d7b087e54d5a23

Deleted: sha256:777b2c648970480f50f5b4d0af8f9a8ea798eea43dbcf40ce4a8c7118736bdcf

 通过容器创建镜像

 通过镜像启动容器

 查看镜像

[root@docker ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

nginx        latest    ae2feff98a0c   3 weeks ago   133MB

 根据镜像启动容器

[root@docker ~]# docker run -ti --name nginx -d nginx

eb49e0d3321a06ddc871251aaf1026dbcde56dc871d4508c9fe72dc0b079822d

[root@docker ~]# docker ps

CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES

eb49e0d3321a   nginx     "/docker-entrypoint.…"   4 seconds ago   Up 3 seconds   80/tcp    nginx

 根据启动的容器创建新的镜像

    [root@docker ~]# docker commit -a "cool" -m "this is test" eb49e0d3321a nginx:1.0

sha256:caf7beb9af858d3c8884655ce468822fe7eeb643a85cc41fcb8f835d8974fcb7

    [root@docker ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED         SIZE

nginx        1.0       caf7beb9af85   3 seconds ago   133MB

nginx        latest    ae2feff98a0c   3 weeks ago     133MB

docker commit : 从容器创建一个新的镜像

-a:提交的镜像作者;

-c:使用Dockerfile指令来创建镜像;

-m:提交时的说明文字;

-p:在commit时,将容器暂停。

Docker容器管理

运行容器

[root@docker ~]# docker run -dti --name nginx1.0 -p 80:80 nginx

9143ce0a31e7ae1b9f980aabab639529a148ea630a15df571e7076f6c5df9519

[root@docker ~]# docker ps

CONTAINER ID   IMAGE     COMMAND                  CREATED             STATUS             PORTS                NAMES

9143ce0a31e7   nginx     "/docker-entrypoint.…"   2 seconds ago       Up 2 seconds       0.0.0.0:80->80/tcp   nginx1.0

eb49e0d3321a   nginx     "/docker-entrypoint.…"   About an hour ago   Up About an hour   80/tcp               nginx

docker run : 从容器创建一个新的镜像

-i:交互式操作;

-t:终端;

-d:容器在后台运行;

-p:端口映射;

--name:为容器指定一个名称;

指明了-d运行镜像,会返回容器id;如果不指明-d运行镜像,会打印出catalina.out的日志,在[crtl+c]后,容器即停止运行。

终止容器

[root@docker ~]# docker ps

CONTAINER ID   IMAGE     COMMAND                  CREATED             STATUS             PORTS                NAMES

9143ce0a31e7   nginx     "/docker-entrypoint.…"   7 minutes ago       Up 7 minutes       0.0.0.0:80->80/tcp   nginx1.0

eb49e0d3321a   nginx     "/docker-entrypoint.…"   About an hour ago   Up About an hour   80/tcp               nginx

[root@docker ~]# docker stop 9143ce0a31e7 eb49e0d3321a

9143ce0a31e7

eb49e0d3321a

[root@docker ~]# docker ps

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

[root@docker ~]# docker ps -a

CONTAINER ID   IMAGE     COMMAND                  CREATED             STATUS                     PORTS     NAMES

9143ce0a31e7   nginx     "/docker-entrypoint.…"   9 minutes ago       Exited (0) 4 seconds ago             nginx1.0

eb49e0d3321a   nginx     "/docker-entrypoint.…"   About an hour ago   Exited (0) 4 seconds ago             nginx

启动容器

[root@docker ~]# docker ps -a

CONTAINER ID   IMAGE     COMMAND                  CREATED             STATUS                          PORTS     NAMES

9143ce0a31e7   nginx     "/docker-entrypoint.…"   10 minutes ago      Exited (0) About a minute ago             nginx1.0

eb49e0d3321a   nginx     "/docker-entrypoint.…"   About an hour ago   Exited (0) About a minute ago             nginx

[root@docker ~]# docker start 9143ce0a31e7

9143ce0a31e7

[root@docker ~]# docker ps

CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS         PORTS                NAMES

9143ce0a31e7   nginx     "/docker-entrypoint.…"   10 minutes ago   Up 4 seconds   0.0.0.0:80->80/tcp   nginx1.0

docker container start [CONTAINER ID]  启动容器

docker container stop [CONTAINER ID]  终止容器

docker start $(docker ps -aq)  --备注:启动所有 docker 容器

进入/退出容器

docker exec -it [CONTAINER ID] bash   进入容器

 [root@docker ~]# docker ps

CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS        PORTS                NAMES

9143ce0a31e7   nginx     "/docker-entrypoint.…"   17 hours ago   Up 17 hours   0.0.0.0:80->80/tcp   nginx1.0

[root@docker ~]# docker exec -it 9143ce0a31e7 /bin/sh

# ls

bin   dev                  docker-entrypoint.sh  home  lib64  mnt  proc  run   srv  tmp  var

boot  docker-entrypoint.d  etc                   lib   media  opt  root  sbin  sys  usr

# exit          #退出容器

[root@docker ~]#

容器导出和导入

容器导出

#这样将导出容器快照到本地文件

docker export [CONTAINER ID] > [tar file]

[root@docker ~]# docker ps

CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS        PORTS                NAMES

9143ce0a31e7   nginx     "/docker-entrypoint.…"   18 hours ago   Up 17 hours   0.0.0.0:80->80/tcp   nginx1.0

[root@docker ~]# docker export 9143ce0a31e7 > nginx1.0.tar

[root@docker ~]# ls

anaconda-ks.cfg  nginx1.0.tar

容器导入

#从容器快照文件中再导入为镜像

cat [tar file] | docker import - [name:tag]

[root@docker ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE

nginx        1.0       caf7beb9af85   19 hours ago   133MB

alpine       latest    389fef711851   3 weeks ago    5.58MB

nginx        latest    ae2feff98a0c   3 weeks ago    133MB

[root@docker ~]# cat nginx1.0.tar | docker import - nginx:1.0.1

sha256:6a652e89d56592369757470d6874e3567d4cda3b112f8cacba3e2b186486babd

[root@docker ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED         SIZE

nginx        1.0.1     6a652e89d565   5 seconds ago   131MB

nginx        1.0       caf7beb9af85   19 hours ago    133MB

alpine       latest    389fef711851   3 weeks ago     5.58MB

nginx        latest    ae2feff98a0c   3 weeks ago     133MB

删除容器

#删除终止状态的容器

docker rm [CONTAINER ID]

#删除所有处于终止状态的容器

docker container prune

#删除运行中的容器

docker rm -f [CONTAINER ID]

[root@docker ~]# docker ps

CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS        PORTS                NAMES

9143ce0a31e7   nginx     "/docker-entrypoint.…"   18 hours ago   Up 18 hours   0.0.0.0:80->80/tcp   nginx1.0

[root@docker ~]# docker ps -a

CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS                    PORTS                NAMES

9143ce0a31e7   nginx     "/docker-entrypoint.…"   18 hours ago   Up 18 hours               0.0.0.0:80->80/tcp   nginx1.0

eb49e0d3321a   nginx     "/docker-entrypoint.…"   19 hours ago   Exited (0) 18 hours ago                        nginx

[root@docker ~]# docker rm eb49e0d3321a

eb49e0d3321a

[root@docker ~]# docker ps

CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS        PORTS                NAMES

9143ce0a31e7   nginx     "/docker-entrypoint.…"   18 hours ago   Up 18 hours   0.0.0.0:80->80/tcp   nginx1.0

[root@docker ~]# docker rm -f 9143ce0a31e7

9143ce0a31e7

[root@docker ~]# docker ps

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

Docker数据管理

数据卷实践

[root@docker ~]# mkdir /data/           #创建目录

[root@docker ~]# echo "test" > /data/test.txt     #创建一个test文件

[root@docker ~]# docker run -dti --name test1 -v /data/:/data/ nginx   #启动一个容器,挂载数据卷

WARNING: IPv4 forwarding is disabled. Networking will not work.

3f2f8a5fd9f6665cb2f0f839fe0fb40a57c922ba499d6a1eaaef426d19f2807a

[root@docker ~]# docker ps

CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES

3f2f8a5fd9f6   nginx     "/docker-entrypoint.…"   21 seconds ago   Up 18 seconds   80/tcp    test1

[root@docker ~]# docker exec -it 3f2f8a5fd9f6 /bin/bash

root@3f2f8a5fd9f6:/data# cat /data/test.txt

test

注意:

1、Docker挂载数据卷的默认读写权限(rw),用户可以通过ro设置为只读,格式:[宿主机文件]:[容器文件]:ro

2、如果直接挂载一个文件到容器,使用文件工具进行编辑,可能会造成文件的改变,从Docker1.1.0起,这会导致报错误信息。所以推荐的方式是直接挂载文件所在的目录。

数据卷容器

数据卷容器简介

数据卷容器需要再多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器也是一个容器,但是它的目的是专门用来提供数据卷供其他容器挂载。

数据卷容器(Data Volume Containers):使用特定容器维护数据卷。

简单点:数据卷容器就是为其他容器提供数据交互存储的容器。

数据卷容器实践

命令格式:

Docker run --help

-v,--volumes-from list

数据卷容器操作流程:

如果使用数据卷容器,在多个容器间共享数据,并永久保存这些数据,需要有一个规范的流程才能做的到:

1、创卷数据卷容器

2、其他容器挂载数据卷容器

注意:数据卷容器自身并不需要启动,但是启动的时候仍然可以进行数据卷容器的工作。

创建一个数据卷容器

命令格式:

docker create -v [容器数据卷目录] --name [容器名字] [镜像名称]

执行效果:

[root@docker ~]# docker create -v /data1 --name v-data1 nginx  

6da6aff079abae6ffbfb2c45388370927bd80da11ae9c6d6d1532e39bc7b174c

[root@docker ~]# docker ps -a

CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS    PORTS     NAMES

6da6aff079ab   nginx     "/docker-entrypoint.…"   3 seconds ago   Created             v-data1

[root@docker ~]#

创建两个容器,同时挂载数据卷容器

docker run --volumes-from [数据卷容器id/name] -dti --name [容器名字] [镜像名称] [命令(可选)]

创建v01容器:

[root@docker ~]# docker run --volumes-from v-data1 -dti --name v01 nginx

1390a43c879a9e715cffdb76a96eafd188e7e3ef1bff0ef0d2a5e9ec6d089375

创建v02容器

[root@docker ~]# docker run --volumes-from v-data1 -dti --name v02 nginx

7685c28d94753441721be5741064685092d6cda7d46beb44ef46080ae678545e

[root@docker ~]# docker ps -a

CONTAINER ID   IMAGE     COMMAND                  CREATED       STATUS       PORTS     NAMES

7685c28d9475   nginx     "/docker-entrypoint.…"   4 hours ago   Up 4 hours   80/tcp    v02

1390a43c879a   nginx     "/docker-entrypoint.…"   4 hours ago   Up 4 hours   80/tcp    v01

6da6aff079ab   nginx     "/docker-entrypoint.…"   4 hours ago   Created                v-data1

确认卷容器共享

进入v01,操作数据卷容器:

[root@docker ~]# docker exec -it 1390a43c879a /bin/bash

root@1390a43c879a:/# ls /data1

root@1390a43c879a:/# echo 'v01'>/data1/v01.txt

root@1390a43c879a:/# exit

exit

进入v02,确认数据卷:

[root@docker ~]# docker exec -it 7685c28d9475 /bin/bash

root@7685c28d9475:/# echo 'v02'>/data1/v02.txt

root@7685c28d9475:/# ls /data1/  

v01.txt  v02.txt

root@7685c28d9475:/# exit

exit

Docker网络管理

网络模式

bridge模式

当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。

从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中。可以通过brctl show命令查看。

bridge模式是docker的默认网络模式,不写--net参数,就是bridge模式。使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看。

创建一个bridge网络的容器

[root@docker ~]# docker run -it busybox

Unable to find image 'busybox:latest' locally

latest: Pulling from library/busybox

4c892f00285e: Pull complete

Digest: sha256:e1488cb900233d035575f0a7787448cb1fa93bed0ccc0d4efc1963d7d72a8f17

Status: Downloaded newer image for busybox:latest

/ #

host模式

如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。

创建一个host网络的容器

[root@docker ~]# docker run -it --network host busybox

/ # ifconfig

docker0   Link encap:Ethernet  HWaddr 02:42:77:58:6B:70  

          inet addr:172.17.0.1  Bcast:172.17.255.255  Mask:255.255.0.0

          inet6 addr: fe80::42:77ff:fe58:6b70/64 Scope:Link

          UP BROADCAST MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:0 (0.0 B)  TX bytes:438 (438.0 B)

ens33     Link encap:Ethernet  HWaddr 00:0C:29:4E:AF:EE  

          inet addr:192.168.137.3  Bcast:192.168.137.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe4e:afee/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:839973 errors:0 dropped:0 overruns:0 frame:0

          TX packets:261509 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:1073840334 (1.0 GiB)  TX bytes:29048386 (27.7 MiB)

lo        Link encap:Local Loopback  

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:5947 errors:0 dropped:0 overruns:0 frame:0

          TX packets:5947 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:2251874 (2.1 MiB)  TX bytes:2251874 (2.1 MiB)

通过以上实验得知,该容器的网络与宿主机一样,直接使用Docker host的网络,最大的好处就是性能,如果容器对网络传输效率有较高要求,则可以选择host网络。当然不变之处就是牺牲一些灵活性,比如要考虑端口冲突风问题,Docker host上已经使用的端口就不能再用了。

none模式

使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。

这种网络模式下容器只有lo回环网络,没有其他网卡。none模式可以在容器创建时通过--network=none来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。

创建一个none网络的容器

[root@docker ~]# docker run -it --network none busybox

/ # ifconfig

lo        Link encap:Local Loopback  

          inet addr:127.0.0.1  Mask:255.0.0.0

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ #

比如某个容器的唯一用途是生产随机密码,就可以放到none网络中避免密码被窃取。

自定义网络模式

创建my_net网络,系统默认IP地址段自动向后递增

[root@docker ~]# docker network create --driver bridge my_net

4b2f6fc053a2e255d8f27c1a9d81cb44406a2c5ed1aeed8f7c95f806c5cac5e4

[root@docker ~]# ifconfig

br-4b2f6fc053a2: flags=4099  mtu 1500

        inet 172.18.0.1  netmask 255.255.0.0  broadcast 172.18.255.255

        ether 02:42:02:8e:37:d1  txqueuelen 0  (Ethernet)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

docker0: flags=4099  mtu 1500

        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255

        inet6 fe80::42:77ff:fe58:6b70  prefixlen 64  scopeid 0x20

        ether 02:42:77:58:6b:70  txqueuelen 0  (Ethernet)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 5  bytes 438 (438.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33: flags=4163  mtu 1500

        inet 192.168.137.3  netmask 255.255.255.0  broadcast 192.168.137.255

        inet6 fe80::20c:29ff:fe4e:afee  prefixlen 64  scopeid 0x20

        ether 00:0c:29:4e:af:ee  txqueuelen 1000  (Ethernet)

        RX packets 840094  bytes 1073852046 (1.0 GiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 261572  bytes 29060974 (27.7 MiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::1  prefixlen 128  scopeid 0x10

        loop  txqueuelen 1  (Local Loopback)

        RX packets 5947  bytes 2251874 (2.1 MiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 5947  bytes 2251874 (2.1 MiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

使用自定义网络创建容器

[root@docker ~]# docker run --network my_net -it busybox

/ # ifconfig

eth0      Link encap:Ethernet  HWaddr 02:42:AC:12:00:02  

          inet addr:172.18.0.2  Bcast:172.18.255.255  Mask:255.255.0.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:11 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:946 (946.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  

          inet addr:127.0.0.1  Mask:255.0.0.0

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值