docker命令详解

docker search          在docker hub中搜索镜像;
docker pull 从docker镜像源服务器拉取指定镜像或者库镜像;
docker push 推送指定镜像或者库镜像至docker源服务器;
docker history 展示一个镜像形成历史;
docker images 列出系统当前镜像;
docker run 创建一个新的容器并运行一个命令;
docker start 启动容器;
docker stop 停止容器;
docker attach 当前shell 下attach连接指定运行镜像;
docker build 通过Dockerfile定制镜像;
docker commit 提交当前容器为新的镜像;
docker cp 从容器中拷贝指定文件或者目录到宿主机中;
docker create 创建一个新的容器,同run,但不启动容器;
docker diff 查看docker容器变化;
docker events 从docker服务获取容器实时事件;
docker exec 在已存在的容器上运行命令;
docker export 导出容器的内容流作为一个tar归档文件[对应import]
docker import 从tar包中的内容创建一个新的文件系统映像[对应export]
docker info 显示系统相关信息;
docker inspect 查看容器详细信息;
docker kill 指定docker容器;
docker load 从一个tar包中加载一个镜像[对应save];
docker login 注册或者登录一个docker源服务器;
docker logs 输出当前容器日志信息;
docker port 查看映射端口对应的容器内部源端口;
docker pause 暂停容器;
docker ps 列出容器列表;
docker restart 重启运行的容器;
docker rm 移除一个或者多个容器;
docker rmi 移除一个或者多个镜像;
docker save 保存一个镜像为一个tar包[对应load]
docker tag 给源中镜像打标签;
docker top 查看容器中运行的进程信息;
docker unpause 取消暂停容器;
docker version 查看docker版本号;
docker wait 截取容器停止时的退出状态值;

docker网络 4种模式

基于docker run创建docker容器时,可以使用--ent选项指定容器的网络模式,docker默认有以下四种网络模式:
  1. host模式,使用--ent=host指定;
  2. container模式,使用--ent=container:NAME or ID指定;
  3. none模式,使用--ent=none指定;
  4. bridge模式,使用--ent=bridge指定,默认设置;
 
host模式详解:
默认docker容器运行会分配独立的network namespace 隔离子系统,基于host模式,容器将不会获得一个独立的network namespace,而是和宿主机公用一个network namespace,容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
 
container模式详解:
熟悉了host模式,container模式也非常好理解,container模式指定新创建的容器和已经存在的一个容器共享一个network namespace,而不是和宿主机共享。
即新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样两个容器除了网络方面相同之外,其他的如文价系统、进程列表还是隔离的。
 
none模式详解:
none模式与其他的模式都不同,如果处于none模式,docker容器拥有自己的network namespace,但是并不为docker容器进行任何网络配置。也就是说该docker容器没有网卡、IP、路由等信息,需要手工为docker容器添加网卡、配置IP等,典型pipework为docker容器指定IP等信息;
 
bridge桥接模式:
bridge模式docker默认的网络模式,该模式会为每一个容器分配network namespace、配置IP、路由等配置,默认会将docker容器连接到一个虚拟网桥交换机docker0上。

修改docker0的网络:vim /etc/sysconfig/docker-network 编辑此文件,如果没有就创建:添加如下内容
[root@localhost ~]# cat /etc/sysconfig/docker-network
# /etc/sysconfig/docker-network
DOCKER_NETWORK_OPTIONS="--bip=172.16.1.1/16"
docker bridge创建过程:
  1. 首先宿主机上创建一对虚拟网卡veth pair设备,veth设备总是成对出现的,组成一个数据的通道,数据从一个设备进入,就会从另一个设备出来,veth设备常用来连接两个网络设备。
  2. docker将veth pair设备的一端放在新创建的容器中,并命名为eth0,然后将另一端放在宿主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中,可以通过brctl show命令查看。
  3. 从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。
  4. 此时容器IP与宿主机能够通信,宿主机也可以访问容器中的IP地址,在bridge模式下,连在同一个网桥上的容器之间可以相互通信,同时容器也可以访问外网,但是其他物理机不能访问docker容器IP,需要通过NAT将容器IP的port映射为宿主机的IP和port。
centos6.x docker桥接网络实战:
基于centos 6.x构建的docker桥接网络,案例方法如下:
docker0桥接网络可以自定义,如下为自定义的桥接网络的设置:
/etc/init.d/docker stop
关闭docker0
ifconfig docker0 down
删除docker0
brctl delbr docker0
没有brctl需要安装
yum install bridge-utils -y centos6.x的配置:
vim /etc/sysconfig/docker-network
other_args="-b=br0"

/etc/sysconfig/network-scripts/下,修改ifcfg-eth0网卡配置,同时增加ifcfg-br0桥接网卡配置,操作流程如下:
vi ifcfg-eth0内容修改为如下:
DEVICE=eth0
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Ethernet
BRIDGE="br0"
IPADDR=192.168.43.81
NETMASK=255.255.255.0
GATEWAY=192.168.43.1
USERCTL=no vi ifcfg-br0内容如下:
DEVICE="br0"
BOOTPROTO=none
IPV6INIT=no
NM_CONTROLLED=no
ONBOOT=yes
TYPE="Bridge"
IPADDR=192.168.43.81
NETMASK=255.255.255.0
GATEWAY=192.168.43.1
USERCTL=no

启动docker服务

/etc/init.d/docker start 

启动一个新的docker客户端,查看客户端ip如下: 进入已经启动过的容器命令:docker attach 容器ID 即可。 此时可以外网了

centos7.x 桥接网络实战:
基于centos7.x构建docker桥接网络,案例方法如下:
配置bridge桥接网络可以直接设置网卡配置文件:
/etc/sysconfig/network-scripts/下,修改ifcfg-ens33网卡配置,同时增加ifcfg-br0桥接网卡配置,操作流程如下:
vim ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
BRIDGE="br0"
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.20
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
vim ifcfg-br0
BOOTPROTO=static
DEVICE=br0
ONBOOT=yes
TYPE="Bridge"
IPADDR=192.168.1.20
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
重启网卡/docker服务/删除docker0网卡:
systemctl restart network
systemctl restart docker
ifconfig docker0 down
brctl delbr docker0
docker默认提供了一个隔离的内网环境,启动时会建立一个docker0虚拟网卡,每个容器都是连接到docker0网卡上的。而docker0的IP段为172.16.0.1,如果相让容器与宿主机相同一个网段的其他机器访问,就必须在启动docker的时候将某个端口映射到宿主机的端口。
KVM的桥接网络非常方便,其实docker也比较方便,至少不是自带的桥接而已,centos7下如果快速实现docker容器桥接网络,并为容器分配外网IP。如下为通过pipework工具配置容器IP方法:
none模式:
安装pipework 克隆
git clone https://github.com/jpetazzo/pipework
cp pipework/pipework /usr/local/bin/
启动容器并设置网络
docker run -itd --net=none --name=lamp2 centos7 /bin/bash
pipework br0 lamp2 192.168.1.111/24@192.168.1.254
进入容器查看ip
docker exec lamp2 ifconfig
启动容器:
bridge模式:
docker images
docker run -itd 容器id /bin/bash
给容器添加特权,否则容器没有某些权限 --privileged
docker run -itd --privileged --name=docker-200 --net=none centos7 /usr/sbin/init

查看网关:

[root@localhost network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 425 0 0 br0
192.168.1.0 0.0.0.0 255.255.255.0 U 425 0 0 br0

路由跟踪:

traceroute 114.114.114.114
docker网桥+引擎服务整合配置:不同版本
  1. docker 1.13.x 版本: docker引擎服务-绑定桥接br0网卡配置:
vim /etc/sysconfig/docker-network
# /etc/sysconfig/docker-network
DOCKER_NETWORK_OPTIONS="-b=br0"
  1. docker -ce 版本:(19.03),docker引擎服务-绑定桥接br0网卡配置:
/usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -b=br0
重新加载配置文件
systemctl daemon-reload

docker常用命令-docker网络的更多相关文章

  1. 《Docekr入门学习篇》——Docker常用命令

    Docker常用命令 Docker镜像管理 搜索镜像:docker search 获取镜像:docker pull 查看镜像:docker images 删除镜像:docker rmi 构建镜像:do ...

  2. Docker 常用命令和Dockerfile

    Docker 简介 官方的解释为:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现 ...

  3. docker常用命令与容器创建

    ################docker安装##################### Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版是免费提供给个 ...

  4. 关于Docker 常用命令

    Docker 常用命令 分类列一下常用的CLI命令 仓库相关 search/ pull / push / login etc. 例:docker pull ubuntu 从仓库下载ubuntuimag ...

  5. docker 系列 - 基础镜像环境和Docker常用命令整理

    =======================docker 基础镜像环境 alpine=======================可以使用 docker search 命令搜索指定的 image, ...

  6. Docker常用命令汇总,和常用操作举例

    Docker命令 docker 常用命令如下 管理命令: container 管理容器 image 管理镜像 network 管理网络 node 管理Swarm节点 plugin 管理插件 secre ...

  7. 1021 docker常用命令和Jenkins搭建

    docker常用命令 1.镜像管理 docker pull (镜像名) # 默认拉取最新版本的镜像 docker pull (镜像名:版本号) #拉取指定版本的镜像 docker push (镜像名) ...

  8. docker 常用 命令

    http://os.51cto.com/art/201409/451117.htm 2.1 在测试机启动容器,安装ssh docker run -i -t ubuntu /bin/bash #此方式运 ...

  9. 6.docker常用命令

    docker 常见命令 更细的配置请参考官方文档 第一大部分容器生命周期管理 01 .docker run :创建一个新的容器并运行一个命令 $ docker run [OPTIONS] IMAGE ...

  10. Docker 常用命令总结

    Docker 常用命令总结   回到顶部 镜像相关 搜索 docker search *image_name* 下载 docker pull *image_name* 查看 docker images ...

随机推荐

  1. 【WALT】scale_exec_time() 代码详解

    @ 目录 [WALT]scale_exec_time() 代码详解 代码展示 代码逻辑: 为什么归一化? ⑴ 将 CPU cycles 转换为 CPU 当前频率 ⑵ 归一化 delta [WALT]s ...

  2. 【Springboot】拦截器

    Springboot 拦截器 1.什么是拦截器? 拦截器可以根据 URL 对请求进行拦截,主要应用于登陆校验.权限验证.乱码解决.性能监控和异常处理等功能. 2.定义拦截器步骤 在 Spring Bo ...

  3. 【Java】工具类 -- 持续更新

    Java原生工具类 Objects requireNotNull():为空抛异常,不为空返回本身 deepEquals():对象深度相等(数组层面)判断 调用Arrays.deepEquals0() ...

  4. EasyExcel · 写excel

    原文地址 通用数据生成 后面不会重复写 private List<DemoData> data() { List<DemoData> list = ListUtils.newA ...

  5. 手写raft(一) 实现leader选举

    1. 一致性算法介绍 1.1 一致性同步与Paxos算法 对可靠性有很高要求的系统,通常都会额外部署1至多个机器为备用副本组成主备集群,避免出现单点故障. 有状态的系统需要主节点与备用副本间以某种方式 ...

  6. Word书签替换,加盖电子印章及转换PDF(Java实用版)

    一.前言 在项目中有需要对word进行操作的,可以看看哈,本次使用比较强大的spire组件来对word进行操作,免费版支持三页哦,对于不止三页的word文件,可以购买收费版,官网:https://ww ...

  7. AI识别检验报告 -PaddleNLP UIE-X 在医疗领域的实战

    目录 UIE-X在医疗领域的实战 1.项目背景 2.案例简介 3.环境准备 数据转换 5.模型微调 6.模型评估 7.Taskflow一键部署 UIE-X在医疗领域的实战 PaddleNLP全新发布U ...

  8. Hugging News #0724: Llama 2 登陆 Hugging Face、AI 开源游戏竞赛获奖选手公布!

    每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...

  9. windows相关DOS命令简介与基操

    作为程序员要求掌握最基本的windows相关的DOS命令(详细版) 一.DOS命令.cmd.windows操作系统中保留的DOS命令分别是什么? 1.DOS命令是什么? DOS命令,计算机术语,是指D ...

  10. NFS快速入门(一):简介、原理

    NFS网络文件共享存储 什么是NFS NFS 是 Network File System 的缩写,中文意思是网络文件系统.它的主要功能是通过网络(一般是局域网)让不同主机系统之间可以共享文件或目录.N ...