总体思路:找一台可以联网的linux,下载docker的RPM依赖包而不进行安装(yum localinstall),将所有依赖的rpm环境打包好,再在无网环境中解压逐一安装(rpm: –force –nodeps)。
同理,docker镜像也通过联网下载,docker save导出tar包,然后离线机器docker load导入镜像
系统版本:
准备两台Linux系统,一台是可以联网的另外一台就是你的内网服务器
先在可以联网的linux上,进行docker的下载和安装,因为后面内网端可能docker的各种镜像,所以在联网的这台也进行docker的安装
docker安装(yum install)
如果之前安装过旧版本的Docker,可以使用下面命令卸载:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
首先需要大家虚拟机联网,安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
然后更新本地镜像源:
# 设置docker镜像源,逐条执行
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
然后输入命令:
yum install -y docker-ce
docker-ce为社区免费版本。稍等片刻,docker即可安装成功。
docker离线安装
在可以联网的这台linux,下载所有依赖到指定目录:
mkdir -p /home/dockerrpm/
yum intsall docker-ce --downloadonly --downloaddir=/home/dockerrpm/
解释:标准的yum命令提供了 –downloadonly(只下载,不安装) 的选项来达到这个目的。
将所有依赖的rpm环境打包:
tar zcvf docker-ce-20.tar.gz ./dockerrpm/*
将压缩包传到内网端 比如也是 /home/dockerrpm,解压压缩
tar zxvf docker-ce-20.tar.gz
在dockerrpm目录下,执行命令安装依赖
rpm -ivh *.rpm --force --nodeps
参数解释:
rpm -ivh *.rpm –force –nodeps
1.–nodeps 就是安装时不检查依赖关系,比如你这个rpm需要A,但是你没装A,这样你的包就装不上,用了–nodeps你就能装上了。
2.–force 就是强制安装,比如你装过这个rpm的版本1,如果你想装这个rpm的版本2,就需要用–force强制安装。
到这里docker算是安装完成了,接下来启动docker
Docker应用需要用到各种端口,逐一去修改防火墙设置。我这里为了方便直接关掉防火墙了
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
通过命令启动docker:
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
查看docker状态:
systemctl status docker # 查看docker启动状态
docker -v # 查看docker版本
ok,docker启动成功
docker安装gitlab
在可以联网的linux上下载gitlab镜像,
# gitlab-ce为稳定版本,后面不填写版本则默认pull最新latest版本
docker pull gitlab/gitlab-ce
查看镜像,
docker images
保存镜像
docker save -o gitlab.tar gitlab/gitlab-ce
执行完命令,你会在当前目录获得一个gitlab.tar包
把这个压缩包考到离线的linux机器上,比如放在 /home/dockerrpm/images
执行命令,导入镜像
docker load -i gitlab.tar
查看镜像
docker images
导入成功
docker启动容器
我这里是自定义了gitlab端口为30000,默认端口80,-p参数代表端口映射
docker run -d \
-p 30000:30000 -p 30001:443 -p 30002:22 \
--name gitlab \
--restart unless-stopped \
-v /home/gitlab/config:/etc/gitlab \
-v /home/gitlab/logs:/var/log/gitlab \
-v /home/gitlab/data:/var/opt/gitlab \
-v /etc/localtime:/etc/localtime \
gitlab/gitlab-ce
启动之后,需要修改配置
cd /home/gitlab/config
修改gitlab.rb文件,就是里面全是注释的文件,这个文件在你挂载的config目录,我上面挂载的是/home/gitlab/config
vi /home/gitlab/config/gitlab.rb
修改几个地方
# 以下修改的内容,该配置文件都有,可以ctrl+f搜搜
# 这里修改的是你gitlab的登录地址,因为我不想用默认的80端口,所以我就自定义了30000端口,只要不是被占用的端口都可
external_url 'http://192.168.247.130:30000'
# ssh主机端口
gitlab_rails['gitlab_ssh_host'] = 'http://192.168.247.130:30000'
gitlab_rails['gitlab_shell_ssh_port'] = 30002
# 注意,如果用的默认80端口,则不需要修改,我这里用了30000端口,所以监听端口需要修改
nginx['listen_port'] = 30000
修改完后,重启gitlab
docker restart gitlab
访问
http://192.168.247.130:30000
,这里启动Gitlab需要几分钟,耐心等待,我之前部署完一直是502,以为是有问题,其实是服务还没有完全起来。