Docker安装

Docker实践

yum安装

YUM源可以使用官方YUM源、清华大学开源镜像站配置YUM源,也可以使用阿里云开源镜像站提供的YUM源,建议选择使用阿里云开源镜像站提供的YUM源,原因速度快。

地址: https://developer.aliyun.com/mirror/

我们安装ce版

https://developer.aliyun.com/mirror/docker-ce?spm=a2c6h.13651102.0.0.655e1b11Z3g4Hj

查看os信息

shell 复制代码
[root@centos133 ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

环境要求

内核要求

shell 复制代码
uname -r
> 3.10.0-514.el7.x86_64

3.10.0以上

关闭防火墙

shell 复制代码
firewall-cmd --state
> running

在CentOS 7及其以上版本中,firewalld是默认的防火墙,你可以通过以下命令关闭它并使其在重启后依然保持关闭状态:

  1. 关闭防火墙:
bash 复制代码
sudo systemctl stop firewalld
  1. 禁用防火墙服务,使其在重启后不会自动启动:
bash 复制代码
sudo systemctl disable firewalld
shell 复制代码
firewall-cmd --state
> not running

关闭selinux

shell 复制代码
sestatus

SELinux (Security Enhanced Linux) 是一个用于实施访问控制策略的 Linux 内核安全模块。虽然 SELinux 提供了增强的安全控制,但是也给系统配置和管理增加了一些复杂性。如果不正确地配置 SELinux,可能会阻止应用程序或服务正常工作。

要在CentOS 7中禁用 SELinux,按照以下步骤进行:

  1. 打开 SELinux 配置文件:
bash 复制代码
sudo vi /etc/selinux/config
  1. 找到 SELINUX 行,将其值更改为 disabled
bash 复制代码
SELINUX=disabled

然后保存并关闭文件。

此处眼睛要仔细,很可能enable就在前面,这会导致无法关闭selinux,已淌过坑,不谢

  1. 重启系统以使更改生效:
bash 复制代码
sudo reboot
  1. 重启后,你可以运行以下命令确认 SELinux 已被禁用:
bash 复制代码
sestatus

输出应显示 SELinux status: disabled,表明 SELinux 已被禁用。

下载

shell 复制代码
# 在docker host上使用 wget下载到/etc/yum.repos.d目录中即可。
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 验证是否可用
yum repolist

status列,软件包数量>0即可

shell 复制代码
ls /etc/yum.repos.d/
# 直接安装docker-ce,此为docker daemon,所有依赖将被yum自动安装,含docker client等。
yum -y install docker-ce

以下是官方步骤,不一定非得执行,可以参考.

shell 复制代码
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start

# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
#   将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
#   Loading mirror speeds from cached hostfile
#   Loaded plugins: branch, fastestmirror, langpacks
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
#   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
#   Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]

配置启动文件

配置Docker daemon

为什么修改启动文件?

  • 避免docker对宿主机造成影响比如防火墙

由于Docker使用过程中会对Centos操作系统中的Iptables防火墙中的FORWARD链默认规划产生影响及需要让Docker Daemon接受用户自定义的daemon.json文件,需要要按使用者要求的方式修改。

  • 定义自己调用的服务:如镜像仓库等等

文件位置

shell 复制代码
vim /usr/lib/systemd/system/docker.service

删除sock

shell 复制代码
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

防火墙

shell 复制代码
ExecStartPost=/sbin/iptables -P FORWARD ACCEPT

重新加载

shell 复制代码
# 重启加载daemon文件
systemctl daemon-reload

启动

shell 复制代码
# 启动docker daemon
systemctl start docker

# 设置开机自启动
systemctl enable docker

验证版本

使用Docker 客户端

shell 复制代码
# 使用docker version客户端命令查看已安装docker软件版本
docker version

涉及防火墙

避免docker对防火墙造成影响,有时候划线部分会变成Reject使网络不通

二进制安装

官方不建议此种部署方式,主因为不能自动更新,在条件有限制的情况下使用。

二进制安装参考网址:https://docs.docker.com/engine/install/binaries/

shell 复制代码
获取二进制文件,此文件中包含dockerd与docker 2个文件。
# wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.9.tgz
解压下载的文件
# tar xf docker-20.10.9.tgz
查看解压出的目录
# ls docker
containerd       containerd-shim-runc-v2  docker   docker-init   runc
containerd-shim  ctr                      dockerd  docker-proxy
安装解压后的所有二进制文件
# cp docker/* /usr/bin/
运行Daemon
# dockerd &

会有大量的信息输出,停止后,直接回车即可使用。
如果您需要使用其他选项启动守护程序,请相应地修改上述命令或创建并编辑文件`/etc/docker/daemon.json` 以添加自定义配置选项。
确认是否可以使用docker客户端命令
# which docker
/usr/bin/docker

使用二进制安装的docker客户端
# docker version


shell 复制代码
获取二进制文件,此文件中包含dockerd与docker 2个文件。
# wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.9.tgz
shell 复制代码
解压下载的文件
# tar xf docker-20.10.9.tgz
查看解压出的目录
# ls docker
containerd       containerd-shim-runc-v2  docker   docker-init   runc
containerd-shim  ctr                      dockerd  docker-proxy

其他

ExecStart=/usr/bin/dockerd

docker.service文件中ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock这个是什么意思?有什么作用

这行指令在 Docker 服务启动时被执行。解读这行指令如下:

  • ExecStart: 这是 Systemd 的一个指令,用来定义当服务启动时要执行的命令。

  • /usr/bin/dockerd: 这是 Docker 守护进程(dockerd)的完整路径,它是 Docker 运行的主要进程,用于管理 Docker 容器。

  • -H fd://: 这是 Docker 守护进程的一个选项,-H 用来定义 Docker 守护进程监听的地址。fd:// 是一个特殊的监听地址,用于与 Systemd 进行集成,让 Systemd 负责处理 Docker 守护进程的 socket。

  • --containerd=/run/containerd/containerd.sock: 这是 Docker 守护进程的另一个选项,定义了 Docker 守护进程与 containerd 守护进程通信的 socket 的路径。containerd 是 Docker 的一个组件,用于管理容器的生命周期。

所以这行命令的作用是,当 Docker 服务启动时,启动 Docker 守护进程,让它监听 Systemd 提供的 socket,并通过指定的 socket 与 containerd 守护进程通信。

-H fd://--containerd=/run/containerd/containerd.sock 这两个参数指定了 Docker 守护进程与其它服务(例如 systemd 和 containerd)之间的通信方式。在大多数情况下,这两个参数是有用的,应该保留。它们让 Docker 更好地与宿主机的系统集成,提高了 Docker 的稳定性和效率。

然而,在某些特殊的配置或使用场景中,你可能需要修改这些参数或完全移除它们。比如:

  1. 如果你想要 Docker 守护进程监听 TCP 端口,以便从远程管理 Docker,你需要添加 -H tcp://<ip>:<port> 参数。这可能需要你移除 -H fd:// 参数,因为 Docker 守护进程只能监听一种类型的 socket。

  2. 如果你想要 Docker 守护进程直接与 Docker 的 containerd 组件通信,而不是通过 socket 文件,你可以移除 --containerd=/run/containerd/containerd.sock 参数。

注意,这些修改可能会增加 Docker 的安全风险,降低 Docker 的稳定性和效率,因此只有在你完全理解这些参数的含义,并且确定你需要这样做时,才应该进行这些修改。

相关推荐
跳跳的向阳花34 分钟前
05、Docker学习,常用安装:Mysql、Redis、Nginx、Nacos
学习·mysql·docker
dessler1 小时前
Docker-日志&存储(volume)
linux·运维·docker
Bling_2 小时前
Springboot Bean创建流程、三种Bean注入方式(构造器注入、字段注入、setter注入)、循坏依赖问题
java·spring boot·spring·容器
跳跳的向阳花5 小时前
06、Docker学习,常用安装:Zookeeper、ES、Minio
学习·docker·zookeeper
三雷科技9 小时前
docker代理设置
运维·docker·容器
行者张良10 小时前
解决:离线部署Docker容器(使用Docker现有容器生成镜像,将镜像打包成tar并发布到离线服务器中)
服务器·docker·容器
ihengshuai11 小时前
使用DockerCompose部署服务
docker·云原生·容器
半卷书生11 小时前
将node节点加入k8s集群
linux·docker·kubernetes
github_czy11 小时前
(k8s)k8s系列之命令手册速查
云原生·容器·kubernetes
ihengshuai11 小时前
搭建k8s集群
docker·云原生·容器·kubernetes·devops·持续部署