Skip to content

Latest commit

 

History

History
246 lines (191 loc) · 10.3 KB

Docker.md

File metadata and controls

246 lines (191 loc) · 10.3 KB

centos7安装Docker详细步骤(无坑版教程) - 云+社区 - 腾讯云

基本操作

$ service docker start/stop         #启动或停止docker命令
$ systemctl enable docker       #設置docker开机自启动
$ docker search nginx           #查看可用版本
$ docker images                     #查看本地镜像
$ docker ps -a                  #查看运行的容器
$ docker ps -a --no-trunc       #查看容器完整command的命令
$ docker pull ubuntu                #获取镜像
$ docker run -dit ubuntu /bin/bash  # 启动容器
                    参数说明: -i #交互式操作。
                                -t #终端。
                                -d #后台运行
                                -p #将容器内部使用的网络端口随机映射到我们使用的主机上。
                                -v /etc/localtime:/etc/localtime  #在 run 时挂载宿主时间配置
                                ubuntu: #ubuntu 镜像。
                                /bin/bash:#放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
$ docker start 容器id/name            #启动已停止运行的容器
$ docker stop <容器 ID>               #停止一个容器
$ docker restart <容器 ID>            #重启一个容器
​
#在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
        docker attach 容器id/name             #如果从这个容器退出,会导致容器的停止
        docker exec -it 容器id/name /bin/bash         #此退出容器终端,不会导致容器的停止
​
$ docker rm -f 容器id/name              #删除容器
$ docker rm $(docker ps -aq)            #删除docker所有容器
$ docker rmi -f 1e560fca3906            #删除镜像
$ docker container prune                #清理掉所有处于终止状态的容器
$ sudo docker stop $(sudo docker ps -a -q) //  stop停止所有容器
$ docker  rm $(sudo docker ps -a -q) //   remove删除所有容器

网络相关

#查看容器网络
$ docker container inspect mycentos7-bridge|grep -wA 30 "Networks"
$ docker container inspect mycentos7-bridge|grep "NetworkMode"
#网络别名
$ docker run -it  --name=mosquitto-test --privileged -p 9883:1883  -p 9001:9001  --network iot --network-alias mosquitto   -v /data/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf -v /data/mosquitto/data:/mosquitto/data -v /data/mosquitto/log:/mosquitto/log  eclipse-mosquitto                     -         -network :指定网络
            --network-alias :指定网络别名
            -v :挂载目录  宿主目录:docker目录
            --privileged :docker root用户获取真正root权利
        
#容器断开网络
$ docker network disconnect network container
#删除一个或多个网络
$ docker network rm network
#显示一个或多个网络的详细信息
$ docker network inspect network
#创建一个网络
$ docker network create network
#列出网络
$ docker network ls
#删除所有未使用的网络
$ docker network prune
​
#容器连接到网络
$ docker network connect [OPTIONS] network container                  
    [OPTIONS] :
            --alias  为容器添加网络范围的别名
            --ip 指定IP地址
            --ip6 指定IPv6地址
            -ip-range:指定ip范围
            --link  添加链接到另一个容器
            --link-local-ip   添加容器的链接本地地址
 #例子
$ docker network connect --alias 别名 --link anothercontainer:别名 network container 
$ docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 networkname
$ docker network create \
  --driver=bridge \
  --subnet=172.100.0.0/16 \
  --ip-range=172.100.1.0/24 \
  --gateway=172.100.1.254 \
  iot

$ docker network connect --ip 172.20.128.2 networkname container2

查询容器之间是否网络相通

https://segmentfault.com/a/1190000039660549

nsenter [options] [program [arguments]]

options:
-t, --target pid:指定被进入命名空间的目标进程的pid
-m, --mount[=file]:进入mount命令空间。如果指定了file,则进入file的命令空间
-u, --uts[=file]:进入uts命令空间。如果指定了file,则进入file的命令空间
-i, --ipc[=file]:进入ipc命令空间。如果指定了file,则进入file的命令空间
-n, --net[=file]:进入net命令空间。如果指定了file,则进入file的命令空间
-p, --pid[=file]:进入pid命令空间。如果指定了file,则进入file的命令空间
-U, --user[=file]:进入user命令空间。如果指定了file,则进入file的命令空间
-G, --setgid gid:设置运行程序的gid
-S, --setuid uid:设置运行程序的uid
-r, --root[=directory]:设置根目录
-w, --wd[=directory]:设置工作目录
#如果没有给出program,则默认执行$SHELL。


#获取容器pid
docker inspect mysql-mqtt -f '{{.State.Pid}}'   #输出结果  23069

#执行nsenter命令   
nsenter -n -t23069    #这时候主机上的命令都可以使用,这个命令没有任何输出,通过ifconfig命令查看当前ip可以确定我们已经进入了容器的网络空间

#如果想退出当前网络空间,返回系统网络空间,输入exit就行
exit

docker network create命令

docker network create命令用于创建一个新的网络连接。 DRIVER接受内置网络驱动程序的桥接或覆盖。如果安装了第三方或自己的自定义网络驱动程序,则可以在此处指定DRIVER。 如果不指定--driver选项,该命令将为您自动创建一个桥接网络。 当安装Docker Engine时,会自动创建桥接网络。 该网络对应于Engine传统依赖的docker0网桥。 当启动使用docker run运行新容器时,它将自动连接到此桥接网络。不能删除此默认网桥,但可以使用network create命令创建新的网络。

$ docker network create -d bridge my-bridge-network

准备覆盖网络后,只需在群集中选择一个Docker主机,并发出以下内容创建网络:

$ docker network create -d overlay my-multihost-network

用法

docker network create [OPTIONS] NETWORK

选项

名称,简写 默认 说明
--attachable false 启用手动容器安装
--aux-address map[] 网络驱动程序使用的辅助IPv4或IPv6地址
--driver, -d bridge 驱动程序管理网络
--gateway 用于主子网的IPv4或IPv6网关
--internal false 限制对网络的外部访问
--ip-range 从子范围分配容器ip
--ipam-driver default IP地址管理驱动程序
--ipam-opt map[] 设置IPAM驱动程序的具体选项
--ipv6 false 启用IPv6网络
--label 在网络上设置元数据
--opt, -o map[] 设置驱动程序特定选项
--subnet 表示网段的CIDR格式的子网

相关命令

命令名称 说明
docker network connect 将容器连接到网络
docker network create 创建一个网络
docker network disconnect 断开容器的网络
docker network inspect 显示一个或多个网络的详细信息
docker network ls 列出网络
docker network prune 删除所有未使用的网络
docker network rm 删除一个或多个网络

示例

连接容器网络

启动容器时,使用--network标志将其连接到网络。 此示例将busybox容器添加到mynet网络:

$ docker run -itd --network=mynet busybox

如果要在容器运行后将容器添加到网络,请使用docker network connect子命令。

指定高级选项

创建网络时,引擎默认为网络创建一个不重叠的子网。 该子网不是现有网络的细分。 它纯粹用于IP寻址目的。可以覆盖此默认值,并使用--subnet选项直接指定子网络值。 在桥接网络上,只能创建单个子网:

$ docker network create --driver=bridge --subnet=192.168.0.0/16 br0

另外,还可以指定--gateway --ip-range--aux-address选项。

$ docker network create \
  --driver=bridge \
  --subnet=172.104.0.0/16 \
  --ip-range=172.104.0.0/24 \
  --gateway=172.104.0.1 \
  iot

如果省略--gateway标志,引擎将从首选池中选择一个。对于覆盖网络和支持它的网络驱动程序插件,可以创建多个子网络。

$ docker network create -d overlay \
  --subnet=192.168.0.0/16 \
  --subnet=192.170.0.0/16 \
  --gateway=192.168.0.100 \
  --gateway=192.170.0.100 \
  --ip-range=192.168.1.0/24 \
  --aux-address="my-router=192.168.1.5" --aux-address="my-switch=192.168.1.6" \
  --aux-address="my-printer=192.170.1.5" --aux-address="my-nas=192.170.1.6" \
  my-multihost-network

确保子网不重叠。如果重叠的话网络创建失败,并且引擎会返回错误。

桥接驱动程序选项

创建自定义网络时,默认的网络驱动程序(即bridge)具有可以传递的其他选项。

例如,使用-o--opt选项在发布端口时指定IP地址绑定:

$ docker network create \
    -o "com.docker.network.bridge.host_binding_ipv4"="172.19.0.1" \
    simple-network

容器时间和宿主机同步

# 在 run 时挂载宿主时间配置
-v /etc/localtime:/etc/localtime
​
# 复制宿主机 localtime 配置
$ docker cp /etc/localtime 容器ID:/etc/localtime
$ docker cp /usr/share/zoneinfo/Asia/Shanghai 容器ID:/etc/localtime
  • iptables配置docker服务端口访问限制

iptables配置docker服务端口访问限制_shay的博客-CSDN博客_iptables 开放docker端口