Docker的安装和容器的运行

发布时间:2024-12-22 人气:117次

00前言

最近安装Alphafold3,在构建镜像时又被Docker硬控了一把,让我不得不把Docker的学习提上日程。准备出一个系列,名字就叫“每天5分钟浅学Docker容器技术”,该系列基于CloudMan的书籍《每天5分钟玩转Docker容器技术》(末尾“资料领取”处可领取该书电子版),记录学习过程,在学习的过程中将理论结合实际贯彻到底,例如书中的系统是Ubuntu且基于虚拟机进行的讲解,我做练习的是CentOS系统版本的服务器。此外,我还记录了学习中遇到的问题以及问题的解决方法,给大家提供参考。

01Docker简介

简单来说,Docker 是一种开源平台,旨在简化应用程序的开发、交付和部署过程。它利用容器技术,通过将应用及其所有依赖打包到一个轻量级的容器中,实现“构建一次,运行到处”的目标。容器是独立、隔离的运行环境,可以在任何地方(如本地开发环境、服务器或云端)一致地运行。例如,DeepMind团队开发的AlphaFold 3 通过与容器技术结合,使得其他研究人员能够更便捷地分享、复现、部署其计算环境,避免了传统环境配置的复杂性,同时提升了性能和计算效率。

02准备工作

今天学习Docker的安装和容器的运行。本系列的教程使用的服务器系统为CentOS 7,软件安装工具为yum,需要root权限。

03开始安装

3.1 安装一些必要的工具sudo yum install -y yum-utils device-mapper-persistent-data lvm2yum-utils:提供yum-config-manager功能,用于管理和配置 yum仓库的设置,使用户方便地查看、启用、禁用和管理系统中的 yum仓库。device-mapper-persistent-data:是一个与 Device Mapper 相关的软件包,它提供了对 devicemapper 的持久化存储支持 。在Docker 使用 devicemapper 存储驱动时,它能够管理容器的存储层和块设备,确保容器的镜像和数据层能够存储和回收,从而优化存储利用。lvm2:是 LVM (Logical Volume Manager) 的工具包,支持快照、条带化(RAID)、镜像等高级存储管理功能。

3.2 添加Docker仓库添加Docker的仓库到yum的源列表,以便能够安装最新版的Docker。sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo仓库添加后可到目录/etc/yum.repos.d/查看,红色方框文件是我刚添加的Docker仓库。

添加的Docker仓库.png

查看Docker仓库文件内容:

Docker仓库文件内容.png

name:仓库的名称和版本。baseurl:指定 yum 搜索 Docker CE 软件包的基本 URL,这里使用的是阿里云的镜像,是我手动添加的。enabled:值为1和0,1表示启用该仓库进行搜索和安装软件包,0表示禁用该仓库。gpgcheck:值为1和0,1表示yum 会检查下载的包是否经过正确的 GPG 签名,0表示不进行检查。gpgkey:指定了用于验证软件包真实性的 GPG 密钥的 URL。注意:Docker官方的仓库可能会由于网络原因在安装的时候不能安装成功,因此我就添加了阿里云的镜像仓库(上图红色方框部分是手动编辑docker-ce.repo文件加入的)。

3.3 更新yum源的仓库由于上一步骤新添加了Docker的仓库,所以需要更新一下yum源,这样在使用yum安装软件的时候才能从新的仓库中搜索软件。yum update

3.4 安装Docker使用yum安装Docker。sudo yum -y install docker-ce检验Docker是否安装成功,能显示帮助信息则表示已经安装成功。docker

04软件启动

4.1 启动Docker安装完成后,启动Dokcer。sudo service docker start

4.2 查看docker状态查看Docker运行状态,出现绿色字样表示正在运行。sudo service docker status或者使用docker info进行查看

查看.png

4.3 常见问题问题:使用任何Docker命令都报错,这是因为Docker未正常启动。其他常见问题可参考https://blog.csdn.net/wuds_158/article/details/133162166,此处只写我自己遇到的问题。

解决步骤:先关闭Docker,以免造成任何损失;修改/usr/lib/systemd/system/docker.service服务文件参数,将ExecStart行修改为图片中红色方框的内容,修改完后保存;然后重新加载Docker配置文件;最后启动Docker就可以正常使用了。

步骤.png

sudo service docker stop #停止运行Dockersudo vim /usr/lib/systemd/system/docker.service #修改docker.service服务文件ExecStart参数sudo systemctl daemon-reload #重新加载配置文件sudo service docker start #启动Dockersudo service docker status #查看运行状态

4.4 Docker比较重要的几个文件与 Docker 服务的配置和管理相关的主要有3个文件,分别在不同的层级和场景下进行 Docker 服务的配置。docker.service:这是一个 systemd 服务单元文件,通常位于/usr/lib/systemd/system/docker.service。它定义了如何启动、停止、重启 Docker 服务,以及 Docker 服务所依赖的其他系统资源。这个文件通常包含 Docker 守护进程的启动命令和参数。daemon.json:是 Docker 守护进程的配置文件,通常位于 /etc/docker/daemon.json。它用来配置 Docker 守护进程的行为,比如网络驱动、存储驱动、日志配置等。这个文件是以 JSON 格式编写的。docker-ce.repo:是Docker仓库的配置,位于/etc/yum.repos.d/docker-ce.repo。这里的yum.repos.d是用于存储yum包管理器的仓库配置文件的目录,该目录包含多个 .repo 文件,每个文件定义了一个软件仓库的配置。这些仓库包含了软件包和元数据,供 yum工具在安装、更新、查询软件包时使用。一个典型的 .repo 文件通常包括仓库名称、仓库基本URL、启用/禁用仓库、仓库的GPG校验、GPG秘钥URL共5个部分(见图3.2的图)。

05运行容器

现在,正式运行一个简单的容器。docekr run hello-world

运行容器.png

06总结

今天主要介绍了Docker的安装、启动、报错的解决方法和容器的运行,下一节准备带大家一起了解Docker镜像的内部结构。这个学习记录前后断断续续差不多写了3天,途中遇到的问题远不止文中那一个,就算是呈现出来的解决办法也是数十次debug后得到的最正确的一种,这也更加突出底层逻辑学习的必要性。bug不息,生命不止。


选择订阅-通过 Docker 订阅在协作、安全性和支持之间找到完美的平衡!
在线客服
联系方式

热线电话

18221674630

上班时间

周一到周五

公司电话

18221674630

二维码
线
获取免费体验资格

提交后,我们将在3个小时内与您联系