Docker 自2013年以来非常火热,无论是从 github 上的代码活跃度,还是 Redhat 在 RHEL6.5 中集成对 Docker 的支持,就连 Google 的 Compute Engine 也支持 docker 在其之上运行。下面科普一下Docker究竟是什么?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
那么持续集成系列实战第一篇就来了,小伙伴要不要和我一起玩一玩docker呢?以下是基于Mac系统进行的实操演示:
[题外话:Linux 是服务器主流系统,MacOS 低层是 Unix 系统,操作几乎一样]
通过docker拉取gitlab镜像
Mac系统打开iTerm软件或是自带终端app,前提是你的Mac系统已经安装过docker软件,输入命令如下:
[题外话:Docker安装不是本篇的重点,请自行百度]
# gitlab-ce表示稳定版本,后面不加版本号则默认pull最新的latest版本
docker pull gitlab/gitlab-ce
拉取gitlab镜像成功,见下图
在宿主机创建挂载文件目录
mac:系统不建议挂载根目录系统文件,所以在用户目录下创建挂载文件夹
# 使用非root用户
cd ~
# 创建文件夹
mkdir myDocker
cd mydocker
mkdir gitlab
cd gitlab
mkdir config
mkdir logs
mkdir data
[题外话:linux系统在宿主机器 创建 存储 gitlab 相关文件的文件夹的命令如下:
#切换root用户
$ su root
#创建文件夹
$ mkdir /myDocker
#修改文件夹权限
$ chown -R [user] /myDocker
#退出root用户
$ exit
#进入myDocker目录
$ cd /myDocker
#创建相应目录如下
$ mkdir config
$ mkdir logs
$ mkdir data]
运行
以mac系统操作运行gitlab镜像:
3.1 第一种方式:run运行
docker run -d -p 8443:443 -p 8090:80 -p 222:22 --name gitlab --restart always -v /Users/xxx/myDocker/gitlab/config:/etc/gitlab -v /Users/xxx/myDocker/gitlab/logs:/var/log/gitlab -v /Users/xxx/myDocker/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
# -d:后台运行
# -p:将容器内部端口向外映射
# --name:命名容器名称
# -v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录
3.2 第二种方式:docker-compose 运行。第一种运行方式比较麻烦,需要记住一长串的运行参数;使用docker-compose 运行,可配置运行参数,灵活方便,最主要的是可运行一系列容器。
把上述运行参数转成docker-compose.yml文件如下
version: '3'services: gitlab: ports: - "8443:443" - "8090:80" - "222:22" volumes: - glConf:/etc/gitlab - glLogs:/var/log/gitlab - glData:/var/opt/gitlabvolumes: glConf:/Users/xxx/myDocker/gitlab/config glLogs:/Users/xxx/myDocker/gitlab/logs glData:/Users/xxx/myDocker/gitlab/data
4. gitlab容器启动成功
在浏览器中输入地址:127.0.0.1:8090,访问成功!首次打开GitLab登陆页面需修改密码(默认gitlab管理员用户名root),在Change your password输入框内修改密码为12345678(最少8个字符)
[题外话:如果登陆页面出现,请忽略以下内容!
如果容器启动后一直访问ip:8090,访问不到,查看日志
docker logs -f gitlab
错误如下:分析是项目存储目录权限问
Error executing action `create` on resource 'storage_directory[/var/opt/gitlab/git-data/repositories]'
解决方法一:进入容器,更改文件夹权限
chmod 2770 /var/opt/gitlab/git-data/repositories
gitlab-ctl reconfigure
gitlab-ctl restart
我这不知道什么原因进不去启动失败的gitlab容器,所以采取如下解决方式。
解决方法二:更改数据存储目录
vim gitlab/conf/gitlab.rb
修改 git_data_dirs 如下:
git_data_dirs({
"default" => {
# "path" => "/mnt/nfs-01/git-data"
"path" => "/data/gitlab"
}
})
解决完,重启容器
docker restart gitlab
访问ip:8090,成功!登陆页面首先需要修改密码 ]
5. 通过用户名和密码登录gitlab
5.1 root用户登录后可以修改密码
5.2 通过首页注册gitlab用户
注册成功!
自行安装git,生成git密匙,添加到 gitlab
ls ~/.ssh
有则直接使用,不存在则生成,输入下面命令,一路回车键
cd ~/.ssh
ssh-keygen -t rsa -C "your_email@youremail.com"
设置SSH Keys
进入Welcome to GitLab页面,可以创建项目或是创建组,便于项目和项目组成员管理,见下图。
点击 Create a group,组名为AiSmart4j-Project
在AiSmart4j-Project组下点击New project,创建SpringBoot-Demo项目
创建后,发现 clone 的 IP 如下不是我们想要的
修改 IP
# 进入容器
docker exec -it gitlab /bin/bash
# 更改 IP
vim /etc/gitlab/gitlab.rb
通过“/”+关键字“GENERATED_EXTERNAL_URL”搜索
重启容器即可
# 所有容器
docker ps -a
# 停止容器
docker stop [容器id]
# 启动容器
docker start [容器id]
创建成功,可用如下命令,克隆到本机,至此 gitlab 简单使用告一断落
# 精彩推荐 #
Spring Boot 快速入门系列(VI)—— 接口规范篇
Spring Boot 快速入门系列(V)—— 事务管理篇之 @Transactional
转发'~'在看是真爱