241023-RHEL非管理员安装Docker并开放指定宿主机端口部署Gitlab

A. RHEL非管理员安装Docker

要在没有管理员权限的情况下离线安装 Docker 和 Docker Compose,虽然受到一定限制,仍有一些可行的步骤可以帮助你在有限权限下完成这项任务。需要注意的是,这种方式适用于本地用户环境下的 Docker 安装,而不会影响到全局系统设置。以下是详细步骤:

步骤 1:准备离线安装文件

你可以在有网络连接的机器上下载需要的 Docker 和 Docker Compose 可执行文件,并将它们传输到目标机器。

1.1. 下载 Docker 二进制文件

Docker 的二进制文件可以直接从 Docker 官方网站下载:

选择适合你系统架构的 Docker 二进制文件(一般为 docker-<version>.tgz),然后解压到一个本地目录。

示例命令(在有网络的环境中):

bash 复制代码
wget https://download.docker.com/linux/static/stable/x86_64/docker-<version>.tgz
tar xzvf docker-<version>.tgz
1.2. 下载 Docker Compose 二进制文件

同样,你也可以下载 Docker Compose 的二进制文件:

选择你所需的 Docker Compose 版本(.zip.tar.gz 文件),并将其下载解压。

步骤 2:配置 Docker 和 Docker Compose

将解压后的 Docker 和 Docker Compose 二进制文件放置在你有权限的目录下(例如用户的 home 目录中)。

2.1. 安装 Docker

将解压后的 docker 二进制文件放置在你本地目录下,设置执行权限:

bash 复制代码
# 移动到你有权限的路径,例如 $HOME/docker/
mv docker/* ~/docker/

# 给所有二进制文件赋予可执行权限
chmod +x ~/docker/*

你可以将 docker 目录添加到 PATH 环境变量中,方便后续调用 Docker 命令。

bash 复制代码
echo 'export PATH=$PATH:$HOME/docker' >> ~/.bashrc
source ~/.bashrc
2.2. 安装 Docker Compose

下载的 Docker Compose 文件同样需要放置在一个可执行的目录中:

bash 复制代码
mv docker-compose-<version> ~/docker/docker-compose
chmod +x ~/docker/docker-compose

将 Docker Compose 的路径也添加到 PATH 中:

bash 复制代码
echo 'export PATH=$PATH:$HOME/docker' >> ~/.bashrc
source ~/.bashrc

步骤 3:启动 Docker(无 root 权限)

如果没有管理员权限启动 Docker 服务,使用者可以通过 rootless 模式运行 Docker。

3.1. 安装 rootless Docker

首先,下载并安装 rootless Docker 的依赖库 newuidmapnewgidmap

由于这是一个离线安装,你可能需要在有网络的环境中找到相应的 debrpm 文件,下载后通过用户权限进行安装。

安装完成后,运行以下命令配置 Docker rootless 模式:

bash 复制代码
./dockerd-rootless-setuptool.sh install

此处会报错:

bash 复制代码
[liuguokai@PPSE1LLM163 docker]$ ./dockerd-rootless-setuptool.sh install
[ERROR] Missing system requirements. Run the following commands to
[ERROR] install the requirements and run this tool again.
[ERROR] Alternatively iptables checks can be disabled with --skip-iptables .
########## BEGIN ##########
sudo sh -eux <<EOF
Load ip_tables module
modprobe ip_tables
EOF
########## END ##########
  • 解决方法1:联系管理员身先执行下面代码,再重复执行
bash 复制代码
sudo modprobe ip_tables
bash 复制代码
./dockerd-rootless-setuptool.sh install
  • 解决方法2: 直接执行
bash 复制代码
./dockerd-rootless-setuptool.sh install --skip-iptables

此脚本会为 Docker 创建一个 rootless 用户守护进程,并允许你在非管理员权限下运行 Docker 容器。

步骤 4:验证安装

完成上述步骤后,重新启动终端会话或手动加载环境变量,然后运行以下命令以确认 Docker 和 Docker Compose 是否安装成功:

bash 复制代码
docker --version
docker-compose --version

如果这些命令返回相应的版本信息,说明 Docker 和 Docker Compose 已成功安装并可用。

结论

通过上述方式,可以在没有管理员权限的环境下离线安装 Docker 和 Docker Compose。重点是下载必要的二进制文件并利用 Docker 的 rootless 模式来启动 Docker 容器。

B. 如何Pull镜像 + 如何安装Gitlab

B.1 下载离线的Docker镜像文件

B.2 通过Docker搭建Gitlab服务

bash 复制代码
# 启动容器
docker run \
 -itd  \
 -p 5004:80 \
 -p 5005:22 \
 -v /home/liuguokai/docker/data/gitlab/etc:/etc/gitlab  \
 -v /home/liuguokai/docker/data/gitlab/log:/var/log/gitlab \
 -v /home/liuguokai/docker/data/gitlab/opt:/var/opt/gitlab \
 --restart always \
 --privileged=true \
 --name gitlab \
 --shm-size 1g \ 
 gitlab/gitlab-ce

新增--shm-size 1g \是为了解决网页卡顿出现500/502的情况

C. 开放9980端口的步骤

在RHEL系统中开放9980端口,可以按照以下步骤进行操作:

1. 确保firewalld服务已启动

首先检查并启动firewalld服务:

bash 复制代码
sudo systemctl status firewalld

如果服务未运行,可以启动它:

bash 复制代码
sudo systemctl start firewalld

2. 添加防火墙规则以开放9980端口

使用以下命令开放9980端口:

bash 复制代码
sudo firewall-cmd --permanent --add-port=9980/tcp

3. 重新加载防火墙规则

应用更改后,重新加载防火墙配置:

bash 复制代码
sudo firewall-cmd --reload

4. 确认端口是否开放

验证端口是否成功开放:

bash 复制代码
sudo firewall-cmd --list-ports

这将显示所有已开放的端口,检查是否包括9980端口。

5. 检查服务绑定端口

确保你要使用的服务绑定了9980端口,可以用以下命令检查:

bash 复制代码
sudo ss -tuln | grep 9980

如果这些步骤没有问题,9980端口应该已经成功开放。

相关推荐
蜜獾云38 分钟前
docker 安装雷池WAF防火墙 守护Web服务器
linux·运维·服务器·网络·网络安全·docker·容器
年薪丰厚2 小时前
如何在K8S集群中查看和操作Pod内的文件?
docker·云原生·容器·kubernetes·k8s·container
zhangj11252 小时前
K8S Ingress 服务配置步骤说明
云原生·容器·kubernetes
岁月变迁呀2 小时前
kubeadm搭建k8s集群
云原生·容器·kubernetes
墨水\\2 小时前
二进制部署k8s
云原生·容器·kubernetes
Source、2 小时前
k8s-metrics-server
云原生·容器·kubernetes
颜淡慕潇2 小时前
【K8S问题系列 |19 】如何解决 Pod 无法挂载 PVC问题
后端·云原生·容器·kubernetes
希忘auto3 小时前
详解Redis的常用命令
redis·1024程序员节
大熊程序猿4 小时前
K8s证书过期
云原生·容器·kubernetes
摸鱼也很难7 小时前
Docker 镜像加速和配置的分享 && 云服务器搭建beef-xss
运维·docker·容器