docker基础命令,docker网络模式!!!

一.docker镜像操作

docker run hello-world 
run :
pull        dockerhub      仓库中项目//镜像
start       hello-world-image
[root@docker ~]# docker run hello-world 
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete 
Digest: sha256:7d91b69e04a9029b99f3585aaaccae2baa80bcf318f4a5d2165a9898cd2dc0a1
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/
1、docker client客户端连接到了服务端(服务端是以一个守护进程的形式跑在操作系统里面的)restful api典型的C/s架构
2、由docker服务端的守护进程从docker hub上下载了镜像(Ps:服务端会先检查本地系统是否有这个镜像)
3、服务端创建了一个新的容器,然后从拉去的这个镜像启动了一个容器,
容器执行了脚本/可执行程序让我们可以查看/使
(client)
4、docker服务端把这些信息流(传递)返回到客户端并展示出来,(展示在终端上)
docker client可以是多种形式,比如"docker"命令工具所在的终端

二.docker命令—镜像

2.1 查看docker版本

docker -v 
docker version 
decker info  #可以查看所有运行容器的镜像数量,运行容器的版本,可以分配的CPU,总的内存等信息.docker的工作目录 /var/lib/decker

2.2 搜索镜像

docker search nginx 
——》自己制作镜像,然后上传到docker hub 上
优化:有效减少镜像大小,dockerfile 优化方向

2.3 下载镜像

默认是从docker hub

docker pull 镜像名称
例如:docker pull nginx

在这里插入图片描述

2.4 查看镜像列表

docker images——查看当前docker下的下载镜像信息

在这里插入图片描述

2.5 获取镜像信息

封装镜像的详细信息

docker inspect  镜像ID       

在这里插入图片描述

2.6 添加镜像标签

[root@docker docker]# docker tag hello-world:latest hello-world:lamp 

在这里插入图片描述

2.7 删除镜像

docker rmi    镜像名称
docker rmi    镜像标签
docker rmi  `docker images -q`  #-q 列出镜像ID

在这里插入图片描述

在这里插入图片描述

2.8 镜像导出

docker save -o  文件名镜像名

示例:

docker save -o centos_7 centos:7

在这里插入图片描述

2.9 镜像导入

docker load < nginx

在这里插入图片描述

使用场景:有的生产环境,企业不直接使用docker私有仓库,而是存放在一个ftp服务器中,按需上传下载。

[root@docker docker]# docker ps -a 
[root@docker ~]# docker ps  -aq              #只过滤出容器ID
16d885305462
[root@docker ~]# docker rm `docker ps -aq`   #批量删除

在这里插入图片描述

CONTAINER ID:容器ID
IMAGE:镜像版本
CRATED:创建的时间
STATUS:运行的时间
PORTS:暴露的端口
NAMES:名称(可定义)

三.docker命令—容器操作

3.1 查询容器

docker ps -a

3.2 创建容器

docker create -it nginx:latest /bin/bash
-i 让容器的标准输入保持打开
-t 分配一个伪终端
-d 后台守护进程的方式运行

在这里插入图片描述

3.3 启动容器

docker start  容器id

在这里插入图片描述

启动容器(一次性执行)

docker run centos:7 /usr/bin/bash -c ls /

在这里插入图片描述

3.4 停止容器

docker stop  容器ID
#状态码0:正常退出,非0值表示非正常退出,137表示主动停止退出

在这里插入图片描述

3.5 容器持续后台运行

[root@docker ~]# docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"
93713dd63b4963c5e46748eb9c1d30741e53b885f7c1253adccd26eb4b94368b

在这里插入图片描述

[root@docker ~]# watch -n 2 docker ps -a

在这里插入图片描述

[root@docker ~]# docker rm `docker ps -aq` #不会删除正在运行的

在这里插入图片描述

3.6 进入容器

使用run
docker run -it nginx:latest /bin/bash         #一次性的,退出则关闭
exec(容器必须为开启状态)
docker exec -it  容器ID /bin/bash

PS:
docker run -it 会创建前台进程,但是会在输入exit后终止进程。
docker attach  会通过连接stdin,连接到容器内输入输出流,会在输入exit后终止进程.
docker exec -it 会连接到容器,可以像SSH一样进入容器内部,进行操作,可以通过exit退出容器,不影响容器运行。

在这里插入图片描述

在这里插入图片描述

3.7 容器导出

docker export    容器ID   >   文件名
示例:
docker export   容器ID   >    nginx_a

3.8 容器导入

生成镜像

docker import      导出的文件名(容器)  指定镜像名称
示例:
docker import       nginx_a         nginx:latest
cat  文件名(容器)|  docker import - nginx : latest

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.9 删除容器

docker rm 容器ID

强制删除容器

docker rm -f 容器ID

在这里插入图片描述

批量删除容器

docker ps -a | awk '{print "docker rm "$1}' | bash

在这里插入图片描述

批量删除"exit"状态的容器

for i in 'docker ps -a | grep -i exit | awk '{print $1}'`; do docker rm -f $i; done

四.docker网络模式

4.1 HOST模式

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

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

在这里插入图片描述

4.2 container 模式

创建的容器不会创建自己的网卡、设置IP等,而是和一个指定地容器共享IP、端口范围
这个模式指定新创建的容器和己经存在的一个容器共享一个network namespace,而不是和宿主机共享,新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定地容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表还是隔离的。(两个容器的进程可以通过loo 网卡设备通信)

在这里插入图片描述

4.3 None模式

该模式关闭了容器的网络功能
这种网络模式下容器只有lo回环网口,没有其他的网卡。none模式可以在容器创建时通过-network=none参数指定
这种类型的网络无法联网,但是封闭的网络能很好的保证容器的安全性
在这里插入图片描述

4.4 Bridge模式

此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker虚拟网桥,通过docker 0 网桥及iptables的nat,表配置与宿主机通信
当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。
从docker0子网中分配一个IP给容器使用,并设置docker0 的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair 设备,Docker 将 veth pair 设备的一端放在新创建的容器中,并命名为etho(容器的网卡),另一端放在主机中,以vethxxx,这样类似的名字命名,并将这个网络设备加入到docker0 网桥中。可以通过brctl show命令查看。
bridge模式是docker 的默认网络模式,不写-net参数,就是 bridge模式。使用docker run -p时, docker实际是在iptables,做了DNAT规则,实现端口转发功能。可以使用jptables. -t nat -vnL查看。

在这里插入图片描述

docker四种网络模式

host模式        -net=host                  容器和宿主机共享Network namespaceo
container模式   -net=container:NAME_or_ID  多个容器共享一个Network namespace.
none模式        -net=none容器有独立的Network,namespace,但并没有对其进行任何网络设置,如分配veth pair和网桥连接,配置IP等。
bridge模式      -net=bridge               (默认为该模式)
以上不需要动手配置,真正需要配置的是自定义网络

小结:

1、docker中有几种网络模式,分别提供哪些功能
bridge :使用docker 0作为网桥容器,桥接容器与宿主机(网络)
Host :与宿主机共享网络名称空间/网络协议栈
Container:多个容器之间共享一个network namespaces
None :自闭空间
Bridge:默认模式通过Veth对 连接容器与dockerO网桥,网桥分配给容器IP,同时docker0作为“局域网”内容器的网关,最后和宿主机网卡进行通讯
2、两个容器如何通讯
host网络模式:基于local 
container网络模式:基于其中提供的container
bridge网络模式:基于docker 0网桥



loopback :回环网卡、TCP/IP网卡是否生效
virtualt bridge: linux自身继承了一个虚拟化功能(kvm架构),是原生架构的一个虚拟化平台,安装了一个虚拟化平台之后就会系统就会自动安装虚拟网卡
(示例:安装workstation(虚拟化平台)之后,会在网络适配器中会多出VWMnet1 WMnet8 VWMnet0)
docker 0 :容器的网关,绑定物理网卡,负责做NAT地址转换、端口映射
docker 0 :本身也是一种容器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值