1 拉取镜像

docker pull ubuntu
docker pull ubuntu:latest
docker pull nginx:{tag}

2 运行容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 前端打开 bash 进行交互操作
docker run -it ubuntu /bin/bash
# 后台启动 ubuntu 并且睡眠 1000000s
docker run -d ubuntu sleep 1000000
# 后台启动一个 nginx 服务,容器名 mynginx,出错就重启,88 端口映射到容器内 80 端口
docker run --name=mynginx -d --restart=always -p 88:80 nginx
# 将本地 ./Project/test 路径挂载到容器内 /app/workdir 路径下
docker run -d -v ./Project/test:/app/workdir microweb

options:

  • --name=容器新名字  为容器指定一个名字
  • -d  后台运行容器并返回容器 ID
  • -i  以交互式运行容器
  • -t  为容器分配一个伪输入终端,供前端交互
  • -P  随机的端口映射
  • -p  指定的端口映射
  • --restart=always  开机自启
  • -v 文件挂载

3 启停容器

# 启动已停止运行的容器
docker start 容器ID或者容器名
# 重启容器
docker restart 容器ID或者容器名
# 应用开机自启
docker update 容器id/名字 --restart=always
# 停止容器
docker stop 容器ID或者容器名
# 强制停止容器
docker kill 容器ID或者容器名

4 进入容器

# 进入正在运行的容器进行命令行交互
docker exec -it 容器ID bashShell
docker exec -it 容器ID /bin/bash
docker exec -it 容器ID redis-cli
# 重新进入容器
docker attach 容器ID

docker exec 和 docker attach 区别

  1. attach 直接进入容器启动命令的终端,不会启动新的进程,用 exit 退出,会导致容器的停止。
  2. exec 是在容器中打开新的终端,并且可以启动新的进程,用 exit 退出,不会导致容器的停止。

5 退出容器

  1. run 进去容器,exit 退出,容器停止
  2. run 进去容器,ctrl+p+q 退出,容器不停止

6 罗列容器

# 当前运行的所有容器
docker ps
docker ps [options]

options:

  • -a :列出当前所有正在运行的容器+历史上运行过的
  • -l :显示最近创建的容器。
  • -n:显示最近 n 个创建的容器。
  • -q :静默模式,只显示容器编号。

7 删除容器

# 删除已停止的容器
docker rm 容器ID
# 一次性删除所有容器
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
# 清理掉所有处于终止状态的容器
docker container prune

8 查看容器日志

docker logs 容器ID
# 类似 tail -f 方式输出日志
docker logs -f 容器ID

9 查看容器运行进程

docker top 容器ID

10 查看容器细节

docker inspect 容器ID

11 拷贝容器文件到主机

docker cp 容器ID:容器内路径 目的主机路径

12 导出容器

# export 导出容器的内容留作为一个 tar 归档文件[对应import命令]
docker export 容器ID > 文件名.tar
# import 从 tar 包中的内容创建一个新的文件系统再导入为镜像[对应export]
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号