Docker基础命令、网络

Docker镜像操作
docker run hello-world

在这里插入图片描述

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

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

  • 查看版本
docker -v 
docker version 
decker info  #可以查看所有运行容器的镜像数量,运行容器的版本,可以分配的CPU,总的内存等信息.docker的工作目录 /var/lib/decker
  • 搜索镜像
docker search nginx 
——》自己制作镜像,然后上传到docker hub 上
优化:有效减少镜像大小,dockerfile 优化方向
docker search centos:7
  • 下载镜像(默认是从docker hub)
docker pull 镜像名称
例如:docker pull nginx

在这里插入图片描述

  • 查看镜像列表
docker images   查看当前docker下的下载镜像信息

在这里插入图片描述

  • 获取镜像信息,封装镜像的详细信息
docker inspect 镜像ID

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

  • 添加镜像标签
docker tag hello-world:latest hello-world:lamp 

在这里插入图片描述

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

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

  • 镜像导出
docker save -o  文件名镜像名
示例:
docker save -o centos_7 centos:7
docker save -o nginx_docker nginx:lastest
  • 镜像导入
docker load < nginx

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

docker ps  -aq              #只过滤出容器ID
docker rm `docker ps -aq`   #批量删除
CONTAINER ID:容器ID
IMAGE:镜像版本
CRATED:创建的时间
STATUS:运行的时间
PORTS:暴露的端口
NAMES:名称(可定义)
docker命令—容器操作
  • 查询容器
docker ps -a
  • 创建容器
docker create -it nginx:latest /bin/bash
-i 让容器的标准输入保持打开
-t 分配一个伪终端
-d 后台守护进程的方式运行
  • 启动容器
docker start  容器id

在这里插入图片描述

启动容器(一次性执行)

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

在这里插入图片描述

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

在这里插入图片描述

  • 容器持续后台运行
docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"
4df5d2bf324af59801b9aac656381c9cdefb7c737d9e9daf4155612425cad800

在这里插入图片描述

watch -n 2 docker ps -a

在这里插入图片描述

docker rm `docker ps -aq` #不会删除正在运行的
  • 进入容器
使用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退出容器,不影响容器运行。
  • 容器导出
docker export    容器ID   >   文件名
示例:
docker export   容器ID   >    nginx_a
  • 容器导入
    生成镜像
docker import      导出的文件名(容器)  指定镜像名称
示例:
docker import       nginx_a         nginx:latest
cat  文件名(容器)|  docker import - nginx : latest
  • 删除容器
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网络模式
  • 容器网络
    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、
    端口范围
    这个模式指定新创建的容器和已经存在的一个容器共享一个networknamespace,而不是和.
    宿主机共享,新创建的容器不会创建自己的网卡,配置自己的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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值