运行image
以交互模式运行镜像
$ docker run -t -i ubuntu /bin/bash
- -t 指定伪终端
- -i 保持标准输入打开
- ubuntu 镜像名
- /bin/bash 在容器内运行
/bin/bash
启动守护进程模式的Hello world
docker run -d ubuntu /bin/sh -c "while true; do echo hello world"; sleep 1; done
5c005c85856a717e83bded1d81bc7b38d4d36543c386256783cefaa84379b072
- -d 以守护进程模式运行容器
/bin/sh -c "while true; do echo hello world"; sleep 1; done
为在容器中运行的命令
5c005c85856a717e83bded1d81bc7b38d4d36543c386256783cefaa84379b072
字符串为容器 ID
启动容器时将容器内端口映射到主机:
docker run -d -P training/webapp python app.py
- -P 将容器内应用服务端口映射到主机随机端口
docker run -d -p 80:5000 training/webapp python app.py
- -p 将容器内应用的5000端口映射到主机的80端口
查看容器端口映射到主机的端口的快捷方式(nostalgic_morse为容器名)
$ docker port nostalgic_morse 5000
0.0.0.0:49155
启动容器时给容器命名
$ docker run -d -P --name web training/webapp python app.py
- –name 指定容器名
执行docker ps
可查看当前运行的容器:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5c005c85856a ubuntu "/bin/sh -c 'while tr" 8 minutes ago Up 8 minutes cranky_mirzakhani
5c005c85856a
是容器ID 较短的变体,cranky_mirzakhani
是分配的容器的名字
$ docker ps -l
- -l 查看最后启动的容器的详细信息
$ docker ps -a
- -a 查看所有的容器,包括运行中的与停止的容器
查看容器的输出
$ docker logs cranky_mirzakhani
hello world
...
hello world
$
$ docker logs -f cranky_mirzakhani
- -f 与tail的-f参数功能相同
查看容器内运行的程序
$ docker top cranky_mirzakhani
停止容器
$ docker stop cranky_mirzakhani
删除容器
$ docker rm cranky_mirzakhani
网络容器
Docker 默认提供两个网络驱动,bridge
和overlay
:
$ docker network ls
NETWORK ID NAME DRIVER
18a2866682b8 none null
c288470c46f6 host host
7b369448dccb bridge bridge
容器默认在bridge
网络启动。
可以使用网络名称,容器名称(或容器ID)将容器从一个网络断开连接:
$ docker network disconnect bridge testcontainer
创建新的桥接网络
$ docker network create -d bridge my-bridge-network
$ docker network ls
NETWORK ID NAME DRIVER
7b369448dccb bridge bridge
615d565d498c my-bridge-network bridge
18a2866682b8 none null
c288470c46f6 host host
- -d 指定
bridge
为新网络的驱动
将容器添加到网络
$ docker run -d --network=my-bridge-network --name db training/postgres
或
docker network connect my-bridge-network web