跳转至

Docker 安装与使用

约 1065 个字 92 行代码 1 张图片 预计阅读时间 5 分钟

介绍


安装与卸载

Windows

  • 默认安装到 C:\Program Files\Docker,管理员打开 CMD,输入以下命使其安装到 D 盘:
    • 安装到非 C 盘,Docker Desktop 后面的设置修改会报错,建议还是默认安装
mklink /J "C:\Program Files\Docker" "D:\"
  • 设置:
    • Resources -- Disk image location,将存储目录、修改为 D 盘
    • 换源:Docker Engine -- 添加 registry-mirrors 参数(下面的源可能失效)
{
  "registry-mirrors": [
      "https://registry.docker-cn.com",
      "http://hub-mirror.c.163.com",
      "https://docker.mirrors.ustc.edu.cn"
  ]
}

macOS

{
    "proxies": {
        "default": {
            "httpProxy": "http://127.0.0.1:7890",
            "httpsProxy": "http://127.0.0.1:7890",
            "noProxy": "localhost,127.0.0.1,.daocloud.io"
        }
    },
}

使用

工具

# 使用方法 添加前缀
              docker.io/library/busybox  # 原
m.daocloud.io/docker.io/library/busybox  # 添加镜像
          dockerhub.icu/library/busybox  # 添加镜像

Docker 命令

  • docker 命令
docker --help

# 通用命令:
  run         # 从一个镜像中创建并启动一个容器
  exec        # 在容器中执行一条命令
  ps          # 列出容器
  build       # 根据 Dockerfile 构建一个镜像
  pull        # 从 registry 拉取一个镜像
  push        # 推送一个镜像到 registry
  images      # 列出镜像
  login       # 登录到 registry
  logout      # 从 registry 退出
  search      # 在 Docker Hub 中搜索镜像
  info        # 查看 Docker 信息

# 管理命令:
  container   # 管理容器
  image       # 管理镜像
  network     # 管理网络

# 命令:
  attach      # 介入到一个正在运行的容器
  commit      # 根据容器的更改创建一个新的镜像
  cp          # 在本地文件系统与容器中复制文件/文件夹
  create      # 创建一个新容器
  kill        # 杀死一个或多个正在运行的容器
  logs        # 取得容器的日志
  rename      # 重命名一个容器
  restart     # 重新启动一个或多个容器
  rm          # 删除一个或多个容器
  rmi         # 删除一个或多个镜像
  start       # 启动一个或多个已经停止运行的容器
  stats       # 显示一个容器的实时资源占用
  stop        # 停止一个或多个正在运行的容器
  top         # 显示一个容器内的所有进程
  • docker run 命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

# 参数
-d --detach   # 后台运行
-it           # 交互式终端(两个参数)
--name        # 指定容器名称
-p --publish  # 将主机端口映射到容器内部的端口。如 -p 8080:80
-v --volume   # 挂载主机文件系统上的目录或文件到容器内部。如 -v /host/path:/container/path
--network     # 指定容器连接的网络。可以使用默认的 bridge 网络,也可以连接到自定义网络
-e --env      # 设置环境变量,将其传递给容器
--rm          # 在容器停止时自动删除容器
--link        # 连接容器到另一个容器,可以通过其他容器的别名来访问
--restart     # 容器重启策略,always、on-failure、unless-stopped 等

# 示例
docker run -it \
    --name texlive \
    -v $HOME/scripts:/workdir/scripts \
    texlive/texlive /bin/bash
  • 其他命令
docker container prune  # 删除已停止的容器
docker image prune      # 删除未使用的镜像
docker ps -a            # 查看所有容器(包括已停止的)
  • 注意事项:
    • docker run 时不指定容器名称,会自动分配名称,如 silly_hawking,用于临时容器或不需关心容器名称的情况下使用。
    • docker rundocker create 之间的区别:前者是创建容器并运行,后者是只创建容器。
    • docker pull library/hello-world 中的 library/hello-world 是镜像在仓库的位置,其中 library 是镜像所在的组,hello-world 是镜像名称;用 <repository>:<tag> 格式指定镜像版本,默认以 latest 作为默认标签
    • 不同的容器 Registry:
docker.io/XXX/XXX  # Docker Hub Registry
ghcr.io/XXX/XXX    # GitHub Container Registry
quay.io/XXX/XXX    # Quay.io RedHat Container Registry

制作镜像


Docker Compose

【docker入门2】实战~如何组织一个多容器项目docker-compose_哔哩哔哩_bilibili

  • Docker 的多容器控制(容器编排),用于 Docker 自动化;将多个 Docker 容器的操作命令,简化成一条命令,自动完成配置中的容器启动
docker-compose.yml      # 配置文件
.env                    # 环境变量文件

# docker compose 可写成 docker-compose
docker compose up -d    # 启动 Docker 服务
docker compose pull     # 拉取最新的 Docker 镜像
docker compose stop     # 停止服务
docker compose down     # 停止服务并删除容器
docker compose build    # 根据配置文件构建 Docker 镜像
docker compose ps       # 列出正在运行的服务
docker compose logs     # 日志

相关问题

  • Docker 容器中的数据如何同步(用 rsync,没找到其他好的方法)

  • Linux 版的 Docker Desktop 登录比 Windows 和 Mac 端要麻烦一些

  • 可通过 Docker 部署的应用(图源:水源社区)