一、启动容器
所需要的命令主要为 docker run。例如,下面的命令输出一个“Hello World”,之后终止容器。
当利用docker run来创建容器时,Docker在后台运行的标准操作包括:
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个ip地址给容器
- 执行用户指定的应用程序
- 执行完毕后容器被终止
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
参数说明:
- -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
- -d: 后台运行容器,并返回容器ID;常用
- -i: 以交互模式运行容器,通常与 -t 同时使用;常用
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;常用
- -p: 端口映射;容器端口和宿主机端口的映射;常用
- -P: 端口映射;随机映射端口号
- -v: 绑定宿主机和容器文件夹,绑定以后实现文件同步;常用
- -w: 指定容器工作目录,也就是进入容器的默认目录
- -h “mars”: 指定容器的hostname;
- -e username=”ritchie”: 设置环境变量;
- —name=”nginx-lb”: 为容器指定一个名称;常用
- —dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
- —dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
- —env-file=[]: 从指定文件读入环境变量;
- —cpuset=”0-2” or —cpuset=”0,1,2”: 绑定容器到指定CPU运行;
- -m :设置容器使用内存最大值;常用
- —net=”bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
- —link=[]: 添加链接到另一个容器;常用
- —expose=[]: 开放一个端口或一组端口;
例如:
docker run -it -p 80:80 --name mycentos -v /zhibi:/zhibi -w /usr centos
如果需要其他局域网内的 pc 访问 docker 容器,容器需要将自身的端口映射出来。
因为 docker 在 docker 网络下,相当于一个局域网,docker 需要把端口映射出来给宿主机,才能通过宿主机ip加端口的方式访问 docker 容器。内网环境也是要将pc指定的端口暴露给交换机,交换机转发给运行商,内网的pc才能被公网访问。
ifconfig查看网路,docker 容器也会有网卡
[root@brettwu ~]# ifconfigdocker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255inet6 fe80::42:8dff:fe73:b92f prefixlen 64 scopeid 0x20<link>ether 02:42:8d:73:b9:2f txqueuelen 0 (Ethernet)RX packets 170 bytes 48879 (47.7 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 240 bytes 38480 (37.5 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.3.202 netmask 255.255.255.0 broadcast 192.168.3.255inet6 fe80::a00:27ff:fe9a:fb5e prefixlen 64 scopeid 0x20<link>ether 08:00:27:9a:fb:5e txqueuelen 1000 (Ethernet)RX packets 278807 bytes 376151707 (358.7 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 34855 bytes 3495313 (3.3 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 2 bytes 1152 (1.1 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 2 bytes 1152 (1.1 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0# 这里就是 docker 容器的网卡,由于容器比较多,所以容器的网卡是一串哈希值vethfbcf793: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet6 fe80::b073:e8ff:feaf:4cc2 prefixlen 64 scopeid 0x20<link>ether b2:73:e8:af:4c:c2 txqueuelen 0 (Ethernet)RX packets 55 bytes 15834 (15.4 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 91 bytes 13255 (12.9 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
update命令给容器加上自启动docker update [OPTIONS] CONTAINER [CONTAINER...]docker update --restart=always 容器名
| 名称 | 描述 |
|---|---|
| —blkio-weight | 阻塞IO (相对权重),介于10到1000之间,0表示禁用(默认禁止) |
| —cpu-period | 限制CPU CFS(完全公平的调度程序)期限 |
| —cpu-quota | 限制CPU CFS(完全公平的调度程序)配额 |
| —cpu-rt-period | API 1.25+,将CPU实时时间限制为微秒 |
| —cpu-rt-runtime | API 1.25+,将CPU实时运行时间限制为微秒 |
| —cpu-shares, -c | CPU份额(相对权重) |
| —cpus | API 1.29+,CPU数量 |
| —cpuset-cpus | 允许执行的CPU(0-3,0,1) |
| —cpuset-mem | 允许执行的MEM(0-3,0,1) |
| —kernel-memory | 内核内存限制 |
| —memory-swap | 交换限制等于内存加交换,“-1”以启用无限交换 |
| —memory-reservatio | 内存软限制 |
| —memory, -m | 内存限制 |
| —pids-limit | API 1.40+,调节容器pids限制(-1表示无限制) |
| —restart | 容器退出时重新启动策略以应用 |
二、查看容器
docker ps

如果没有指定name,docker会随机生成一个名字
1、参数说明:
- -f :根据条件过滤显示的内容。
- —format :指定返回值的模板文件。
- -l :显示最近创建的一个容器。常用
- -a :显示全部容器,包括已经停止的。常用
- -n :列出最近创建的n个容器。 -n 6 常用
- —no-trunc :不截断id输出,id默认显示16位,全部输入128位。
- -q :静默模式,只显示容器编号。常用
- -s :显示总的文件大小。
2、查看端口映射快捷方式
根据名字或者ID查看容器端口映射
docker port ecb7db5c716f
3、查看WEB应用程序日志
docker logs ecb7db5c716f
参数说明:
- -f: 让 dokcer logs 像使用 tail -f 一样来输出容器内部的标准输出。
4、查看容器底层信息
docker inspect ecb7db5c716f
5、查看容器使用情况
docker stats [OPTIONS] [CONTAINER...]
参数说明:
参数说明:
- -t: 强制关闭(相当于直接拔掉电源)
四、启动已经有的容器
docker start ecb7db5c716f
参数说明:
- -a:直接进入到容器里面
- -i:直接进入到容器里面
五、重启容器
docker restart ecb7db5c716f
参数说明:
- -t:多少秒以后停止容器(默认十秒)
六、移除容器
docker rm 容器名或者容器id普通删除docker rm -f 容器名或者容器id强制删除
docker rm ecb7db5c716f
注:删除容器以前必须先停掉容器,不然会报错
Error response from daemon: You cannot remove a running container ecb7db5c716faf4b6c99f22e4c4373437fce51e6d497c3f05acd78eae5e04d51. Stop the container before attempting removal or force remove
参数说明:
- -f:强制移除,运行中的也会被移除
- -l:删除指定的连接
- -v:删除和容器关联的卷,默认关联的卷不会删除
docker container prune可以删除所有停止的容器
七、进入一个运行中的容器
docker exec -it ecb7db5c716f /bin/bash
参数说明:
- -i:以交互模式运行容器
- -t:分配一个伪终端
- -d:分离模式,在后台运行
- ecb7db5c716f:容器id
- /bin/bash:用bash操作容器
注:最后的 /bin/bash 后面没有 /
八、退出容器
# 方法一:(容器停止运行)exit# 方法二:(容器继续运行)ctrl + P + Q
九、查看容器内网ip信息
docker inspect redis-master(容器ID)
