安装Docker容器

前置条件

1.已正确安装Vmware,网络配置正常,如无可参考下面文章

2.已安装CentOS 9.0+版本及衍生版本(RedHat 9 、RockyLinux 9、AlmaLinux 9 等),如无可参考下面文章

安装AlmaLinux系统-真不错鸭
安装AlmaLinux系统-真不错鸭
真不错鸭的头像-真不错鸭6个月前
6112

以下安装演示基于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 和容器镜像(runstopstartpsattach 和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

© 版权声明
THE END
喜欢就支持一下吧
点赞1 分享