容器技术基本概念
容器:容器是一个标准化的软件单元,它将代码、依赖项和配置文件打包在一起。容器之间是隔离的,但它们共享同一个操作系统内核。
镜像:容器镜像是容器的静态表示,包含了运行容器所需的所有文件和配置。镜像可以被存储、共享和重复使用。
容器引擎:容器引擎是用于创建、运行和管理容器的软件。Docker是最流行的容器引擎之一。
容器编排:容器编排工具用于管理多个容器的生命周期,包括部署、扩展和监控。Kubernetes是最流行的容器编排工具。
安装 Docker
在 Windows 或 macOS 上安装
Docker 使用了 Linux 内核的容器特性,它依赖于 Linux。所以在 Windows 和 macOS 上,Docker 不得不通过虚拟 Linux 内核的方式来完成任务。
Docker 也支持「Windows 容器」。
在 Linux 上安装
注意区分 docker docker.io docker-ce
Docker 官方提供了安装 Docker 社区版本的简易安装脚本:
1 | curl -fsSL https://get.docker.com -o get-docker.sh |
不要在 WSL1 中安装 Docker 。但可以在 WSL2 安装。
在安装完成后,可以使用
1 | sudo adduser 用户名 docker |
推荐将需要使用 Docker 的用户加入 docker 用户组。注意:docker 用户组中的用户拥有与 root 等效的权限。
1 | sudo groupadd docker # 确保 docker 组存在(一般默认已经有) |
然后注销并重新登录用户,以使用户组更改生效。
或者使用
1 | newgrp docker |
命令使用户组更改生效。
配置 Registry Mirror
在国内,由于网络原因,Docker Hub 的下载速度可能会很慢。可以配置 Docker 使用国内的镜像源。
编辑 /etc/docker/daemon.json 文件,如果文件不存在则创建它:
1 | { |
注意: 维护公共使用的 Docker Hub pull-through cache (registry mirror) 需要非常高的运维成本,因而有很多服务在之前可以使用,但是之后被迫关闭或转为非公开。因此这里列出的镜像源可能不再可用。
当 registry-mirrors 配置项的镜像源不可用时,Docker 会自动使用 Docker Hub 的镜像源,此时就可能出现即使配置了镜像源,但是下载速度仍然很慢的情况,甚至是报错连接超时,产生类似如下错误:
1
2 Using default tag: latest
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
重启 Docker 服务使配置生效:
1 | sudo systemctl daemon-reload |
如果此时再运行 docker info
命令,应该可以看到镜像源的配置,如下所示:
1 | Registry Mirrors: |
此时,Docker 将会优先使用配置的镜像源。
可以使用 Hello World 镜像测试 Docker 是否可以正常工作:
1 | docker run --rm hello-world |
使用 Docker 容器
以下部分主要参考 Docker 中文文档指南