Docker 介绍

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 LinuxWindows 操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。总结一句话:使用 Docker 更为方便!相互之间互不影响!更加便捷!

Docker 安装

作者 Linux 版本:Linux 5.8.0-59-generic 20.04.1-Ubuntu(可通过 uname -a 查看使用版本信息)

  1. 更新 apt-get 包索引
    1. sudo apt-get udpate
  • 安装 apt 依赖包,用于通过 HTTPS 来获取仓库:
    1. sudo apt-get install \
    2. apt-transport-https \
    3. ca-certificates \
    4. curl \
    5. gnupg \
    6. lsb-release
  1. 添加 Docker 的 GPG 密钥 ``` 官方,不推荐 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg —dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

阿里云推荐 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg —dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

  1. 4. 设置稳定仓库

官方 不推荐 echo \ “deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

阿里云推荐 $ sudo add-apt-repository “deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable”

  1. 5. 安装 Docker 引擎

更新包:sudo apt-get update

安装最新版本的Docker Engine和containerd:sudo apt-get install docker-ce docker-ce-cli containerd.io

安装指定版本(列出版本):apt-cache madison docker-ce

以下为docker版本

docker-ce | 5:20.10.8~3-0~ubuntu-focal | https://mirrors.aliyun.com/docker-ce/linux/ubuntu focal/stable amd64 Packages docker-ce | 5:20.10.8~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages docker-ce | 5:20.10.7~3-0~ubuntu-focal | https://mirrors.aliyun.com/docker-ce/linux/ubuntu focal/stable amd64 Packages docker-ce | 5:20.10.7~3-0~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable amd64 Packages docker-ce | 5:20.10.6~3-0~ubuntu-focal | https://mirrors.aliyun.com/docker-ce/linux/ubuntu focal/stable amd64 Packages

选择指定版本安装:$ sudo apt-get install docker-ce=5:20.10.8~3-0~ubuntu-focal docker-ce-cli=5:20.10.8~3-0~ubuntu-focal containerd.io

  1. 6. 查看 Docker 版本
  2. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/957395/1655107444029-8b04f761-800d-4f40-abbc-4e22db81cf59.png#clientId=u03fb4b8a-a6e8-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=38&id=ub865fb5e&margin=%5Bobject%20Object%5D&name=image.png&originHeight=47&originWidth=369&originalType=binary&ratio=1&rotation=0&showTitle=false&size=6612&status=done&style=none&taskId=u39895258-cb0f-486b-8bf9-102fbcf3f29&title=&width=295.2)
  3. <a name="T9dV4"></a>
  4. # GitLab 安装
  5. 1. 查询可用docker镜像

docker search gitlab

  1. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/957395/1655107759958-1d05f2e6-4bea-45fa-a297-09f62b0ffff7.png#clientId=u20a0c2d6-b6b7-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=393&id=uace1fa10&margin=%5Bobject%20Object%5D&name=image.png&originHeight=491&originWidth=1152&originalType=binary&ratio=1&rotation=0&showTitle=false&size=106797&status=done&style=none&taskId=ud90cefb9-da6b-4e1e-92e6-d798452052b&title=&width=921.6)
  2. 2. 下载镜像

docker pull beginor/gitlab-ce:latest

  1. 3. 创建管理的相关目录 etc(配置) log(日志) data(数据). (把文件映射到容器外,便于之后管理和升级)并添加权限。

mkdir -p /usr/local/gitlab/etc mkdir -p /usr/local/gitlab/log mkdir -p /usr/local/gitlab/data

chmod 777 /usr/local/gitlab/etc chmod 777 /usr/local/gitlab/log chmod 777 /usr/local/gitlab/data

  1. 4. 启动镜像

docker run —detach —publish 8443:443 —publish 8888:80 —publish 8222:22 —name gitlab —restart unless-stopped —volume /usr/local/gitlab/etc:/etc/gitlab —volume /usr/local/gitlab/log:/var/log/gitlab —volume /usr/local/gitlab/data:/var/opt/gitlab —privileged=true beginor/gitlab-ce:latest

参数说明

将http:443映射到外部端口8443–publish 8443:443 80映射到外部端口8888–publish 8888:80将web 22映射到外部端口8222–publish 8222:22将ssh 运行容器名–name gitlab 重启策略–restart unless-stopped 挂载目录–volume /usr/local/gitlab/etc:/etc/gitlab 挂载目录–volume /usr/local/gitlab/log:/var/log/gitlab 挂载目录–volume /usr/local/gitlab/data:/var/opt/gitlab 使得容器内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限–privileged=true

  1. 等待返回一串字符串,就说明启动成功了<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/957395/1655107974569-4bd06254-eb20-46db-8688-b46795c76cc0.png#clientId=u20a0c2d6-b6b7-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=100&id=ud9f0196e&margin=%5Bobject%20Object%5D&name=image.png&originHeight=125&originWidth=554&originalType=binary&ratio=1&rotation=0&showTitle=false&size=106056&status=done&style=none&taskId=u94ccffeb-b0c5-40a3-be05-472ce5380e1&title=&width=443.2)
  2. 5. 修改配置文件 gitlab.rb

vi /usr/local/gitlab/etc/gitlab.rb

如果使用公有云且配置了域名了,可以直接设置为域名,如下

如果没有域名,则直接使用宿主机的ip

external_url ‘http://gitlab.redrose2100.com

如果有域名,这里也可以直接使用域名

如果没有域名,则直接使用宿主机的ip地址

gitlab_rails[‘gitlab_ssh_host’] = ‘gitlab.redrosee2100.com’

设置时区为东八区,即北京时间

gitlab_rails[‘time_zone’] = ‘Asia/Shanghai’

邮箱配置

gitlab_rails[‘smtp_enable’] = true gitlab_rails[‘smtp_address’] = “smtp.qq.com” # 邮箱服务器 gitlab_rails[‘smtp_port’] = 465 # 邮箱服务对应的端口号 gitlab_rails[‘smtp_user_name’] = “xxx@qq.com” # 发件箱的邮箱地址 gitlab_rails[‘smtp_password’] = “xxxxxxxxxxx” # 发件箱对应的授权码,注意不是登录密码,是授权码 gitlab_rails[‘smtp_domain’] = “qq.com” gitlab_rails[‘smtp_authentication’] = “login” gitlab_rails[‘smtp_enable_starttls_auto’] = true gitlab_rails[‘smtp_tls’] = true gitlab_rails[‘gitlab_email_enabled’] = true gitlab_rails[‘gitlab_email_from’] = ‘xxx@qq.com’ # 发件箱地址 gitlab_rails[‘gitlab_email_display_name’] = ‘gitlab.xxx.com’ # 显示名称 gitlab_rails[‘gitlab_email_reply_to’] = ‘noreply@example.com’ # 提示不要回复

  1. 6. 重启 GitLab

docker restart gitlab docker exec -it gitlab bash gitlab-ctl restart

  1. 7. 查看 Root 默认密码

cat /usr/local/gitlab/etc/initial_root_password

  1. 8. 登录 Root 账户
  2. - http://IP地址:8888 root password
  3. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/957395/1655108419034-501c813b-38f3-48f1-b1c1-aafac87040a0.png#clientId=u20a0c2d6-b6b7-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=284&id=ua08c22ba&margin=%5Bobject%20Object%5D&name=image.png&originHeight=642&originWidth=1400&originalType=binary&ratio=1&rotation=0&showTitle=false&size=55447&status=done&style=none&taskId=u6651f9d6-3f8b-47e9-8d6d-903f366e2d6&title=&width=620)
  4. 9. 设置账户、团队、项目、默认下载地址

进入gitlab bash:docker exec -it gitlab bash

修改端口号:vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

host:xxx.xxx.xxx.xxx(local IP) port:8888

重启服务:gitlab-ctl restart

  1. 10. 常用指令

设置 Docker 自启动: sudo systemctl enable docker 进入 GitLab Bash(可测试邮件):docker exec -it gitlab bash gitlab-rails console ```

参考链接