欢迎来到Docker入门系列的第二篇博客!在上一篇博客中,我们已经介绍了Docker的基本概念和作用,以及为什么它成为现代应用开发和部署的关键技术。本篇博客将着重讨论Docker的安装和配置,帮助您开始使用Docker并为您的应用程序提供一个稳定和可靠的容器化环境。
Docker的安装和配置是使用Docker之前的第一步,也是使用Docker的关键。正确地安装和配置Docker,可以确保您能够顺利运行容器并享受到Docker的强大功能。在本篇博客中,我们将详细介绍Docker在不同操作系统上的安装方法,提供步骤和示例来帮助您快速上手。
无论您是使用Windows、macOS还是Linux,都可以在相应的操作系统上安装Docker。我们将为您提供详细的安装步骤和方法,并引导您通过官方渠道获取安装包或使用其他可靠的安装方法。此外,我们还将讨论Docker的配置和初始化,包括Docker Daemon的配置、用户和权限管理、镜像加速器配置、网络配置以及存储配置等方面。
Docker是一个跨平台的容器化平台,支持在多个操作系统和平台上运行。下面我们将介绍Docker支持的操作系统和平台,并提供安装Docker前的操作系统要求和准备工作。
Docker支持在Windows操作系统上运行,并提供了两种不同的安装方式,具体取决于您的Windows版本。
Docker也支持在macOS上运行,并提供了一个名为Docker Desktop的完整安装包。
Docker在Linux上的安装相对简单,并且适用于许多不同的Linux发行版。以下是一些常用的Linux发行版的安装方法:
Docker 支持以下版本的 Ubuntu 操作系统:
Docker 可以安装在 64 位的 x86 平台或 ARM 平台上。Ubuntu 发行版中,LTS(Long-Term-Support)长期支持版本,会获得 5 年的升级维护支持,这样的版本会更稳定,因此在生产环境中推荐使用 LTS 版本。
旧版本的 Docker 称为 docker
或者 docker-engine
,使用以下命令卸载旧版本:
$ sudo apt-get remove docker \
docker-engine \
docker.io
由于 apt
源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。
为了确认所下载软件包的合法性,需要添加软件源的 GPG
密钥。
$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 官方源
# $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
然后,我们需要向 sources.list
中添加 Docker 软件源
$ echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 官方源
# $ echo \
# "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
# $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
以上命令会添加稳定版本的 Docker APT 镜像源,如果需要测试版本的 Docker 请将 stable 改为 test。
更新 apt 软件包缓存,并安装 docker-ce
:
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Ubuntu 系统上可以使用这套脚本安装,另外可以通过 --mirror
选项使用国内源进行安装:
若你想安装测试版的 Docker, 请从 test.docker.com 获取脚本
# $ curl -fsSL test.docker.com -o get-docker.sh
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
# $ sudo sh get-docker.sh --mirror AzureChinaCloud
执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 的稳定(stable)版本安装在系统中。
$ sudo systemctl enable docker
$ sudo systemctl start docker
默认情况下,docker
命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root
用户和 docker
组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root
用户。因此,更好地做法是将需要使用 docker
的用户加入 docker
用户组。
建立 docker
组:
$ sudo groupadd docker
将当前用户加入 docker
组:
$ sudo usermod -aG docker $USER
退出当前终端并重新登录,进行如下测试。
$ docker run --rm hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:308866a43596e83578c7dfa15e27a73011bdd402185a84c5cd7f32a88b501a24
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
若能正常输出以上信息,则说明安装成功。
Docker Desktop for Mac 要求系统最低为 macOS 必须是 10.15 或更高版本, Catalina、Big Sur 或者 Monterey,建议升级到最新版本的 macOS。
Homebrew 的 Cask 已经支持 Docker Desktop for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装:
$ brew install --cask docker
如果需要手动下载,请点击以下 链接 下载 Docker Desktop for Mac。
如果你的电脑搭载的是 M1 芯片(
arm64
架构),请点击以下 链接 下载 Docker Desktop for Mac。你可以在 官方文档 查阅已知的问题。
从应用中找到 Docker 图标并点击运行。
然后就会弹出一个页面
并且右上角菜单栏会有鲸鱼图标
之后,你可以在终端通过命令检查安装后的 Docker 版本。
$ docker --version
Docker version 20.10.17, build 100c701
如果 docker version
、docker info
都正常的话,可以尝试运行一个 Nginx 服务器:
$ docker run -d -p 80:80 --name webserver nginx
服务运行后,可以访问 http://localhost,如果看到了 “Welcome to nginx!”,就说明 Docker Desktop for Mac 安装成功了。
要停止 Nginx 服务器并删除执行下面的命令:
$ docker stop webserver
$ docker rm webserver
Docker Desktop for Windows 支持 64 位版本的 Windows 10 Pro,且必须开启 Hyper-V(若版本为 v1903 及以上则无需开启 Hyper-V),或者 64 位版本的 Windows 10 Home v1903 及以上版本。
点击以下 [链接](https://desktop.docker.com/win/main/amd64/Docker Desktop Installer.exe) 下载 Docker Desktop for Windows。
下载好之后双击 Docker Desktop Installer.exe
开始安装。
$ winget install Docker.DockerDesktop
若你的 Windows 版本为 Windows 10 专业版或家庭版 v1903 及以上版本可以使用 WSL2 运行 Docker,具体请查看 Docker Desktop WSL 2 backend。
在 Windows 搜索栏输入 Docker 点击 Docker Desktop 开始运行。
Docker 启动之后会在 Windows 任务栏出现鲸鱼图标。
等待片刻,当鲸鱼图标静止时,说明 Docker 启动成功,之后你可以打开 PowerShell 使用 Docker。
推荐使用 Windows Terminal 在终端使用 Docker。
国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务,例如:
https://hub-mirror.c.163.com
https://mirror.baidubce.com
由于镜像服务可能出现宕机,建议同时配置多个镜像。各个镜像站测试结果请到 docker-practice/docker-registry-cn-mirror-test 查看。
国内各大云服务商(腾讯云、阿里云、百度云)均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务,具体请参考本页最后一小节。
本节我们以 网易云 镜像服务 https://hub-mirror.c.163.com
为例进行介绍。
目前主流 Linux 发行版均已使用 systemd 进行服务管理,这里介绍如何在使用 systemd 的 Linux 发行版中配置镜像加速器。
请首先执行以下命令,查看是否在 docker.service
文件中配置过镜像地址。
$ systemctl cat docker | grep '\-\-registry\-mirror'
如果该命令有输出,那么请执行 $ systemctl cat docker
查看 ExecStart=
出现的位置,修改对应的文件内容去掉 --registry-mirror
参数及其值,并按接下来的步骤进行配置。
如果以上命令没有任何输出,那么就可以在 /etc/docker/daemon.json
中写入如下内容(如果文件不存在请新建该文件):
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。
之后重新启动服务。
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
对于使用 Windows 10
的用户,在任务栏托盘 Docker 图标内右键菜单选择 Settings
,打开配置窗口后在左侧导航菜单选择 Docker Engine
,在右侧像下边一样编辑 json 文件,之后点击 Apply & Restart
保存后 Docker 就会重启并应用配置的镜像地址了。
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
对于使用 macOS 的用户,在任务栏点击 Docker Desktop 应用图标 -> Settings...
,在左侧导航菜单选择 Docker Engine
,在右侧像下边一样编辑 json 文件。修改完成之后,点击 Apply & restart
按钮,Docker 就会重启并应用配置的镜像地址了。
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
执行 $ docker info
,如果从结果中看到了如下内容,说明配置成功。
Registry Mirrors:
https://hub-mirror.c.163.com/
k8s.gcr.io
镜像可以登录 阿里云 容器镜像服务 镜像中心 -> 镜像搜索 查找。
例如 k8s.gcr.io/coredns:1.6.7
镜像可以用 registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7
代替。
一般情况下有如下对应关系:
# $ docker pull k8s.gcr.io/xxx
$ docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/xxx
某些镜像不再提供服务,添加无用的镜像加速器,会拖慢镜像拉取速度,你可以从镜像配置列表中删除它们。
建议 watch(页面右上角) 镜像测试 这个 GitHub 仓库,我们会在此更新各个镜像地址的状态。
某些云服务商提供了 仅供内部 访问的镜像服务,当您的 Docker 运行在云平台时可以选择它们。
https://dockerhub.azk8s.cn
https://mirror.ccs.tencentyun.com
解决方案:首先,确保您的操作系统满足Docker的要求,并按照官方文档提供的步骤进行准备工作。如果仍然遇到依赖项错误或缺失,您可以尝试更新操作系统或重新安装Docker。
示例代码(Ubuntu):
sudo apt update
sudo apt upgrade
解决方案:检查Docker引擎的状态并查看错误日志,可以使用适当的命令来启动或重启Docker引擎。如果问题仍然存在,您可以尝试卸载并重新安装Docker。
示例代码(Linux):
sudo systemctl start docker
sudo systemctl status docker
解决方案:检查网络连接是否正常,并确保防火墙或代理设置不会阻止Docker的网络访问。您还可以尝试更改Docker配置以使用镜像加速器或设置代理。
示例代码(设置镜像加速器):
sudo vi /etc/docker/daemon.json
在文件中添加以下内容:
{
"registry-mirrors": ["https://" ]
}
保存并退出文件,然后重启Docker引擎。
解决方案:检查容器的状态和日志,以查看是否有任何错误或异常。确保容器的依赖项和配置正确,并尝试重新创建容器。
示例代码(查看容器日志):
docker logs <container-id>
解决方案:使用镜像加速器可以提高映像下载速度。您可以在Docker配置中配置镜像加速器或使用国内的镜像源。
示例代码(配置镜像加速器):
sudo vi /etc/docker/daemon.json
在文件中添加以下内容:
{
"registry-mirrors": ["https://" ]
}
保存并退出文件,然后重启Docker引擎。
这些示例代码可以帮助您解决一些常见问题和故障。请根据您的具体情况和操作系统的要求进行相应的调整。同时,建议参阅Docker官方文档和相关教程,以获取更全面的故障排除指南和示例代码。
在本篇博客中,我们详细介绍了Docker的安装和配置。我们首先了解了Docker的支持平台,包括Windows、macOS和Linux等多个操作系统。针对不同平台,我们提供了相应的安装方法和步骤,确保您能够顺利地安装和配置Docker。
在安装和配置过程中,我们强调了操作系统要求和准备工作的重要性。通过遵循官方文档和指南,您可以确保您的操作系统满足Docker的要求,并进行必要的配置和准备工作。
针对不同的操作系统,我们提供了具体的安装方法和示例代码。无论您是在Windows、macOS还是Linux上安装Docker,都可以按照相应的步骤和指南进行操作,并借助示例代码解决常见的安装和配置问题。
通过正确安装和配置Docker,您将获得一个强大而可靠的容器化平台,为您的应用程序开发和部署提供便利和效率。容器化技术的出现解决了传统开发中的环境配置难题,使开发者能够更专注于应用程序的开发和创新。
作为现代应用开发和部署的关键技术,Docker具有诸多优势,包括环境隔离、可移植性、资源利用率高等。通过使用Docker,您可以创建、运行和管理容器化的应用程序,并在不同的环境中进行部署,从而提高开发和部署的灵活性和效率。
希望通过本篇博客,您对Docker的安装和配置有了更全面的了解,并能够顺利地开始使用这一强大的容器化平台。继续探索Docker的世界,您将享受到容器化技术带来的便利和创新!
参考
Docker-从入门到实践:https://yeasy.gitbook.io/docker_practice/