docker(consul 和Jenkins)

docker(consul 和Jenkins)

consul

# 拉取
docker pull consul 
# 启动
docker run -d -p 8500:8500 -v /usr/local/docker/consul:/consul/data -e CONSUL\_BIND\_INTERFACE='eth0' --name=cxyConsul 镜像id agent -server -bootstrap -ui -node=node-1 -client='0.0.0.0' -datacenter=cxy

server: 以server身份启动。默认是client
bootstrap-expect:集群要求的最少server数量,当低于这个数量,集群即失效。
data-dir:data存放的目录,更多信息请参阅consul数据同步机制
node:节点id,集群中的每个node必须有一个唯一的名称。默认情况下,Consul使用机器的hostname
bind:监听的ip地址。默认绑定0.0.0.0,可以不指定。表示Consul监听的地址,而且它必须能够被集群中的其他节点访问。Consul默认会监听第一个private IP,但最好还是提供一个。生产设备上的服务器通常有好几个网卡,所以指定一个不会出错
client: 客户端的ip地址,0.0.0.0是指谁都可以访问(不加这个,下面的ui :8500无法访问)
ui: 可以访问UI界面
-config-dir指定配置文件夹,Consul会加载其中的所有文件
-datacenter 指定数据中心名称,默认是dc1

image-20200816161348538

Jenkins

根据镜像OFFICIAL标签判断,位列第一、名字为jenkins的是 Jenkins 官方提供的镜像。我们是不是应该使用这个官方镜像呢?

如果你看过 Jenkins 文档中 Docker 安装 小节,会发现官方推荐使用的镜像是jenkinsci/blueocean,该镜像包含当前的长期支持 (LTS) 的 Jenkins 版本 (可以生产使用) ,并捆绑了所有 Blue Ocean 插件和功能。

第一次安装的时候使用的是jenkins镜像,其集成的 Jenkins 版本比较高,结果出现好多插件不兼容的情况,对于我等小白来说是一件比较麻烦的事。

这里我们果断使用jenkinsci/blueocean镜像,使用docker pull命令拉取:

# 拉取镜像
docker pull jenkinsci/blueocean
# 启动容器
docker run \
  --name cxyJenkins-blueocean \
  -d \
  -p 8081:8080 \
  -p 50000:50000 \
  -v /usr/local/docker/jenkins:/var/jenkins_home \
  jenkinsci/blueocean
 # 报错
 [root@centos8 jenkins]# docker logs 06a6e888dbf5
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
# 修改
sudo chown -R 1000:1000 /usr/local/docker/jenkins
# 成功
root@centos8 jenkins]# sudo chown -R 1000:1000 /usr/local/docker/jenkins
[root@centos8 jenkins]# docker start 06a6e888dbf5
06a6e888dbf5
[root@centos8 jenkins]# docker ps 
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                                  NAMES
06a6e888dbf5        jenkinsci/blueocean   "/sbin/tini -- /usr/…"   4 minutes ago       Up 3 seconds        0.0.0.0:50000->50000/tcp, 0.0.0.0:8081->8080/tcp       cxyJenkins-blueocean
63785bef8658        6ad6cb039dfa          "/docker-entrypoint.…"   2 weeks ago         Up 10 minutes       2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp   cxyZookeeper
992d0be96bc1        mysql:8.0.20          "docker-entrypoint.s…"   5 weeks ago         Up 10 minutes       33060/tcp, 0.0.0.0:3307->3306/tcp                      mysqlSlave
23ceac64fab5        mysql:8.0.20          "docker-entrypoint.s…"   5 weeks ago         Up 10 minutes       0.0.0.0:3306->3306/tcp, 33060/tcp                      mysqlMaster
48f8725736c3        redis:6.0.5           "docker-entrypoint.s…"   5 weeks ago         Up 10 minutes       6379/tcp, 0.0.0.0:7003->7003/tcp                       redisSentinel
38c2f6e00354        redis:6.0.5           "docker-entrypoint.s…"   5 weeks ago         Up 10 minutes       6379/tcp, 0.0.0.0:6666->6666/tcp                       cxyredis
# 访问 以上如果一切正常,现在就可以通过http://<ipaddress>:8081 访问 Jenkins 的 Web 界面了。
# 管理员初始化密码
[root@centos8 jenkins]# docker exec -it 06a6e888dbf5 /bin/bash
bash-5.0$ cat /var/jenkins_home/secrets/initialAdminPassword
c994db795bb9450399b48e54efbc1b47