Docker 01 - CentOS 7 中安装 Docker 的详细步骤
容器大行其道, 不来试一手怎能感知其强大? 本文主要是写给0基础的小白 (对, 就是博主本人😂) 作为入门参考, 步骤详细, 对安装过程中遇到的坑都有一一记录, 如有疑问, 可直接评论区留言😄
1 初识 Docker
1.1 Docker 原理简介
关于 Docker, 引用百度百科上的介绍:
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker 的架构:Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器(Container)通过 Docker 镜像(Image)来创建,二者之间的关系类似于面向对象编程中的对象与类。
Docker 服务端(daemon)一般在宿主机后台运行,等待接收来自客户端的请求,并处理这些请求(创建、运行、分发容器)。 Docker 客户端可以和服务端既可以运行在一个机器上,为用户提供一系列命令,用户通过这些命令(也可以是 Socket 或者RESTful API )与 Docker daemon 进行交互。
Docker 与虚拟机的区别, 可以参考这篇博客: 虚拟机与Docker有何不同?
1.2 Docker 核心概念
Docker 的核心概念有三个:
(1) 仓库 (Repository): Docker 存放镜像文件的仓库, 与 Maven、 Git 等的仓库类似, Docker 官方提供了一个名为 Docker Hub 的注册服务器来保存多个仓库, 每个仓库又可以包含多个不同tag的镜像;
(2) 镜像 (Image): 是构建容器的源代码, 是一个只读的模板, 由一层一层的文件系统组成;
(3) 容器 (Container): 是由 Docker 镜像创建的运行实例, 容器中包含特定的应用及其所需的依赖文件, 容器之间相互隔离.
镜像与容器的理解:
- Docker 镜像: 相当于面向对象语言(比如 Java)中的类, 也可简单类比虚拟机的镜像;
- Docker 容器: 相当于面向对象语言中由类创建的对象, 也可简单类比虚拟机.
2 安装 Docker
2.1 查看系统内核版本
要安装 Docker, 首先要保证 Linux 系统是否符合要求, Docker 官方建议Linux内核版本要在 3.8以上.
以root
用户登录系统, 查看系统的内核版本及发行版本号:
[root@localhost ~]# uname -a
Linux localhost 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
可以看出来, 博主这里演示所用的内核版本是3.10.
2.2 更新 yum 包
(1) 修改系统的 yum 源为阿里源:
为了提高安装时的下载速度, 国内用户建议将 yum 源修改为阿里云提供的源. —— 此步骤可省略.
# 备份原镜像文件, 便于后期恢复
[root@localhost ~]# cd /etc/yum.repos.d
[root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.backup
# 下载新的 CentOS-Base.repo
# CentOS-5:
[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
# CentOS-6:
[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
# CentOS-7:
[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清除缓存:
[root@localhost yum.repos.d]# yum clean all
# 生成缓存:
[root@localhost yum.repos.d]# yum makecache
如果上述清除缓存、生产缓存过程中, 发生如下异常:
Another app is currently holding the yum lock; waiting for it to exit... The other application is: yum Memory : 24 M RSS (328 MB VSZ) Started: Fri Sep 27 17:38:23 2019 - 04:02 ago State : Traced/Stopped, pid: 10512
可通过
ps aux | grep yum
定位正在使用yum
服务的进程, 然后通过kill -9 PID
杀死该进程, 最后再尝试清除缓存、生成缓存操作.
(2) 更新 yum 包 —— 为了避免发生不必要的异常, 必须更新:
[root@localhost ~]# yum update
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package GeoIP.x86_64 0:1.5.0-11.el7 will be updated
--> Processing Dependency: geoipupdate for package: GeoIP-1.5.0-14.el7.x86_64
---> Package NetworkManager.x86_64 1:1.8.0-9.el7 will be updated
......
--> Finished Dependency Resolution
Dependencies Resolved
......
Total 2.2 MB/s | 412 MB 00:03:04
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Updating : libgcc-4.8.5-39.el7.x86_64 1/745
Updating : centos-release-7-7.1908.0.el7.centos.x86_64 2/745
......
Verifying : e2fsprogs-1.42.9-10.el7.x86_64 743/745
Verifying : python-slip-0.4.0-2.el7.noarch 744/745
......
Complete!
2.3 安装软件包
安装需要的软件包, 其中 yum-util 提供 yum-config-manager 功能, 另外两个是 device-mapper 驱动的依赖.
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
2.4 向 yum 中添加 Docker 仓库
# 注意: 下述https链接与yum命令是同一条, 不要换行:
[root@localhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror, langpacks
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
2.5 安装指定版本的 Docker
(1) 完成上述步骤后, 即可查看仓库中的所有 Docker 版本:
[root@localhost ~]# yum list docker-ce --showduplicates | sort -r
* updates: mirrors.aliyun.com
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror, langpacks
* extras: mirrors.aliyun.com
docker-ce.x86_64 3:19.03.2-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.1-3.el7 docker-ce-stable
......
docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable
......
* base: mirrors.aliyun.com
Available Packages
(2) 通过命令 yum install docker-ce-版本号
安装Docker, 这里安装的是18.06.3.ce
:
[root@localhost ~]# yum install -y docker-ce-18.06.3.ce
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Resolving Dependencies
......
Complete!
2.6 启动 Docker
# 启动Docker:
[root@localhost ~]# systemctl start docker
# 根据需要, 选择是否加入开机自启动:
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
2.7 验证安装是否成功
通过docker version
命令查看, 如果有 Client 和 Server 两部分信息, 表示 Docker 安装、启动成功了:
[root@localhost ~]# docker version
Client:
Version: 18.06.3-ce
API version: 1.38
Go version: go1.10.3
Git commit: d7080c1
Built: Wed Feb 20 02:26:51 2019
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.3-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: d7080c1
Built: Wed Feb 20 02:28:17 2019
OS/Arch: linux/amd64
Experimental: false
3 扩展内容
3.1 卸载旧版本 Docker
如果宿主机上曾经安装过 Docker, 再次安装时可能发生错误, 卸载方法如下:
[root@localhost ~]# yum remove docker docker-common docker-selinux docker-engine
3.2 常用的 Docker 命令
详细内容请参考: Docker 基础用法和命令帮助
docker ps # 查看当前正在运行的容器
docker ps -a # 查看所有容器的状态
docker images # 查看本地镜像
docker rm id/name # 删除某个容器
docker rmi id/name # 删除某个镜像
docker attach id # 进入某个容器(使用exit退出后, 容器也将停止运行)
docker exec -it id # 启动一个伪终端以交互式的方式进入某个容器(使用exit退出后容器不停止运行)
docker start/stop id/name # 根据 id/name 启动/停止某个容器
docker build -t heal/tomcat:8.5.43 . # 通过当前目录下的 Dockerfile 创建一个名为 “heal/tomcat:8.5.43” 的镜像
docker run -it -d -p 7070:8080 --name tomcat heal/tomcat:8.5.43 # 以镜像 “heal/tomcat:8.5.43” 创建名为 “tomcat” 的容器, 并以后台模式运行, 将端口映射到宿主机的 7070 端口上
下篇将介绍如何通过 Docker 部署一个 Tomcat 容器, 并发布 Web 项目, 请关注😄
参考资料
版权声明
出处: 博客园 马瘦风的博客(https://www.cnblogs.com/shoufeng)
感谢阅读, 如果文章有帮助或启发到你, 点个[好文要顶👆] 或 [推荐👍] 吧😜
本文版权归博主所有, 欢迎转载, 但 [必须在文章页面明显位置标明原文链接], 否则博主保留追究相关人员法律责任的权利.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人