基本操作

  1. $ docker run -it --name [containerName] [image] [command] # 创建交互式容器
  2. $ docker run -d --name [containerName] [image] [command] # 创建守护式容器
  3. $ docker exec [containerName] # 进入容器
  4. $ docker ps # 列出正在运行的容器
  5. $ docker ps -a # 列出所有容器
  6. $ docker rm [container] # 删除一个容器
  7. $ docker rm -f [container] # 强制删除一个正在运行的容器
  8. $ docker rm $(docker ps -aq) # 删除所有容器
  9. $ docker start [container] # 启动容器
  10. $ docker restart [container] # 重启容器
  11. $ docker kill [container] # 杀死容器
  12. $ docker stop [container] # 停止容器
  13. $ docker stop $(docker ps -q) # 停止所有正在运行中的容器
  14. $ 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 + Qexit 命令退出容器
  • containerName可以写为containerID

连接容器

可以将一个容器简单理解为一个虚拟机,要进入一个运行中的容器,也就是连接容器,需要使用以下命令:

$ docker exec nginx # 进入容器nginx
$ docker exec -it jenkins bash # 使用bash解释器进入容器jenkins
$ docker exec server echo "Hello world" # 进入容器server并执行命令

端口映射

在创建容器的时候, 可以指定容器到宿主机的端口映射, 使用 -p 参数指定, 有四种格式:

  1. containerPort 只指定容器中的端口,将自动分配宿主机的映射端口
  2. hostPort:containerPort 明确指定宿主机端口与容器端口之间的映射关系
  3. ip:containerPort 指定宿主机端口,将容器中端口映射到宿主机相同端口
  4. 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