作者:禅与计算机程序设计艺术
1.简介
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个轻量级、可移植的镜像中,然后发布到任何流行的Linux或Windows服务器上,也可以实现虚拟化。基于容器的解决方案不但能够提高服务的分发和部署效率,更重要的是它将应用程序环境和运行时依赖隔离开来,使得应用的维护变得简单又安全。本文介绍了如何安装配置docker以及使用一些docker命令。
2.基本概念术语说明
2.1 什么是Docker?
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个轻量级、可移植的镜像中,然后发布到任何流行的Linux或Windows服务器上,也可以实现虚拟化。基于容器的解决方案不但能够提高服务的分发和部署效率,更重要的是它将应用程序环境和运行时依赖隔离开来,使得应用的维护变得简单又安全。
2.2 为什么要用Docker?
很多人都在使用Docker,但是为什么要用?主要有以下几点原因:
- 环境一致性:开发人员使用统一的环境部署代码,确保了所有成员在运行相同的代码和环境;而使用Docker,不同的开发人员可以共享同一个环境,节约了硬件成本,提高了工作效率。
- 自动化运维:通过自动化部署容器,将应用快速部署到生产环境,大大加快了软件交付周期。同时,通过Docker Swarm模式,可以进行弹性伸缩,满足业务需求不断增长的需要。
- 微服务架构:微服务架构下,每个服务都可以作为一个独立的容器,更好的管理资源和分配限额,降低单个服务的耦合性,提升了系统的可扩展性和弹性。
- 版本控制:由于每一个容器都是一个隔离的文件系统,可以把代码和依赖项进行版本控制,方便部署和回滚。
- 可移植性:Docker可以在各种主流Linux发行版上运行,并提供一个统一的接口。使得应用部署环境的一致性得到保证。
2.3 Docker的组成
Docker由三个主要组件构成:
- Docker客户端:用户用来执行Docker命令行指令的工具。
- Docker主机(或者服务器):运行着Docker守护进程和用户应用容器的机器。
- Docker仓库:存放镜像文件的地方,类似于Docker Hub。
2.4 Dockerfile
Dockerfile是用来定义镜像的内容文件,用来告诉Docker怎么构建镜像。每一个Dockerfile都包含一条或多条指令,告诉Docker从哪里获取基础镜像,需要添加哪些文件,以及启动容器后要运行的命令等等。这些指令构成了一个镜像的描述,可以通过Dockerfile创建多个不同的镜像。如下图所示:
2.5 Docker Image
Image是指已经编译好的、可以在本地运行的静态二进制文件。它包含了一切所需的数据和运行代码,包括代码、运行时、库、环境变量、配置文件、脚本等。
2.6 Docker Container
Container是镜像的运行实例,其内容包括镜像内所有文件及目录。一般情况下,一个镜像可以对应多个容器,每个容器可以被视为一个独立的运行环境。
2.7 Docker Registry
Registry是用于存储镜像文件的地方,类似于Docker Hub。除了官方的Registry之外,也可以自己搭建私有的Registry。
3. 安装配置Docker
3.1 在Ubuntu上安装Docker CE
(1)设置仓库
第一步,更新APT包索引:
sudo apt update
第二步,安装必要的依赖包:
sudo apt install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
第三步,添加GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
第四步,设置Docker的仓库:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
最后一步,更新APT包索引并安装Docker CE:
sudo apt update && sudo apt upgrade
sudo apt install docker-ce docker-ce-cli containerd.io
(2)验证安装
首先,查看Docker版本号:
sudo docker version
如果出现以下信息,则表示安装成功:
Client:
Version: 20.10.7
API version: 1.41
Go version: go1.13.8
Git commit: 20.10.7-0ubuntu1~20.04.1
Built: Wed Aug 4 22:52:58 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.7
API version: 1.41 (minimum version 1.12)
Go version: go1.13.8
Git commit: 20.10.7-0ubuntu1~20.04.1
Built: Wed Aug 4 19:07:47 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.5.2-0ubuntu1~20.04.2
GitCommit:
runc:
Version: 1.0.0~rc95-0ubuntu1~20.04.2
GitCommit:
3.2 在CentOS上安装Docker CE
(1)设置仓库
第一步,配置YUM源:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
第二步,安装Docker CE:
sudo yum update -y && sudo yum install -y docker-ce docker-ce-cli containerd.io
(2)验证安装
首先,查看Docker版本号:
sudo docker version
如果出现以下信息,则表示安装成功:
Client: Docker Engine - Community
Version: 20.10.7
API version: 1.41
Go version: go1.13.15
Git commit: f0df350
Built: Wed Jun 2 11:56:40 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.7
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: b0f5bc3
Built: Wed Jun 2 11:54:58 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.6
GitCommit: d71fcd7d8303cbf684402823e425e9dd2e99285d
runc:
Version: 1.0.0-rc95
GitCommit: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
docker-init:
Version: 0.19.0
GitCommit: de40ad0
3.3 配置镜像加速器
由于国内网络环境特殊,拉取Docker镜像很慢甚至无法下载,这时候可以使用国内镜像加速器提高下载速度。
目前国内主要有两个镜像加速器:
在终端输入以下命令配置镜像加速器:
# 替换$username为你的用户名,$accelerator为镜像加速器地址
echo '{"registry-mirrors": ["https://$username.mirror.aliyuncs.com", "$accelerator"]}'> /etc/docker/daemon.json
重新加载配置文件:
sudo systemctl daemon-reload && sudo systemctl restart docker