先来一行命令

docker network create -d bridge test-network && docker run -itd --rm --name webapps -h centos8 -v /mnt/share:~/ -p 80:80 -p 53:53/udp --network test-network --dns=8.8.8.8 --dns-search=example.com --privileged=true centos:8 usr/sbin/init

docker network create -d bridge test-network
以上命令会创建一个名为test-network的docker网络,类似一个小型局域网。
-d参数指定网络类型,有bridge、overlay,其中overlay类型用于swarm集群。
如果需要容器之间通信就创建,不需要通信就可以不用创建。

run命令
使docker运行一个容器

-itd参数
-i:交互式操作
-t:终端
-d:在后台运行

--rm参数
容器退出时自动清理容器内部的文件系统

--name参数
为容器创建一个别名,webapps就是别名

-h参数
指定容器的主机名,本例容器的主机名是centos8

-v参数
挂载宿主机文件到容器内,将宿主机的/mnt/share目录挂载到容器的用户主目录下

-p参数
将宿主机端口映射到容器端口,映射多个口需要指定多个-p参数,第一个为宿主机端口,第二个为容器端口
-P参数
将容器的随机端口绑定到指定的端口
默认都是使用tcp协议,需要使用udp协议可以在端口后加/udp

--network参数
将容器加入指定网络,用于不同容器之间通信,需要提前创建网络,不需要容器之间互相通信可以忽略该参数。

--dns=参数
用来设置容器内部dns服务器地址

--dns-search=参数
用来设置容器dns查询域

--privileged=true参数
可以让容器使用systemctl管理软件运行,需要和/usr/sbin/init一块使用,不添加该参数容器无法运行systemctl命令