Centos安装Docker的详细安装步骤,Docker相关组件:docker-ce-cli、docker-ce和containerd.io的区别

简介: Centos安装Docker的详细安装步骤,Docker相关组件:docker-ce-cli、docker-ce和containerd.io的区别;CentOS7安装DockerCompose;Docker镜像仓库

文章目录

0.安装Docker

1.CentOS安装Docker

  • 1.1.卸载(可选)
  • 1.2.安装docker
  • 1.3.启动docker
  • 1.4.配置镜像加速
  • 1.5 测试
  • 1.6 卸载docker

2.CentOS7安装DockerCompose

  • 2.1.下载
  • 2.2.修改文件权限
  • 2.3.Base自动补全命令

3.Docker镜像仓库

  • 3.1.简化版镜像仓库
  • 3.2.带有图形化界面版本(推荐)
  • 3.3.配置Docker信任地址

最近有个需求,将程序部署到docker上运行,此时就得在CentOS上安装docker,拉取相关容器、镜像。CentOS安装Docker的详细安装步骤如下。

0.安装Docker

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。

Docker CE 分为 stable testnightly 三个更新频道。

官方网站上有各种环境下的 安装指南,这里主要介绍 Docker CE 在 CentOS上的安装。

1.CentOS安装Docker

Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。

1.1.卸载(可选)

如果之前安装过旧版本的Docker,可以使用下面命令卸载:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

1.2.安装docker

1)首先需要大家虚拟机联网,安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

注意此处可能会报错Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=vag error was 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"。没有该报错的直接进行 2)更新本地yum镜像源。

1-1.png

网上找了很多教程,尝试多次都无果,以为是网络不可达,反复检查 ip,网关,DNS 以及各种 ping后都确定没问题。最后找到的解决方案(成功解决)——备份删除/etc/yum.repos.d/下的CentOS-Base.repo,使用,参考 。

cd /etc/yum.repos.d/
cp CentOS-Base.repo CentOS-Base.repo.backup

rm -rf CentOS-Base.repo
touch CentOS-Base.repo

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository/conf/CentOS-7-anon.repo
vi CentOS-Base.repo

yum clean all
yum makecache
yum install -y yum-utils
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast

补充:什么是yum-utils程序

yum-utils是yum的工具包集合,由不同的作者开发,使yum使用起来更加方便和强大。包括:debuginfo-install,find-repos-of-install, needs-restarting, package-cleanup, repoclosure, epodiff, repo-graph, repomanage, repoquery, repo-rss, reposync,: repotrack, show-installed, show-changed-rco, verifytree, yumdownloader, yum-builddep,yum-complete-transaction, yum-config-manager, yum-debug-dump, yum-debug-restore and yum-groups-manager.等

2)更新本地yum镜像源(官方镜像比较慢 不推荐,推荐阿里镜像仓库):

# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast    #安装前先更新yum软件包索引

3)安装docker,输入命令:

yum install -y docker-ce      #或以下
yum install docker-ce docker-ce-cli containerd.io

docker-ce为社区免费版本。稍等片刻,docker即可安装成功。

Docker相关组件:docker-ce-cli、docker-ce和containerd.io的区别

概述
docker-ce-cli 是Docker的命令行客户端,用于与Docker守护程序交互;docker-ce 是Docker的社区版,提供了完整的容器化平台;而containerd.io 则是底层的容器运行时组件,用于管理容器的生命周期和镜像管理。这些组件在Docker生态系统中各自发挥着不同的作用,共同构成了强大的容器化解决方案。

Docker-ce-cli
Docker-ce-cli 是Docker的命令行客户端工具(Command Line Interface)。它允许用户通过命令行界面与Docker守护程序进行交互,从而管理容器和镜像。使用docker命令,可以构建、运行、停止、删除容器,以及管理Docker镜像、网络、卷等。Docker-ce-cli 提供了与Docker守护程序通信的途径,使可以轻松地管理容器化应用。

Docker-ce
Docker-ce,全称为Docker Community Edition,是Docker的社区版。它是一个完整的容器化平台,包括了Docker-ce-cli以及其他必要的组件,如Docker守护程序和基础设施管理工具。广义来说,docker-ce包含了dockerd(Docker守护进程)、docker命令行工具、docker-compose等组件;狭义上来讲,docker-ce 是与 docker containerd.io、docker-ce-cli 并列的服务组件。Docker-ce 提供了构建、发布和运行容器化应用所需的一切,使开发者能够更加高效地管理和部署应用程序。它还支持多种操作系统,包括Linux、Windows和macOS。

Containerd.io
Containerd.io 是一个面向容器运行时的基本组件。它充当了Docker引擎的核心,负责管理容器的生命周期、镜像管理和存储。实际上,Docker-ce内部使用containerd.io来处理容器的创建、销毁和运行等操作。containerd.io 的设计更加注重稳定性和可扩展性,使其成为容器生态系统的关键基础。

1.3.启动docker

Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!

启动docker前,一定要关闭防火墙后!!

启动docker前,一定要关闭防火墙后!!

启动docker前,一定要关闭防火墙后!!

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

通过命令启动docker:

systemctl start docker  # 启动docker服务
systemctl stop docker  # 停止docker服务
systemctl restart docker  # 重启docker服务

然后输入命令,可以查看docker版本:

docker -v
docker version

如图:

1-2.png

上述已经完成了docker安装,下面需要做一些简单的配置。

1.4.配置镜像加速

docker官方镜像仓库Docker Hub 下载速度在国内是很慢的、网速较差,我们需要设置国内镜像服务,换为阿里云的参考:

参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

进入阿里云官网,搜索 容器镜像服务,选择CentOS,如下图所示

1-3.png

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://z4zszcfk.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

1.5 测试

我们拉取hello-wolrd,查看运行

docker version     #查询docker版本
systemctl status docker.service     #查询Docker服务状态
docker images      #查看镜像
docker ps          #查看运行的容器
docker ps -a       #查看所有的容器

docker pull hello-world     #拉取hello-world
docker images
docker run hello-wolrd      #运行hello-world
docker inspect 容器名        #获取容器更多信息

#移除hello-wolrd
docker stop 容器ID/容器名
docker rm hello-wolrd

1.6 卸载docker

#卸载依赖
sudo yum remove docker-ce docker-ce-cli containerd.io

#删除文件夹
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

2.CentOS7安装DockerCompose

2.1.下载

Linux下需要通过命令下载:

# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

如果下载速度较慢,或者下载失败,可以使用课前资料提供的docker-compose文件:

2-1.png

上传到/usr/local/bin/目录也可以。

2.2.修改文件权限

修改文件权限:

# 修改权限
chmod +x /usr/local/bin/docker-compose

2.3.Base自动补全命令

# 补全命令  将来
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果这里出现错误,需要修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

3.Docker镜像仓库

搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。

官网地址:https://hub.docker.com/_/registry

3.1.简化版镜像仓库

Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。

搭建方式比较简单,命令如下:

docker run -d \
    --restart=always \
    --name registry    \
    -p 5000:5000 \
    -v registry-data:/var/lib/registry \
    registry

命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。

访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像,YourIp是你的镜像仓库所在电脑的ip。

3.2.带有图形化界面版本(推荐)

使用DockerCompose部署带有图象界面的DockerRegistry【并非docker官方提供,第三方个人在registry基础上开发,故使用DockerCompose将两者组合部署】,命令如下:

version: '3.0'
services:
  registry:
    image: registry
    volumes:
      - ./registry-data:/var/lib/registry
  ui:
    image: joxit/docker-registry-ui:static
    ports:
      - 8080:80
    environment:
      - REGISTRY_TITLE=传智教育私有仓库
      - REGISTRY_URL=http://registry:5000
    depends_on:
      - registry

浏览器访问 http://192.168.150.101:8080

3.3.配置Docker信任地址

我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:

# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
"insecure-registries":["http://192.168.150.101:8080"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

参考 黑马程序员相关视频及笔记

相关实践学习
通过ACR快速部署网站应用
本次实验任务是在云上基于ECS部署Docker环境,制作网站镜像并上传至ACR镜像仓库,通过容器镜像运行网站应用,网站运行在Docker容器中、网站业务数据存储在Mariadb数据库中、网站文件数据存储在服务器ECS云盘中,通过公网地址进行访问。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes 调度 虚拟化
Kubernetes和Docker有什么区别
【10月更文挑战第18天】Kubernetes和Docker有什么区别
|
存储 Kubernetes C++
Docker、containerd、CRI-O 和 runc 之间的区别
通过理解这些组件的角色和功能,可以更好地选择和配置容器环境,以满足特定的需求和应用场景。
929 25
|
网络协议 Linux 网络安全
docker centos镜像 npm安装包时报错“npm ERR! code ECONNRESET”
通过上述步骤,您可以有效解决在 Docker 中使用 CentOS 镜像安装 npm 包时遇到的 "npm ERR! code ECONNRESET" 错误。希望这些方法能帮助您顺利进行 npm 包的安装。
933 26
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
492 20
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
663 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
关系型数据库 MySQL Docker
docker pull mysql:8.0.26提示Error response from daemon: Get “https://registry-1.docker.io/v2/“: EOF错误
docker pull mysql:8.0.26提示Error response from daemon: Get “https://registry-1.docker.io/v2/“: EOF错误
4656 9
|
存储 Kubernetes Docker
Kubernetes(k8s)和Docker Compose本质区别
理解它们的区别和各自的优势,有助于选择合适的工具来满足特定的项目需求。
1628 19
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
3641 11