Docker第二招——命令基础

一、docker镜像操作

docker run hello-world 
run :
pull        dockerhub      仓库中项目/库/镜像
start       hello-world-image

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

二、docker命令—镜像

1、查看docker版本

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

在这里插入图片描述

2、搜索镜像

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

在这里插入图片描述

3、下载镜像(默认是从docker hub)

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

在这里插入图片描述

4、查看镜像列表

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

在这里插入图片描述

5、获取镜像信息,封装镜像的详细信息

docker inspect  镜像ID  

在这里插入图片描述

6、添加镜像标签

 docker tag hello-world:latest hello-world:lamp 

在这里插入图片描述

7、删除镜像

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

在这里插入图片描述

8、镜像导出

docker save -o  文件名 镜像名
示例:
docker save -o centos_7 centos:7
docker save -o nginx_docker nginx:latest

在这里插入图片描述

9、镜像导入

到另一台虚拟机上
docker load < nginx_docker

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

docker ps  -aq              只过滤出容器ID
docker rm `docker ps -aq`   批量删除=
CONTAINER ID:容器ID
IMAGE:镜像版本
CRATED:创建的时间
STATUS:运行的时间
PORTS:暴露的端口
NAMES:名称(可定义)

三、docker命令—容器操作

1、查询容器

docker ps -a
docker ps -aq              只过滤出容器ID
docker rm `docker ps -aq`   批量删除(运行过程中要加rm -f 强制删除)

在这里插入图片描述

2、创建容器

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

在这里插入图片描述

3、启动容器

docker start  容器id

在这里插入图片描述

4、启动容器(一次性执行)

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

在这里插入图片描述

5、停止容器

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

6、容器持续后台运行

 docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"

在这里插入图片描述

  watch -n 2 docker ps -a

在这里插入图片描述

docker rm `docker ps -aq` #不会删除正在运行的

7、进入容器

①使用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退出容器,不影响容器运行。

在这里插入图片描述

8、容器导出

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

在这里插入图片描述

9、容器导入,生成镜像

①docker import      导出的文件名(容器)  指定镜像名称
示例:
docker import   nginx_02         nginx:latest
②cat  文件名(容器)|  docker import - nginx : latest
cat nginx_02 | docker import - nginx : latest  #- nginx 中间加空格

10、删除容器

docker rm 容器ID

11、强制删除容器

 docker rm -f 容器ID

12、批量删除容器

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

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

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

四、docker网络模式

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

Docker四种模式:
1、Host模式
host容器将不会虚拟出自己的刚卡,配置自己的IP等等,而是使用宿主机的IP和端口
如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network
Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,
配置自己的IP等等,而是会使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进
程列表等还是和宿主机隔离的。
使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可
以使用宿主机的端口,不需要进行NAT, host 最大的优势就是网络性能比较好,但是docker
host上已经使用的端口就不能再用了,网络的 隔离性不好。

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

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

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查看。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值