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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 【云原生|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/

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
12 2
|
1天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
10天前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
184 7
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
28天前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
239 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
15天前
|
Prometheus 监控 Cloud Native
基于Docker安装Grafana和Prometheus
Grafana 是一款用 Go 语言开发的开源数据可视化工具,支持数据监控和统计,并具备告警功能。通过 Docker 部署 Grafana 和 Prometheus,可实现系统数据的采集、展示和告警。默认登录用户名和密码均为 admin。配置 Prometheus 数据源后,可导入主机监控模板(ID 8919)进行数据展示。
49 2
|
18天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
45 2
|
18天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
25 3
|
19天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
28 3
|
21天前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
173 2
|
24天前
|
Kubernetes Cloud Native 开发者
探秘云原生计算:Kubernetes与Docker的协同进化
在这个快节奏的数字时代,云原生技术以其灵活性和可扩展性成为了开发者们的新宠。本文将带你深入了解Kubernetes和Docker如何共同塑造现代云计算的架构,以及它们如何帮助企业构建更加敏捷和高效的IT基础设施。