Docker入门与安装
Docker简介
Docker是一个开源的容器引擎,有助于更快速地交付应用。Docker将应用程序和基础设施隔离,并且能将基础设施当做程序一样进行管理。使用Docker,可以更快速地打包,测试以及部署应用程序。
Docker架构
图中包含的组件
- Docker daemon(Docker守护进程)
- Client(Docker客户端)
- Images(Docker镜像)
Docker镜像是一个只读模板,它包含了docker容器的说明。使用Docker镜像可以运行Docker镜像中的程序。 - Container(容器)
容器是镜像的可运行实例。镜像和容器的关系类似于OOP中的类和实例的关系。 - Registry
Docker Registry是一个集中存储与分发镜像的服务。
一个Docker Registry可以包含多个Docker仓库,每个仓库可以包含多个镜像标签,每个标签对应一个Docker镜像。
安装Docker CE
OS requirements
要安装Docker CE,需要一个CentOS7的maintained version。不支持或测试archived versions。
必须启用centos-extras存储库。默认情况下启用此存储库,但如果您禁用了它,则需要重新启用它。
建议使用overlay2存储驱动程序。
卸载旧版本
Docker的旧版本称为Docker或Docker-engine。如果安装了这些文件,请卸载它们以及相关的依赖项。如果yum报告说没有安装这些包,也没有关系。
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
可以使用yum list installed | grep docker列出已安装的docker相关项。
使用存储库安装Docker CE
在第一次在新主机上安装Docker CE之前,需要设置Docker存储库。然后,您可以从存储库安装和更新Docker。
SET UP THE REPOSITORY
- 安装所需要的包。yum-utils提供yum-config-manager实用程序,设备映射器存储驱动程序需要device-mapper-persistent-data和lvm2。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- 使用以下命令设置stable repository。
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
INSTALL DOCKER CE
- 安装最新版本的Docker CE和containerd,或进入下一步安装特定版本:
sudo yum install docker-ce docker-ce-cli containerd.io
- 要安装特定版本的Docker CE,请在repo中列出可用版本,然后选择并安装。
a. 列出并分类repositories中可用的版本。这个例子按照版本号从高到低排序:
yum list docker-ce --showduplicates | sort -r
返回的列表取决于启用了哪些存储库,并且特定于CentOS版本
b. 通过其完全限定的包名安装特定的版本
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
- 启动并加入开机启动
sudo systemctl start docker
sudo systemctl enable docker
- 通过运行hello-world映像,验证Docker CE是否正确安装。
docker run hello-world
错误整理
解决Docker:Error response from daemon:...: net/http: TLS handshake timeout.
问题:
# docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout.
分析:
docker默认镜像拉取地址为国外仓库下载速度较慢,则会报错“net/http: TLS handshake timeout”。
解决方法:
- 进入阿里云镜像加速器页面 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
- 配置镜像加速器,您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://u5kqywr6.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker