【docker】win10系统下docker容器安装及使用(三):容器相关操作及多容器间网络配置

1.rmi只能删除host上的镜像,不会删除registry的镜像。如果一个镜像对应了多个tag,只有当最后一个tag被删除时,镜像才被真正删除。
2.search让我们无须打开浏览器,在命令行中就可以搜索Docker Hub中的镜像。
在这里插入图片描述
docker ps -a可查看全部容器,包括退出状态的:
因为容器的生命周期依赖于启动时执行的命令,只要该命令不结束,容器也就不会退出。
命令运行时可以加上参数 -d以后台方式启动容器,不占用终端。
进入容器的相关操作:
1.运行一个容器后,使用:
docker attach 容器id
可通过Ctrl+p,然后Ctrl+q组合键退出attach终端。
2.运行一个容器后,使用:
docker exec -it d6ef20fca661 bash

attach与exec主要区别如下:
(1)attach直接进入容器启动命令的终端,不会启动新的进程。
(2)exec则是在容器中打开新的终端,并且可以启动新的进程。
(3)如果想直接在终端中查看启动命令的输出,用attach;其他情况使用exec。

停止及启动

快速停止容器,可使用docker kill命令
docker restart可以重启容器,其作用就是依次执行docker stop和docker start

自动重启功能

容器可能会因某种错误而停止运行。对于服务类容器,我们通常希望在这种情况下容器能够自动重启。启动容器时设置 --restart就可以达到这个效果:
docker run -d --restart=always httped
使用–restart=on-failure:3,可最多重启3次。

容器暂停及恢复

有时我们只是希望让容器暂停工作一段时间,比如要对容器的文件系统打个快照,或者dcoker host需要使用CPU,这时可以执行docker pause。
处于暂停状态的容器不会占用CPU资源,直到通过docker unpause恢复运行

删除

docker rm是删除容器,而docker rmi是删除镜像

可以先创建容器,稍后再启动容器

可以先创建容器,稍后再启动:
docker create创建的容器处于Created状态
docker start将以后台方式启动容器。
docker run命令实际上是docker create和docker start的组合。
在这里插入图片描述

资源限制

内存限额:
docker run -m 200M --memory-swap
其含义是允许该容器最多使用200MB的内存和100MB的swap
cpu限额:
docker run -c 1024 ubuntu
docker run -c 512 ubuntu2
在资源紧张的情况下,ubuntu比ubuntu2多分享了2倍的限额。

网络操作

Docker安装时会自动在host上创建三个网络:
在这里插入图片描述
1.none网络就是什么都没有的网络。挂在这个网络下的容器除了lo,没有其他任何网卡。容器创建时,可以通过 --network=none指定使用none网络。一些对安全性要求高并且不需要联网的应用可以使用none网络。
2.连接到host网络的容器共享Docker host的网络栈,容器的网络配置与host完全一样。可以通过 --network=host指定使用host网络。
果容器对网络传输效率有较高要求,则可以选择host网络。当然不便之处就是牺牲一些灵活性,比如要考虑端口冲突问题,Docker host上已经使用的端口就不能再用了。
3.bridge网络:
Docker安装时会创建一个命名为docker0的Linux bridge。如果不指定–network,创建的容器默认都会挂到docker0上。

用户自定义网络:
docker network create --driver bridge --subnet 172.22.16.0/24 --gateway 172.22.16.1 myownnet

网络相关命令:
Commands:
connect Connect a container to a network
create Create a network
disconnect Disconnect a container from a network
inspect Display detailed information on one or more networks
ls List networks
prune Remove all unused networks
rm Remove one or more networks

创建容器时,固定网络及ip:
docker run -it --network=myownnet --ip=172.22.16.9 ubuntu_sudo:test
安装网络工具:
sudo apt-get install net-tools
使用ifconfig:
在这里插入图片描述
同一网络中的容器、网关之间都是可以通信的。
新建一个ip为10的容器,安装ping包:

sudo apt-get install inetutils-ping
root@ee3b817c7550:/# ping -c 3 172.22.16.9
PING 172.22.16.9 (172.22.16.9): 56 data bytes
64 bytes from 172.22.16.9: icmp_seq=0 ttl=64 time=21.377 ms
64 bytes from 172.22.16.9: icmp_seq=1 ttl=64 time=0.086 ms
64 bytes from 172.22.16.9: icmp_seq=2 ttl=64 time=0.132 ms

网络可连通。

实验

如何使172.22.16.9与在默认bridge上构建的网络进行连通:
首先启动172.22.16.9容器1:
docker run -it --network=myownnet --ip=172.22.16.9 ubuntu_vping

注意,默认网桥的ip是不能指定的,全部是随机的。
再启动容器2,默认网桥分配了172.17.0.2的ip地址:
docker run -it = ubuntu_vping
目前两个容器间是ping不通的。
类似于下图:
在这里插入图片描述
为了使两者连通,使自定义子网连接容器2,即在容器2中新增一张网卡:
docker network connect myownnet 62e4f2197f0b (容器2的Id)
在这里插入图片描述
在容器2中新增了一张网卡,网络结构图类似于:
在这里插入图片描述
再次进行测试:发现容器间可以ping通了。
在这里插入图片描述
joined容器非常特别,它可以使两个或多个容器共享一个网络栈,共享网卡和配置信息,joined容器之间可以通过127.0.0.1直接通信。请看下面的例子:
docker run -it --network=myownnet --ip=172.22.16.9 --name test1 ubuntu_vping
docker run -it --network=container:test1 ubuntu_vping
两者共享同一ip

外网访问容器:

docker可将容器对外提供服务的端口映射到host的某个端口,外网通过该端口访问容器。容器启动时通过-p参数映射端口。
容器启动后,可通过docker ps或者docker port查看到host映射的端口。在上面的例子中,httpd容器的80端口被映射到host 32773上,这样就可以通过:<32773>访问容器的Web服务。
如将主机的8000端口映射到容器的80:
docker run -it -p 8000:80 ubuntu_vping
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5ca24c3c6198 ubuntu_vping “bin/bash” 22 seconds ago Up 18 seconds 0.0.0.0:8000->80/tcp trusting_bartik

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颢师傅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值