前置条件
1.已正确安装Vmware,网络配置正常,如无可参考下面文章
2.已安装CentOS 9.0+版本及衍生版本(RedHat 9 、RockyLinux 9、AlmaLinux 9 等),如无可参考下面文章
以下安装演示基于AlmaLinux 9.5进行
官方说明
官方文档:构建、运行和管理容器
红帽官方文档说在RHEL 9版本以后默认的容器是podman,docker、docker-compose需要自己下载。主推的原因一个是docker需要一直起着一个daemon守护进程,耗费资源。另一个是必须root用户启动,不安全。
目前经过测试,podman在努力兼容docker及相关操作,以期待取代docker;但docker对podman的兼容很差,且k8s经过这么多年对于docker更友好,虽然podman在概念上更贴合k8s,但在podman的容器接入到k8s时会出现某些异常报错。
所以目前出于对稳定性的要求,建议还是优先安装docker作为学习和工作使用,等podman的生态完全做起来以后在进行更换。
安装步骤
[root@tutu ~]# dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装Docker社区版本,容器运行时containerd.io,以及Docker构建和Compose插件。
[root@tutu ~]#dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
[root@tutu ~]# systemctl start docker
[root@tutu ~]# systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
[root@tutu ~]# docker -v
Docker version 27.4.1, build b9d17ea
[root@tutu ~]# docker compose version
Docker Compose version v2.32.1
优化调整
Docker 的相关参数都通过守护进程配置文件 (daemon.json) 进行配置,用于自定义 Docker 的行为。下面是每个参数的作用:
“registry-mirrors”:配置 Docker 客户端使用的镜像仓库加速地址。用于指定一个或多个 Docker 镜像仓库加速地址,这些地址将作为 Docker Hub 的镜像加速使用。当你从 Docker Hub 拉取镜像时,如果配置了镜像加速地址,Docker 会首先尝试从这些镜像地址拉取所需的镜像。如果拉取成功,则不需要从 Docker Hub 拉取,这样可以加快镜像下载速度,特别是在 Docker Hub 访问速度较慢或不稳定的情况下。镜像仓库镜像通常由第三方提供,例如阿里云、腾讯云等云服务商在中国境内提供的 Docker 镜像加速服务(当然也可以自建镜像加速站)。
“insecure-registries”:指定 Docker 客户端可以连接的不安全仓库列表。用于指定一个或多个不使用 HTTPS 协议的私有仓库地址。默认情况下,Docker 要求镜像仓库使用 HTTPS 来保证通信的安全性。但是,如果你在内部网络中运行自己的私有仓库,并且没有配置 HTTPS,你可以使用 insecure-registries 选项让 Docker 客户端信任这些仓库的 HTTP 连接。请注意,这样做会降低安全性,因此只建议在安全的内部网络环境中使用。
“exec-opts”:为 Docker 守护进程设置执行选项。
“native.cgroupdriver=systemd” 表示 Docker 将使用 systemd 作为其控制组驱动,而不是默认的 cgroupfs。这有助于更好地集成和管理系统资源。
“log-driver”:设置 Docker 容器的日志驱动。在这里,使用的是 “json-file”,这意味着容器的日志将以 JSON 格式写入到文件中。
“log-opts”:为日志驱动配置选项。
“max-size”: “100m” 表示每个日志文件的最大大小为 100MB,”max-file”: “10” 表示最多保留 10 个日志文件。
“storage-driver”:设置 Docker 的存储驱动。这里使用 “overlay2″,这是 Docker 推荐的存储驱动之一,用于管理镜像和容器的文件系统层。
“live-restore”:当设置为 true 时,允许 Docker 守护进程重新启动而不会停止正在运行的容器。
“default-shm-size”:设置容器内 /dev/shm 的默认大小。这里设置为 128MB,而 Docker 默认值通常是 64MB。
“bridge”:配置 Docker 网络桥接选项。在这里,”none” 表示删除默认的 docker0 网桥(Kubernetes 配置时有用,单 Docker 节点不需要设置)。
“max-concurrent-downloads”:设置 Docker 拉取镜像时的最大并发下载数量。这里设置为 10,而 Docker 默认通常是 3。
“max-concurrent-uploads”:设置 Docker 推送镜像到仓库时的最大并发上传数量。这里设置为 10,而 Docker 默认通常是 5。
“debug”:配置是否启用调试模式。这里设置为 false,表示关闭调试日志。
#添加加速镜像及相关配置,可以根据个人需求进行修改,下面仅作为推荐
[root@tutu ~]# cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": [
"https://docker.imgdb.de",
"https://dockerpull.org",
"https://docker.1panel.dev",
"https://docker.foreverlink.love",
"https://docker.fxxk.dedyn.io",
"https://docker.xn--6oq72ry9d5zx.cn",
"https://docker.zhai.cm",
"https://docker.5z5f.com",
"https://a.ussh.net",
"https://docker.cloudlayer.icu",
"https://hub.littlediary.cn",
"https://hub.crdz.gq",
"https://docker.unsee.tech",
"https://docker.kejilion.pro",
"https://registry.dockermirror.com",
"https://hub.rat.dev",
"https://dhub.kubesre.xyz",
"https://docker.nastool.de",
"https://docker.udayun.com",
"https://docker.rainbond.cc",
"https://hub.geekery.cn",
"https://docker.1panelproxy.com",
"https://atomhub.openatom.cn",
"https://docker.m.daocloud.io",
"https://docker.1ms.run",
"https://docker.linkedbus.com",
"https://dytt.online",
"https://func.ink",
"https://lispy.org",
"https://docker.xiaogenban1993.com"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "300m",
"max-file": "3"
},
"storage-driver": "overlay2",
"live-restore": true,
"default-shm-size": "128M",
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 10,
"debug": false
}
EOF
#重新加载并启动docker
[root@tutu ~]# systemctl daemon-reload
[root@tutu ~]# systemctl restart docker
[root@tutu ~]# systemctl status docker
[root@tutu ~]# systemctl enable docker
#查看当前docker的详细情况
[root@tutu ~]# docker version
[root@tutu ~]# docker info
#测试镜像拉取
[root@tutu ~]# docker pull nginx:latest
参考链接:在 Rocky Linux 9.x 上安装 Docker CE
图形化portainer-ce
安装图形化容器组件
参考链接:https://hub.docker.com/r/6053537/portainer-ce
[root@tutu ~]# docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock 6053537/portainer-ce
访问:ip:9000 即可
下面附上Podman的安装,该部分和Docker只能二选一。
对于docker的使用者,红帽提供了 podman-docker 软件包,自动转换dockers命令到对应的podman。安装即可。
红帽对于podman 提供了一组命令行工具,无需容器引擎即可操作。它们是:
- podman – 用于直接管理 pod 和容器镜像(
run
、stop
、start
、ps
、attach
和exec
,等等) - buildah – 用于构建、推送和签名容器镜像
- skopeo – 用于复制、检查、删除和签名镜像
- runc – 为 podman 和 buildah 提供容器运行和构建功能
- crun – 可选运行时,可以配置,并为 rootless 容器提供更大的灵活性、控制和安全性
官方比较docker与podman的说明:Podman and Buildah for Docker users
概括来说就是podman属于daemon-less,没有守护进程,rootless不需要 root 权限,允许普通用户启动镜像,不允许docker那种违规目录挂载导致安全风险
安装前置依赖
安装podman-compose 需依赖pip3 环境
安装步骤
#这个工具包包含跟podman有关的所有容器工具,包含podman、podman-docker 等等,如果想单独只安装podman,执行dnf install podman 即可。
[root@tutu ~]# dnf install container-tools
#docker命令自动转换
[root@tutu ~]# docker --version
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
podman version 5.2.2
[root@tutu ~]# podman --version
podman version 5.2.2
#安装podman-compose
[root@tutu ~]# pip3 install podman-compose
[root@tutu ~]# podman-compose --version
podman-compose version 1.2.0
podman version 5.2.2
podman-compose官方文档:https://docs.podman.io/en/latest/markdown/podman-compose.1.html