欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Docker初级学习指南

发布时间:2023/12/14 编程问答 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Docker初级学习指南 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Docker技术探讨

跟着B站狂神学习的笔记,若有不足请多担待!!!

Docker安装

1.卸载旧版

$ sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

去查官网吧

Docker run的运行流程图

docker 底层原理

Docker是一个Client-Server结构的体系,Docker的守护进程运行在主机上。通过Socket从客户端访问!

DockerServer接收到Docker-Client的指令,就会去执行这个命令!

Docker的常用命令

帮助命令

docker version #显示docker的版本信息 docker info #显示docker的系统信息,包括镜像和容器的数量 docker 命令 --help #万能命令

帮助文档的地址:https://docs.docker.com/engine/reference

镜像命令

  • docker images #查看本主机的所有镜像
  • docker images #查看本主机的所有镜像REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest bf756fb1ae65 11 months ago 13.3kBREPOSITORY 镜像的仓库源 TAG 镜像的标签 IMAGE ID 镜像的ID CREATED 创建时间 SIZE 镜像的大小
  • docker search #搜索镜像
  • #搜索仓库中mysql收藏数大于3000的 docker search mysql --filter=STARS=3000
  • docker pull 镜像名 #下载镜像
  • #仓库中下载mysql的镜像 docker pull mysql#指定版本下载 docker pull mysql:5.7
  • docker rmi 删除镜像
  • #删除指定的镜像id docker rmi -f 镜像id #删除多个镜像id docker rmi -f 镜像id1 镜像id2 镜像id3 #删除全部的镜像id docker rmi -f $(docker images -aq)

    容器命令

    #有了镜像才可以创建容器

    1.运行容器命令

    docker run [参数] 镜像名称#参数说明 --name="名字" 指定容器名字 -d 后台方式运行容器 -it 以交互方式运行,进入容器查看内容 -p 指定容器的端口 -P 随机指定端口#-p参数详细说明 -p ip:主机端口:容器端口 #配置主机端口映射到容器端口 -p 容器端口 #指定容器端口 -p 主机端口:容器端口 #配置主机端口映射容器端口

    示例1:进入centos容器,以交互模式进入

    docker run -it centos /bin/bash #退出容器命令 exit #停止并退出容器 快捷键 ctrl+P+Q #不停止容器退出

    2.退出容器命令

    exit #停止并退出容器 快捷键 ctrl+P+Q #不停止容器退出

    3.列出运行过的容器命令

    docker ps #列出当前正在运行的容器options: -a #列出所有容器的运行记录 -n=? #显示最近创建的n个容器 -q #只显示容器的编号

    4.容器删除命令

    docker rm 容器id #删除指定的容器,不能删除正在运行的容器, docker rm -f $(docker ps -aq) #删除所有的容器 docker ps -a -q|xargs docker rm #删除所有的容器

    5.启动和停止容器命令

    docker start 容器id #启动容器 docker restart 容器id #重启容器 docker stop 容器id #停止当前运行的容器 docker kill 容器id #强制停止当前的容器

    常用其他命令

    1.容器日志的查看

    docker logs --help #帮助信息 Options:--details Show extra details provided to logs-f, --follow Follow log output--since string Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)-n, --tail string Number of lines to show from the end of the logs (default "all")-t, --timestamps Show timestamps--until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)

    常用命令

    docker logs -tf 容器id #查看容器日志信息 -t #显示时间戳 -f #输出日志信息 --tail #显示num条日志 例如 docker logs -tf --tail 10 容器id #显示容器十条日志

    NOTE

    docker容器后台运行,必须要有一个前台的进程,否则会字段停止 #编写shell脚本循环执,使得centos容器保持运行状态 docker run -d centos /bin/sh -c "while true;do echo hi;sleep 5;done"

    2.查看容器进程信息

    docker top 容器idUID PID PPID C STIME TTY CMD

    3.查看容器的元数据

    docker inspect 容器id

    4.进入当前正在运行的容器

    docker exec 容器id #进入容器,新开一个终端,可以在里面操作 docker attach 容器id #进入容器正在执行的终端,不会启动新的终端例子 docker exec -it 容器id /bin/bash #新开一个终端,以交互模式进入

    5.拷贝容器上的文件到本地

    docker cp 容器id:容器中路径 本地路径 例如 docker cp 容器id:/home/test.txt /home #将容器中的/home/test.txt文件复制到本地home目录下

    小结

    作业练习

    作业一:安装Nginx

    第一步 search 镜像docker search nginx第二步 pull 下载镜像docker pull nginx第三步 查看是否下载成功docker images第三步 run 通过镜像启动容器 以后台方式运行 并将端口映射到本机3344端口docker run --name=nginx01 -d -p 3344:80 nginx

    Docker镜像讲解

    镜像是什么

    镜像(image)是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需要的所有内容,包括代码、库、环境变量和配置文件。

    所有的应用,直接打包docker镜像,就可以直接跑起来!

    如何得到镜像:

    • 从远程仓库下载
    • 朋友拷贝给你
    • 自己制作一个镜像DockerFile

    Docker镜像加载原理

    UnionFS(联合文件系统)

    Union文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。

    **特性:**一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终文件系统包含所有底层的文件和目录

    commit镜像

    打包自己的镜像,将镜像层与容器层打包成新的镜像(image)

    命令

    docker commit -m="描述信息" -a="作者" 容器id 镜像名:[TAG版本]例如 docker commit -m="message" -a="tyh" 容器id centos_01:1.0

    容器数据卷

    什么是容器数据卷

    为了解决什么问题?

    如果数据都在容器中,那么容器被删除,数据也会跟着被删除! 需求:数据可以持久化

    例如:MySQL容器被删除,数据库数据也会丢失!因此,希望 Mysql数据可以存储到本地!

    容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地!

    这就是卷技术!目录的挂载,将容器与本地打通数据共享的通道!

    一句话:容器中数据的持久化和同步操作!

    使用数据卷

    方法一:直接使用命令来挂载 -v

    docker run -v 主机目录:容器内目录 镜像名 例如 docker run -it -v 主机目录:容器内目录 镜像名 /bin/bashdocker run -it -v /tmp/test/:/home --privileged=true centos /bin/bash

    查看是否挂载成功

    docker inspect 容器id #查看容器元数据

    "Mounts": [{"Type": "bind","Source": "/home", #主机目录 "Destination": "/home", #容器目录"Mode": "","RW": true,"Propagation": "rprivate"}],

    在宿主机上创建文件

    Note

    在centos测试时,出现 ls: cannot open directory .: Permission denied原因docker权限不够 解决办法: 加上 --privileged=true


    具名和匿名挂载

    匿名挂载

    #匿名挂载 -v 容器内路径 docker run -d -P --name nginx01 -v /ect/nginx nginx[root@localhost test]# docker run -d -v /ect/nginx --name=nginx01 nginx 67e8dbb1b92ec3294ab5d3c3f05efc756fba5a0b00037747c5ab1420f07c8368#查看所有的volume的情况 docker volume ls [root@localhost test]# docker volume ls DRIVER VOLUME NAME local ab41b5d21a8f442ca82992c86411115265e4def480d1a60fbd1dbed57dc13653

    具名挂载

    #具名挂载[root@localhost test]# docker run -d -v tyhdevolume:/ect/nginx --name=nginx02 nginx 39c51163b75cd352f4f4594a32a8221b2d20469e7894cb403f24c833a1ba7842#查看具名挂载信息 [root@localhost test]# docker volume inspect tyhdevolume [{"Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/tyhdevolume/_data", #宿主机内路径"Name": "tyhdevolume","Options": {},"Scope": "local"} ]

    所有docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/xxxx/_data

    匿名挂载具名挂载区别

    #区别-v 容器内路径 #匿名挂载 -v 卷名:容器内路径 #具名挂载 -v 主机目录:容器内目录 #指定路径挂载

    扩展

    #通过 -v 容器内路径:ro rw 改变读写权限 ro readonly #只读 rw readwrite #只写docker run -d -v tyhdevolume:/ect/nginx:ro --name=nginx02 nginx docker run -d -v tyhdevolume:/ect/nginx:rw --name=nginx02 nginx#ro 只能通过宿主机来操作,容器内部无法操作 #rw(默认) 都可以操作

    数据卷容器

    容器之间通过挂载卷实现数据共享,数据共享方式为值拷贝。一个容器坏了不会影响其他挂载的容器中的数据

    --volumes-from #例如 docker run -d -v /ect/nginx --name=nginx01 nginx docker run -d --name=nginx02 --volumes-from nginx01 nginx

    Dockerfile

    DockerFile介绍

    dockerfile是用来构建docker镜像的文件!命令参数脚本

    构建步骤

    1.编写一个dockerfile文件

    2.docker build 构建成为一个镜像

    3.docker run 运行镜像

    4.docker push 发布镜像

    DockerFile构建过程

    基础知识

  • 每个保留关键字(指令)都是必须是大写字母
  • 执行从上到下顺序执行
  • #表示注释
  • 每一个指令都会创建提交一个新的镜像层,并提交
  • DockerFile的指令

    FROM #基础镜像 MAINTAINER #镜像的创建者,格式:姓名+邮箱 RUN #镜像构建的时候需要运行的命令 ADD #添加其他镜像内容 WORKDIR #镜像的工作目录 VOLUME #挂载的目录 EXPOSE #保留端口配置 CMD #指定这个容器启动的时候要运行的命令,只有最好一个会生效,可被替代 ENTRYPOINT #指定这个容器启动的时候要运行的命令,可以追加命令 ONBUILD #当被继承时触发 COPY #将文件拷贝到镜像中 ENV #构建的时候设置环境变量

    实战测试

    构建自己的centos

    #1.编写Dockerfile [root@localhost dockertest]# cat Dockerfile FROM centos MAINTAINER tyh<2445275333@qq.com>ENV MYPATH /usr/local WORKDIR $MYPATHCMD ["touch","test.txt"] CMD ["/bin/bash"]#2.运行Dockerfile构建镜像 #命令 docker build -f dockerfile文件路径 -t 镜像名:[tag] .#note: dockerfile 默认路径为 /PATH/Dockerfiledocker build -t tyhtest02 . Sending build context to Docker daemon 2.56 kB Step 1/6 : FROM centos---> 5d0da3dc9764 Step 2/6 : MAINTAINER tyh<2445275333@qq.com>---> Using cache---> f5a30999da81 Step 3/6 : ENV MYPATH /usr/local---> Using cache---> fc250ea357bc Step 4/6 : WORKDIR $MYPATH---> Using cache---> c809311c8c4a Step 5/6 : CMD touch test.txt---> Running in b8a6cee1daea---> 3ea70282d6bf Removing intermediate container b8a6cee1daea Step 6/6 : CMD /bin/bash---> Running in 9764d157d463---> ad8ee412e639 Removing intermediate container 9764d157d463 Successfully built ad8ee412e639

    CMD和ENTRYPOINT的区别

    https://blog.csdn.net/u010900754/article/details/78526443

    发布自己的镜像

    DockerHub

    1.地址 https://hub.docker.com/注册自己的账号!

    2.确定这个账号可以登录

    3.在服务器上提交自己的镜像

    [root@localhost dockertest]# docker login --helpUsage: docker login [OPTIONS] [SERVER]Log in to a Docker registryOptions:--help Print usage-p, --password string Password-u, --username string Username

    4.登录完毕后就可以提交镜像了,就是一步docker push

    登录 #docker login -u username发布 #docker push 镜像name:[tag]例如 #docker push tyhcentos:1.0扩展 #docker tag 镜像id 别名 #给镜像起别名

    小结

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EzuwIbrj-1647163637162)(F:\my_notebook\java_se\image\image-20220312204644430.png)]

    Docker网络

    理解Docker0

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5f0PwZMF-1647163637163)(F:\my_notebook\java_se\image\image-20220312210452465.png)]

    容器互联–link(不建议使用)

    问题:能否通过容器名直接进行网络访问

    1.#搭建两个安装了ping命令的nginx服务器 [root@localhost dockertest]# docker run -d --name nginx01 nginx_with_ping:1.0 89b95b32fb596d63c18ba2bd57f7587d02308442f545597a44c5adb431fd4f0e [root@localhost dockertest]# docker run -d --name nginx02 nginx_with_ping:1.0 05002226827a6b6892561cf8583c53761b763da8a6f7392479653e3984ced22d2.#nginx02直接ping nginx01 [root@localhost dockertest]# docker exec -it nginx02 ping nginx01 ping: nginx01: Name or service not known #未能ping通3.#采用--link nginx01 搭建nginx03 [root@localhost dockertest]# docker run -d --name nginx03 --link nginx01 nginx_with_ping:1.0 fbd09b5410ba9131753ed1b72765722ebf2d2afc8aba6152d9c3567f2ca23b164.#采用nginx03直接去ping nginx01 [root@localhost dockertest]# docker exec -it nginx03 ping nginx01 PING nginx01 (172.17.0.2) 56(84) bytes of data. 64 bytes from nginx01 (172.17.0.2): icmp_seq=1 ttl=64 time=0.187 ms 64 bytes from nginx01 (172.17.0.2): icmp_seq=2 ttl=64 time=1.24 ms 64 bytes from nginx01 (172.17.0.2): icmp_seq=3 ttl=64 time=0.091 ms 64 bytes from nginx01 (172.17.0.2): icmp_seq=4 ttl=64 time=0.061 ms 64 bytes from nginx01 (172.17.0.2): icmp_seq=5 ttl=64 time=0.083 ms 64 bytes from nginx01 (172.17.0.2): icmp_seq=6 ttl=64 time=0.063 ms 64 bytes from nginx01 (172.17.0.2): icmp_seq=7 ttl=64 time=0.064 ms ^C --- nginx01 ping statistics --- 7 packets transmitted, 7 received, 0% packet loss, time 6008ms rtt min/avg/max/mdev = 0.061/0.256/1.244/0.405 ms#结果显示可以ping通#为什么呢?#查看nginx03下的/etc/hosts [root@localhost dockertest]# docker exec -it nginx03 cat /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 nginx01 89b95b32fb59 #将172.17.0.2 与 nginx01进行绑定 172.17.0.4 fbd09b5410ba#通过绑定域名 因此可以ping nginx01

    探究:docker0 中的network信息

    [root@localhost dockertest]# docker network inspect bridge [{"Name": "bridge","Id": "3b16bc1d45be914edc8d8bf3afc673c25a222b64090e8b85c0a908ad27c17185","Created": "2022-03-12T16:09:54.910339931+08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": null,"Config": [{"Subnet": "172.17.0.0/16","Gateway": "172.17.0.1"}]},"Internal": false,"Attachable": false,"Containers": {"05002226827a6b6892561cf8583c53761b763da8a6f7392479653e3984ced22d": {"Name": "nginx02","EndpointID": "95a3e4700d9063021a17bbaa951622789b29ef8c186b4bb0dc5749916e73a609","MacAddress": "02:42:ac:11:00:03","IPv4Address": "172.17.0.3/16","IPv6Address": ""},"89b95b32fb596d63c18ba2bd57f7587d02308442f545597a44c5adb431fd4f0e": {"Name": "nginx01","EndpointID": "660e4ef439ef83dd985367f03124a6267b963dc961920342a9e36f94bfc312f5","MacAddress": "02:42:ac:11:00:02","IPv4Address": "172.17.0.2/16","IPv6Address": ""},"fbd09b5410ba9131753ed1b72765722ebf2d2afc8aba6152d9c3567f2ca23b16": {"Name": "nginx03","EndpointID": "cd233724f7831d52d1b388f4fd3f2a49836a68426c91cc8ebb5d674d70e028c6","MacAddress": "02:42:ac:11:00:04","IPv4Address": "172.17.0.4/16","IPv6Address": ""}},"Options": {"com.docker.network.bridge.default_bridge": "true","com.docker.network.bridge.enable_icc": "true","com.docker.network.bridge.enable_ip_masquerade": "true","com.docker.network.bridge.host_binding_ipv4": "0.0.0.0","com.docker.network.bridge.name": "docker0","com.docker.network.driver.mtu": "1500"},"Labels": {}} ]#docker0 中存放了nginx01-03 的ip信息,起到路由转发的作用 #docker0的局限性,无法通过容器名直接连通

    自定义网络

    查看docker网络信息

    #docker network ls [root@localhost dockertest]# docker network ls NETWORK ID NAME DRIVER SCOPE 3b16bc1d45be bridge bridge local 9dc950432393 host host local 3d4a887d8804 none null local

    网络模式

    bridge:桥接docker(默认,自身搭建网络也使用bridge模式)

    none:不配置网络

    host:和宿主机共享网络

    container:容器网络连通

    创建网络

    #命令 docker network creat [options] 网络名 #docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 网络名#1.搭建自己的网络 [root@localhost dockertest]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 tyhnet f3fa1bcb0dfceb65a3859044910320e81f9cebd5f8f06e6e77f921424fedb6e0#2.查看网络信息 [root@localhost dockertest]# docker network ls NETWORK ID NAME DRIVER SCOPE 3b16bc1d45be bridge bridge local 9dc950432393 host host local 3d4a887d8804 none null local f3fa1bcb0dfc tyhnet bridge local#3.查看tyhnet的元数据 [root@localhost dockertest]# docker network inspect tyhnet [{"Name": "tyhnet","Id": "f3fa1bcb0dfceb65a3859044910320e81f9cebd5f8f06e6e77f921424fedb6e0","Created": "2022-03-13T16:54:58.181885395+08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "192.168.0.0/16","Gateway": "192.168.0.1"}]},"Internal": false,"Attachable": false,"Containers": {},"Options": {},"Labels": {}} ]#哈哈哈 配置成功 #4.在tyhnet中创建两个nginx服务器 [root@localhost dockertest]# docker run -d --name nginx04 --net tyhnet nginx_with_ping:1.0 8d9229f120c28e7e20cbf8c2f86e9c28085e659cc4fcfc2d22619eb54f243671 [root@localhost dockertest]# docker run -d --name nginx05 --net tyhnet nginx_with_ping:1.0 35d0cfc52ade916815ab3e4531189b075192b75e7aeb6c143ea57df35aef636d#5.查看tyhnet网络信息 [root@localhost dockertest]# docker network inspect tyhnet [{"Name": "tyhnet","Id": "f3fa1bcb0dfceb65a3859044910320e81f9cebd5f8f06e6e77f921424fedb6e0","Created": "2022-03-13T16:54:58.181885395+08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "192.168.0.0/16","Gateway": "192.168.0.1"}]},"Internal": false,"Attachable": false,"Containers": {"35d0cfc52ade916815ab3e4531189b075192b75e7aeb6c143ea57df35aef636d": {"Name": "nginx05","EndpointID": "ce58f11752d8073b82b2332779dfb67dd0bb78df0cf6f24cef0b8aa849c8cb60","MacAddress": "02:42:c0:a8:00:03","IPv4Address": "192.168.0.3/16","IPv6Address": ""},"8d9229f120c28e7e20cbf8c2f86e9c28085e659cc4fcfc2d22619eb54f243671": {"Name": "nginx04","EndpointID": "cec851a91345953260469cd2787558976f3601b48476519366bba5cadbb3bbbd","MacAddress": "02:42:c0:a8:00:02","IPv4Address": "192.168.0.2/16","IPv6Address": ""}},"Options": {},"Labels": {}} ]#nginx04 和 05 成功入网#6.看看是否可以通过容器名ping通 [root@localhost dockertest]# docker exec -it nginx04 ping nginx05 PING nginx05 (192.168.0.3) 56(84) bytes of data. 64 bytes from nginx05.tyhnet (192.168.0.3): icmp_seq=1 ttl=64 time=0.199 ms 64 bytes from nginx05.tyhnet (192.168.0.3): icmp_seq=2 ttl=64 time=0.477 ms 64 bytes from nginx05.tyhnet (192.168.0.3): icmp_seq=3 ttl=64 time=0.062 ms 64 bytes from nginx05.tyhnet (192.168.0.3): icmp_seq=4 ttl=64 time=0.062 ms ^C --- nginx05 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 0.062/0.200/0.477/0.169 ms#自定义的网络可以通过容器名直接ping通

    结论

    自定义的网络可以通过容器名直接ping通,而默认的docker0不支持

    自定义的网络有助于进行容器间区域隔离

    官方解释

    User-defined bridges provide automatic DNS resolution between containers. Containers on the default bridge network can only access each other by IP addresses, unless you use the --link option, which is considered legacy. On a user-defined bridge network, containers can resolve each other by name or alias.

    大意:用户自定义的网卡可以在容器之间提供自动的 DNS 解析

    网络打通

    #命令 #docker network connect --help [root@localhost dockertest]# docker network connect --helpUsage: docker network connect [OPTIONS] NETWORK CONTAINERConnect a container to a networkOptions:--alias stringSlice Add network-scoped alias for the container--help Print usage--ip string IP Address--ip6 string IPv6 Address--link list Add link to another container (default [])--link-local-ip stringSlice Add a link-local address for the container

    实验

    #1.打通tyhnet,使得连接在docker0的nginx01 能够和tyhnet下的nginx04通信 [root@localhost dockertest]# docker network connect tyhnet nginx01#2.测试双方通信 [root@localhost dockertest]# docker exec -it nginx01 ping nginx04 PING nginx04 (192.168.0.2) 56(84) bytes of data. 64 bytes from nginx04.tyhnet (192.168.0.2): icmp_seq=1 ttl=64 time=0.216 ms 64 bytes from nginx04.tyhnet (192.168.0.2): icmp_seq=2 ttl=64 time=0.086 ms 64 bytes from nginx04.tyhnet (192.168.0.2): icmp_seq=3 ttl=64 time=0.109 ms 64 bytes from nginx04.tyhnet (192.168.0.2): icmp_seq=4 ttl=64 time=0.459 ms 64 bytes from nginx04.tyhnet (192.168.0.2): icmp_seq=5 ttl=64 time=0.071 ms ^C --- nginx04 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4008ms rtt min/avg/max/mdev = 0.071/0.188/0.459/0.144 ms#nginx01可以直接和nginx04通信#3.测试nginx01和nginx05 [root@localhost dockertest]# docker exec -it nginx01 ping nginx05 PING nginx05 (192.168.0.3) 56(84) bytes of data. 64 bytes from nginx05.tyhnet (192.168.0.3): icmp_seq=1 ttl=64 time=0.263 ms 64 bytes from nginx05.tyhnet (192.168.0.3): icmp_seq=2 ttl=64 time=0.076 ms 64 bytes from nginx05.tyhnet (192.168.0.3): icmp_seq=3 ttl=64 time=0.077 ms 64 bytes from nginx05.tyhnet (192.168.0.3): icmp_seq=4 ttl=64 time=0.082 ms 64 bytes from nginx05.tyhnet (192.168.0.3): icmp_seq=5 ttl=64 time=0.398 ms ^C --- nginx05 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4004ms rtt min/avg/max/mdev = 0.076/0.179/0.398/0.130 ms#nginx01可以和nginx05通信#结论 通过docker network connect命令,使得nginx01接通tyhnet,通过在nginx01上装双网卡实现 #nginx01的双网卡!!! "Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"NetworkID": "3b16bc1d45be914edc8d8bf3afc673c25a222b64090e8b85c0a908ad27c17185","EndpointID": "660e4ef439ef83dd985367f03124a6267b963dc961920342a9e36f94bfc312f5","Gateway": "172.17.0.1","IPAddress": "172.17.0.2","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "02:42:ac:11:00:02"},"tyhnet": {"IPAMConfig": {},"Links": null,"Aliases": ["89b95b32fb59"],"NetworkID": "f3fa1bcb0dfceb65a3859044910320e81f9cebd5f8f06e6e77f921424fedb6e0","EndpointID": "69d2721974ee2a8985d6ca5d365d8b5a58c5dccb3d7840c63d49248ea106f69b","Gateway": "192.168.0.1","IPAddress": "192.168.0.4","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "02:42:c0:a8:00:04"}

    ##Docker学习任重道远##

    总结

    以上是生活随笔为你收集整理的Docker初级学习指南的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。