Docker

常见命令

  • 创建运行容器

    docker run [options] IMAGE [command]
    • command

      • -d​:后台运行
      • --name [name]​:容器名称
      • -p [host port]:[container port]​:映射端口
      • -v [/host/data]:[/container/data]​:绑定挂载一个数据卷,如果数据卷不存在会自动创建
      • -e [KEY]=[VALUE]​:环境变量
      • --network [my-network]​:指定连接到一个网络
      • [image]:[tag]​:未指定版本时,默认是 latest,代表最新版本
  • 拉取镜像

    未指定版本时,默认是 latest,代表最新版本

    docker pull [image]:[tag]
  • 查看指定镜像

    不写镜像名查看所有镜像

    docker images [image]
  • 删除指定镜像

    docker rmi [image]
  • 保存镜像

    docker [options] sava [image:tag]
    • options

      • -o [name]​:文件保存文件名
  • 加载镜像

    docker load [OPTIONS]
    • options

      • -i [name]​:镜像文件名
      • -q​:不输入提示内容
  • 列出运行的容器

    docker ps [options]
    • options

      • -a​:列出包括未运行的容器
      • -q​:仅显示容器 ID
  • 停止容器

    docker stop [container]
  • 启动容器

    docker start [container]
  • 删除容器

    docker rm [container]
    • -f​:强制删除
  • 查看容器详情

    docker inspect [container]
  • 查看容器日志

    docker logs [options] [container]
    • -f​:跟随日志输出(实时显示日志)
  • 在运行的容器中执行命令

    docker exec [OPTIONS] [container] [COMMAND] [bash]
    • -i​:保持标准输入打开,即使没有连接。
    • -t​:分配一个伪终端
    • -u​:以指定用户的身份运行命令
    • -d​:在后台运行
    • -e​:设置环境变量

数据卷

  • 创建数据卷

    docker volume create
  • 查看所有数据卷

    docker volume ls
  • 删除指定数据卷

    docker volume rm [volume]
  • 查看某个数据卷的详细

    docker volume inspect
  • 清除数据卷

    docker volume prune

Dockerfile

包含构建镜像需要执行的指令

  • 指定基础镜像

    FROM [image:tag]
  • 环境变量

    ENV [key] [value]
  • 将本地文件拷贝到容器的指定目录

    COPY [/host/file] [/container/file]
  • 执行容器中的 shell 命令

    一般执行安装过程

    RUN [command]
  • 容器暴露的端口给连接的其他服务,但不会映射到宿主机

    EXPOSE [port]
  • 镜像中应用的启动命令

    ENTRYPOINT [command]

网络

  • 创建

    docker network create [NETWORK]
  • 查看

    docker network ls
  • 删除指定网络

    docker network rm [NETWORK]
  • 清楚未使用网络

    docker network prune
  • 使指定容器加入指定网络

    docker network connect [NETWORK] [CONTAINER]
  • 使指定容器离开指定网络

    docker network disconnect [NETWORK] [CONTAINER]
  • 查看网络详细信息

    docker network inspect [NETWORK]

Docker compose

常见关键字

  • 指定 Docker Compose 文件的版本号

    version: "3.8"
  • 定义各个服务,每个服务可以有多个配置项。

    services:
    [server1]:
    ...
    [server2]:
    ...
  • 定义 Docker 网络,用于连接各个服务

    networks:
    - [NETWORK]:
  • 定义 Docker 卷,用于持久化数据或者与宿主机共享数据。

    volumes:
    - ​[/host/data]:[/container/data]​
  • 指定使用的镜像名称。

    ​[image]:[tag]​
  • 指定构建 Docker 镜像时的 Dockerfile 路径。

    build: [path]
  • 将容器内部端口映射到宿主机,使外部可以访问容器服务。

    ports:
    - "​[host port]:[container port]​"
  • 定义环境变量

    environment:
    - [KEY]=[VALUE]
  • 指定容器启动时执行的命令

    command:
    - "[command]"
  • 指定服务启动所依赖的其他服务,会等待依赖的服务启动完成后再启动

    depends_on:
    - service
  • 定义容器退出时的重启策略

    restart [strategy]

    no​:不重启

    always​:总是重启

  • 指定给容器的名称。它是一个唯一标识符

    container_name: [my_container]
  • 容器暴露的端口给连接的其他服务,但不会映射到宿主机

    expose:
    - "[port]"

常用命令

  1. 启动容器应用

    Terminal window
    docker-compose up
    • -d​:在后台启动服务。
    • --build​:构建服务,即使镜像已存在。
  2. 停止容器应用

    docker-compose down

    -v​:同时移除卷

    --rmi​:同时删除镜像