一起用Docker之搭建开发与测试的依赖环境

搭建了本机的开发环境之后,Docker在其他方面是否还能提升我们的效率呢?这一篇,咱们来讲讲用Docker搭建在开发和测试的过程中,需要的依赖服务的环境,如NexusJenkinsGitlab,其实还有MySQLNginx等,这些内容,可以从一起用Docker之搭建开发环境相关服务里查看,就不再重复假装字数很多了。

简单粗暴的老步骤,同样的先拉取镜像,再运行容器。

拉取镜像

Nexus

提到了Nexus,就知道咱们是搞Java开发的,不过Nexus可不仅仅可以被用来做Maven的私服,同样可以做NPM私服,Docker的私服,等等好多。Docker的私服,我们下一篇再来细讲。

因为是依赖服务,就不需要太在意版本号了,直接拉取最新的版本:

docker pull sonatype/nexus3

Jenkins

Jenkins的使用,咱就不细说了,现在网上的资料相当的丰富。同样,之后会有一篇介绍如何通过Jenkins+Docker来实现另一种方式的自动发布。

Jenkins建议拉取长期支持版本:

docker pull jenkins/jenkins:lts

Gitlab

Gitlab现在区分CE版和EE版,拉取的时候,可不要拉错了哦。

docker pull gitlab/gitlab-ce

启动容器

启动Nexus

在启动Nexus的时候,需要注意的是,为了以后好迁移,建议挂载一个数据目录,这样将来要搬家或是其他的需求,数据还可以复用。

docker run \
     -p 8081:8081 \
     -p 8082:8082 \
     -p 8083:8083 \
     -p 8084:8084 \
     -p 8085:8085 \
     -e NEXUS_CONTEXT=nexus \
     -v $PWD/nexus-data:/nexus-data \
     -d \
     --name nexus3 \
     sonatype/nexus3

参数说明:

  1. -p 映射一系列的端口到本机对应的端口,不要觉得多,之后都会用到,本次只需要有8081便够了;
  2. –e 设置环境变量,为了将Nexus挂到Nginx做准备;
  3. -v 挂载数据目录;
  4. -d 后台执行;
  5. 容器名称,不指定的话,就要使用容器ID了,不方便;
  6. 使用的镜像;

启动成功后,访问Nexus时,老版本的初始账号和密码是:admin/admin123。
新版的,在登录窗口会提示密码在/nexus-data/admin.password
因为我们挂载了目录,你可以直接查看本机上$PWD/nexus-data/admin.password文件。
也可以进入到容器中,查看对应的文件,其实是同一个文件,只不过通过不同的方式而已:

docker exec -it nexus3 /bin/bash
cd /nexus-data
cat admin.password

启动Jenkins

同样,Jenkins也可以将JenkinsHome目录进行挂载。

docker run \
    --publish 8080:8080 --publish 50000:50000 \
    --env JENKINS_OPTS="--prefix=/jenkins" \
    --volume $PWD/jenkins_home:/var/jenkins_home \
    -d \
    --name jenkins \
    jenkins/jenkins:lts

参数说明:

  1. -p 映射端口;
  2. –e 设置环境变量,为了将Jenkins挂到Nginx做准备;
  3. -v 挂载数据目录;
  4. -d 后台执行;
  5. 容器名称;
  6. 使用的镜像;

启动成功后,需要通过浏览器进行本地安装,安装的第一步,就是要提供初始密码,在这里使用挂载目录的好处就来啦,你可以通过本地目录$PWD/jenkins_home/secrets/initialAdminPassword来查看初始密码,当然,也可以使用像上面提到的,进入容器里来访问对应的目录来查看:

docker exec -it jenkins /bin/bash
cd /var/jenkins_home/secrets/
cat initialAdminPassword

启动Gitlab

Gitlab同样,映射端口、挂载目录:

docker run \
--publish 8443:8443 --publish 8000:8000 --publish 8022:8022 \
-v /u1/gitlab/config:/etc/gitlab \
-v /u1/gitlab/logs:/var/log/gitlab \
-v /u1/gitlab/data:/var/opt/gitlab \
-d \
--name gitlab \
gitlab/gitlab-ce

参数说明:

  1. -p 映射端口;
  2. -v 挂载数据目录;
  3. -d 后台执行;
  4. 容器名称;
  5. 使用的镜像;

PS:当年第一次安装Gltlab时,折腾了好几天,最后也没有搞定,虽然后期Gitlab安装部署上容易了很多,但是相比使用Docker,还是要麻烦不少。

常用命令

本不想加这一部分,不过确实有不太熟悉的同学在使用过程中,临时去找需要的命令,也挺不爽,列几个常用的命令:

  1. 查看当前本机上所拥有的镜像列表
docker image list 
  1. 拉取镜像
docker pull xxx
or 
docker pull xxx:version
  1. 删除镜像
docker rmi image_id
  1. 查看当前的容器列表:
docker ps
or
docker container ls
or 
docker container ls --all // 这种方式可以将已经停止的容器
  1. 启动指定的容器
docker start xxx(容器名,或是容器ID)
  1. 停止容器
docker stop xxx
  1. 重启容器
docker restart xxx
  1. 删除容器
docker rm xxx
  1. 删除镜像
docker rmi xxx
  1. 打开容器的命令交互
docker exec -it xxx /bin/bash // 执行指定容器的bin/bash,也可以直接执行容器中的某个文件
  1. 查看日志
docker logs xxx
or 
docker logs -f xxx // 跟踪日志输出

有了这些命令,常用的操作基本够用了~

使用建议

通过上面的运行命令,可以看到每个不同的服务都有不同的端口的映射,使用的时候需要输入不同的端口,这里我是这样做的:

是不是比使用不同的端口号看起来要高明一些……

Gitlab还有点小问题,暂时不挂,呃

推荐理由

通过Docker屏蔽了安装过程中的繁琐步骤,大家自己就可以搞定,不需要再去麻烦系统运维人员了


一点小小的想法,希望能对大家有用。

Over~