【云原生|Docker系列第2篇】Docker的安装和配置

简介: 【云原生|Docker系列第2篇】Docker的安装和配置

欢迎来到Docker入门系列的第二篇博客!在上一篇博客中,我们已经介绍了Docker的基本概念和作用,以及为什么它成为现代应用开发和部署的关键技术。本篇博客将着重讨论Docker的安装和配置,帮助您开始使用Docker并为您的应用程序提供一个稳定和可靠的容器化环境。

Docker的安装和配置是使用Docker之前的第一步,也是使用Docker的关键。正确地安装和配置Docker,可以确保您能够顺利运行容器并享受到Docker的强大功能。在本篇博客中,我们将详细介绍Docker在不同操作系统上的安装方法,提供步骤和示例来帮助您快速上手。

无论您是使用Windows、macOS还是Linux,都可以在相应的操作系统上安装Docker。我们将为您提供详细的安装步骤和方法,并引导您通过官方渠道获取安装包或使用其他可靠的安装方法。此外,我们还将讨论Docker的配置和初始化,包括Docker Daemon的配置、用户和权限管理、镜像加速器配置、网络配置以及存储配置等方面。

目录

你将收获


  • 了解在不同操作系统上安装Docker的步骤和方法。
  • 学习如何配置和初始化Docker,以适应您的特定需求。
  • 掌握常见的Docker配置技巧,包括网络配置和存储配置。
  • 解决一些常见的安装和配置问题,并学会进行故障排除。

Docker的支持平台


Docker是一个跨平台的容器化平台,支持在多个操作系统和平台上运行。下面我们将介绍Docker支持的操作系统和平台,并提供安装Docker前的操作系统要求和准备工作。

1. Windows支持:

Docker支持在Windows操作系统上运行,并提供了两种不同的安装方式,具体取决于您的Windows版本。

  • Docker Desktop:适用于Windows 10及以上版本的操作系统,提供了一个用户友好的图形界面和命令行界面。您可以从Docker官方网站下载Docker Desktop的安装程序,并按照官方指南进行安装。
  • Docker Toolbox:适用于Windows 7、8和早期版本的Windows操作系统。Docker Toolbox使用VirtualBox来创建一个Linux虚拟机,其中运行Docker引擎。您可以从Docker官方网站下载Docker Toolbox的安装程序,并按照官方指南进行安装。

2. macOS支持:

Docker也支持在macOS上运行,并提供了一个名为Docker Desktop的完整安装包。

  • Docker Desktop:适用于macOS操作系统。您可以从Docker官方网站下载Docker Desktop的安装程序,并按照官方指南进行安装。

3. Linux支持:

Docker在Linux上的安装相对简单,并且适用于许多不同的Linux发行版。以下是一些常用的Linux发行版的安装方法:

  • Ubuntu:在Ubuntu上安装Docker的推荐方法是使用apt包管理工具。您可以按照Docker官方网站上提供的安装指南进行操作。
  • CentOS:在CentOS上安装Docker的推荐方法是使用yum包管理工具。您可以按照Docker官方网站上提供的安装指南进行操作。
  • 其他发行版:Docker还提供了其他常见Linux发行版的安装指南,如Debian、Fedora等。您可以在Docker官方网站上查找相应的安装指南。

Docker的安装


Ubuntu


准备工作

系统要求

Docker 支持以下版本的 Ubuntu 操作系统:

  • Ubuntu Hirsute 21.04
  • Ubuntu Groovy 20.10
  • Ubuntu Focal 20.04 (LTS)
  • Ubuntu Bionic 18.04 (LTS)

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 安装

由于 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。

安装 Docker

更新 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)版本安装在系统中。

启动 Docker

$ sudo systemctl enable docker
$ sudo systemctl start docker

建立 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 是否安装正确

$ 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/

若能正常输出以上信息,则说明安装成功。

macOS

系统要求

Docker Desktop for Mac 要求系统最低为 macOS 必须是 10.15 或更高版本, Catalina、Big Sur 或者 Monterey,建议升级到最新版本的 macOS。

安装

使用 Homebrew 安装

HomebrewCask 已经支持 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 versiondocker 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

Windows 10

系统要求

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安装
$ winget install Docker.DockerDesktop

在 WSL2 运行 Docker

若你的 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 拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务,例如:

由于镜像服务可能出现宕机,建议同时配置多个镜像。各个镜像站测试结果请到 docker-practice/docker-registry-cn-mirror-test 查看。

国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务,具体请参考本页最后一小节。

Ubuntu 16.04+、Debian 8+、CentOS 7+

目前主流 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

对于使用 Windows 10 的用户,在任务栏托盘 Docker 图标内右键菜单选择 Settings,打开配置窗口后在左侧导航菜单选择 Docker Engine,在右侧像下边一样编辑 json 文件,之后点击 Apply & Restart 保存后 Docker 就会重启并应用配置的镜像地址了。

{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}

macOS

对于使用 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 仓库,我们会在此更新各个镜像地址的状态。


常见问题和故障排除


问题1:安装Docker时遇到依赖项错误或缺失。

解决方案:首先,确保您的操作系统满足Docker的要求,并按照官方文档提供的步骤进行准备工作。如果仍然遇到依赖项错误或缺失,您可以尝试更新操作系统或重新安装Docker。

示例代码(Ubuntu):

sudo apt update
sudo apt upgrade

问题2:无法启动Docker引擎。

解决方案:检查Docker引擎的状态并查看错误日志,可以使用适当的命令来启动或重启Docker引擎。如果问题仍然存在,您可以尝试卸载并重新安装Docker。

示例代码(Linux):

sudo systemctl start docker
sudo systemctl status docker

问题3:无法访问Docker Hub或其他Docker仓库。

解决方案:检查网络连接是否正常,并确保防火墙或代理设置不会阻止Docker的网络访问。您还可以尝试更改Docker配置以使用镜像加速器或设置代理。

示例代码(设置镜像加速器):

sudo vi /etc/docker/daemon.json

在文件中添加以下内容:

{
  "registry-mirrors": ["https://<mirror-url>"]
}

保存并退出文件,然后重启Docker引擎。

问题4:容器无法正常运行或启动。

解决方案:检查容器的状态和日志,以查看是否有任何错误或异常。确保容器的依赖项和配置正确,并尝试重新创建容器。

示例代码(查看容器日志):

docker logs <container-id>

问题5:Docker映像下载速度慢。

解决方案:使用镜像加速器可以提高映像下载速度。您可以在Docker配置中配置镜像加速器或使用国内的镜像源。

示例代码(配置镜像加速器):

sudo vi /etc/docker/daemon.json

在文件中添加以下内容:

{
  "registry-mirrors": ["https://<mirror-url>"]
}

保存并退出文件,然后重启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/

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
kde
|
2月前
|
Kubernetes 关系型数据库 文件存储
手把手教你完成极空间 NAS Docker 镜像加速配置
本教程详细介绍了如何在极空间NAS上配置轩辕镜像加速器,以提升Docker镜像的下载速度与稳定性。内容涵盖账号注册、网络确认、加速器设置及验证方法,并提供常见问题解决方案,帮助用户高效完成容器化应用部署。
kde
459 2
kde
|
2月前
|
文件存储 数据安全/隐私保护 开发者
群晖NAS Docker镜像源加速配置教程
本教程介绍了群晖NAS用户如何通过配置轩辕镜像加速服务提升Docker镜像拉取速度。内容包括配置前准备、详细设置步骤及日常使用说明,帮助用户快速完成配置并享受高效稳定的镜像下载体验。
kde
1055 59
kde
|
Docker 容器 文件存储
飞牛fnOS Docker镜像加速配置全攻略
本文介绍了如何在飞牛fnOS中配置Docker镜像加速服务,通过设置轩辕镜像仓库加速器,提升镜像拉取速度与稳定性。内容涵盖配置前准备、加速源设置、首选加速源调整及使用指南,帮助用户高效完成镜像操作。
kde
604 56
|
2月前
|
Java 分布式数据库 Docker
使用Docker配置并连接HBase的Java API
本流程概要的解释了如何在Docker上配置并启动HBase服务,并通过Java API进行连接和操作表,不涉及具体的业务逻辑处理和数据模型设计,这些因应用而异需由开发者根据实际需求进行实现。
100 13
|
3月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
299 4
|
3月前
|
Linux iOS开发 Docker
MyEMS开源系统安装之Linux/macOS上的DOcker
本指南详细介绍了如何在Linux/macOS上使用Docker部署MyEMS系统。主要内容包括:前置条件(如安装Docker、npm和MySQL),以及分步骤部署各个组件(如myems-api、myems-admin、myems-modbus-tcp等)。每个步骤涵盖源代码复制、环境配置、镜像构建、容器运行及日志管理等操作,并提供了多平台构建的支持。最后,指南还说明了默认端口和登录凭据,帮助用户快速启动并访问MyEMS的管理界面和Web界面。
108 1
|
4月前
|
关系型数据库 MySQL 数据库
Docker 安装常用软件相关命令
本文介绍了在CentOS 7.9系统上安装Docker的详细步骤,包括添加阿里云镜像源、安装Docker及相关组件、启动服务以及配置镜像加速。同时,还展示了如何通过Docker安装MySQL 5.7版本数据库,涵盖拉取镜像、创建数据目录、运行容器及配置挂载点等操作,并提供验证安装成功的命令和截图。适合需要部署Docker与MySQL环境的用户参考。
270 6