基本操作
$ docker run -it --name [containerName] [image] [command] # 创建交互式容器
$ docker run -d --name [containerName] [image] [command] # 创建守护式容器
$ docker exec [containerName] # 进入容器
$ docker ps # 列出正在运行的容器
$ docker ps -a # 列出所有容器
$ docker rm [container] # 删除一个容器
$ docker rm -f [container] # 强制删除一个正在运行的容器
$ docker rm $(docker ps -aq) # 删除所有容器
$ docker start [container] # 启动容器
$ docker restart [container] # 重启容器
$ docker kill [container] # 杀死容器
$ docker stop [container] # 停止容器
$ docker stop $(docker ps -q) # 停止所有正在运行中的容器
$ docker stop $(docker ps -q) & docker rm $(docker ps -aq) # 停用并删除所有容器
创建容器
$ docker run -it --name [containerName] [image] [command] # 创建交互式容器, 在运行结束后会退出容器
$ docker run -d --name [containerName] [image] [command] # 创建守护式容器
# 示例
$ docker run -it --name server centos /bin/bash # 使用镜像centos创建一个名为server的容器, 并使用/bin/bash解释器
$ docker run --name nginx -d -p 80:80 -v ~/nginx/html:/usr/share/nginx/html nginx # 创建容器并映射端口、挂载卷
-i
--interactive=true|false
可进入交互式操作-t
--tty=true|false
指定使用哪个终端进行交互-d
在后台创建容器-v
挂载卷-p
映射端口-u
使用某用户权限创建--name
指定容器名称- 在运行交互式容器的时候,使用
Ctrl + P + Q
或exit
命令退出容器 containerName
可以写为containerID
连接容器
可以将一个容器简单理解为一个虚拟机,要进入一个运行中的容器,也就是连接容器,需要使用以下命令:
$ docker exec nginx # 进入容器nginx
$ docker exec -it jenkins bash # 使用bash解释器进入容器jenkins
$ docker exec server echo "Hello world" # 进入容器server并执行命令
端口映射
在创建容器的时候, 可以指定容器到宿主机的端口映射, 使用 -p
参数指定, 有四种格式:
- containerPort 只指定容器中的端口,将自动分配宿主机的映射端口
- hostPort:containerPort 明确指定宿主机端口与容器端口之间的映射关系
- ip:containerPort 指定宿主机端口,将容器中端口映射到宿主机相同端口
- ip:hostPort:containerPort 指定宿主机端口和容器端口,将容器中端口映射到宿主机指定端口
$ docker run -p 80 -it --name server ubuntu /bin/bash
$ docker run -p 8080:80 -it --name server ubuntu /bin/bash
$ docker run -p 0.0.0.0:80 -it --name server ubuntu /bin/bash
$ docker run -p 0.0.0.0:8080:80 -it --name server ubuntu /bin/bash
- 使用 -P 将容器暴露的所有端口进行映射
- 使用 -p 将容器中指定端口进行映射
查看容器与宿主机端口映射
使用 docker port [container]
命令可以查看容器与宿主机的端口映射:
$ docker port nginx_server
80/tcp -> 0.0.0.0:8080