本文参考《从Docker到Kubernetes入门与实战》(罗利民)
创建容器有两种方式,一种方式是create,创建的新容器处于停止状态:
docker create [options] image:[version]
options:
--add-host=[]: 指定主机到ip地址映射关系
--dns=[]: 为容器指定域名服务器
-h: 为容器指定主机名
-i: 打开容器的标准输入
--name: 指定容器名称
-u,--user=: 创建用户
另一种方式为run,在创建后会立即启动该容器,以下命令为创建后启动并进入交互模式:
docker run -i -t --name demo_centos centos /bin/bash
以下命令为创建一个后台型容器并执行:
docker run -d centos
注:
-d, --detach=false 指定容器运行于前台还是后台,默认为 false
和 Linux 的ps/ls指令类似,ps查看正在运行的容器:
在一控制台输入:
docker run -i -t demo/webserver:v2.0 /bin/bash
本地打开新控制台 或 服务器控制台输入:
docker ps
运行结果:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e020d4c2832f demo/webserver:v2.0 "/bin/bash" 20 seconds ago Up 20 seconds funny_murdock
ps指令默认不显示非运行状态容器,需要ps -a显示全部:
docker ps -a
运行结果:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e020d4c2832f demo/webserver:v2.0 "/bin/bash" 4 minutes ago Exited (0) 9 seconds ago funny_murdock
b8df2451b1c1 demo/webserver "/bin/bash" About an hour ago Exited (0) About an hour ago keen_elbakyan
4f7acb30c5dd ubuntu "/bin/bash" 2 hours ago Exited (0) About an hour ago compassionate_kare
随着容器数量增多,可以用关键字指令查找名称含有某字符串的容器: docker ps -a -f name=[ ] (注意:名称为NAME,而不是镜像名称)
docker ps -a -f name=funny
运行结果:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e020d4c2832f demo/webserver:v2.0 "/bin/bash" 15 hours ago Exited (0) 15 hours ago funny_murdock
-a 为 -all, 列出满足条件全部容器
-f 表示过滤条件,包含name,status(状态),ancestor(镜像),label(标签)和启动顺序(before、since)
启动顺序:
docker ps (-a) -f before=monkey //monkey在哪些容器之前启动
docker ps (-a) -f before=monkey //monkey在哪些容器之后启动
状态:
docker ps -a -f "exited=0"
docker ps -a -f status=running
docker ps -a -f status=paused
docker start [container name]
docker restart [container name]
docker stop [container name]
docker stop -t 10 [container name] //设置强制停止容器等待时间
docker kill [container name] //强制停止容器
docker exec -it [container name]
Docker在安装完成后,会在宿主机中创建虚拟网桥,该网桥实现 容器之间 和 容器与外部网络 的连接。通常情况下,虚拟网桥名称为 docker0 :