本文分享在 docker 环境中,使用 docker-compose.yml 快速安装 Jenkins,以及使用主机中的 docker 打包推送镜像到阿里云

博客园的第100篇文章达成,2019的第一篇文章,新的开始,新的征程,一起迎接崭新的世界。

系统环境:

Distributor ID: Ubuntu
Description: Ubuntu 16.04.2 LTS
Release: 16.04
Codename: xenial

当前 docker 版本:Docker version 18.09.0

当前 docker-compose 版本:docker-compose version 1.23.2

docker-compose.yml

version: '3'
services:
docker_jenkins:
restart: always
image: jenkins/jenkins:lts
container_name: docker_jenkins
ports:
- '8080:8080'
- '50000:50000'
volumes:
- ./data/:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7

创建 data 目录并设置权限

  • mkdir ./data
  • sudo chown -R 1000 ./data //把当前目录的拥有者赋值给uid 1000

    若已启动则需要重建下服务

构建Jenkins服务

docker-compose up -d

...访问 http://ip:8080 进行初始化...

jenkins在docker中安装后查看登录令牌

使用命令 docker logs 容器名称/容器ID 查看访问日志,即可查看到登录令牌

若未设置账户,如何查看admin的密码

一不小心,未创建新的账户,可通过查看挂载目录下的 /secrets/initialAdminPassword 中的 Key 作为密码登录

账户:admin

密码:cat ./data/secrets/initialAdminPassword

docker build 无权限的解决办法

在 docker-compose.yml 已将主机 docker 映射到容器内,故使用 docker -v 已经能够查看到版本号

+ docker -v
Docker version 18.09.0, build 4d60db4
+ docker build -t test/test.admin.vue:v3 .
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.39/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&session=c0j8whn50ubpyukeblzkng7cq&shmsize=0&t=test%2Ftest.admin.vue%3Av3&target=&ulimits=null&version=1: dial unix /var/run/docker.sock: connect: permission denied
Build step 'Execute shell' marked build as failure

但是当使用 docker build -t . 命令的时候依旧无法执行,提示无权限( permission denied)

这个问题之前将Jenkins直接装在linux主机的时候也遇到过,在shell脚本输入框顶部加上 #!/bin/bash -ilex 即可

如果依旧不行,可执行(赋予读写执行权限):sudo chmod 777 /var/run/docker.sock 注:服务器重启后可能权限会失效

#!/bin/bash -ilex
+ docker -v
Docker version 18.09.0, build 4d60db4
+ export DOCKER_IMAGE_NAME=test/test.admin.vue:v3
+ docker build -t test/test.admin.vue:v3 .

关于 docker 镜像的构建

注册阿里云账号,并申请阿里云的容器镜像服务,创建命名空间(公/私有,可自动创建仓库),设置下 Registry 登录密码,随便新建一个仓库,查看仓库详情可查看推送 docker 的相关信息

创建好账号信息后,即可在 Jenkins 中构建推送。

可参考以下脚本,脚本环境变量说明

DOCKER_IMAGE_NAME:镜像名称(命名空间/镜像名:版本号)

DOCKER_CLOUD_URL: 镜像源

ALIYUN_USERNAME:阿里云用户名

ALIYUN_USERPWD:阿里云 Docker Registry 密码

#!/bin/bash -ilex
docker -v
echo '打包镜像'
export DOCKER_IMAGE_NAME=test/$JOB_NAME:v$BUILD_NUMBER
docker build -t $DOCKER_IMAGE_NAME . echo '推送镜像'
export DOCKER_CLOUD_URL=registry.cn-hangzhou.aliyuncs.com docker login --username=$ALIYUN_USERNAME --password=$ALIYUN_USERPWD $DOCKER_CLOUD_URL docker tag $DOCKER_IMAGE_NAME $DOCKER_CLOUD_URL/$DOCKER_IMAGE_NAME
docker push $DOCKER_CLOUD_URL/$DOCKER_IMAGE_NAME echo '删除镜像'
docker rmi $DOCKER_IMAGE_NAME
docker rmi $DOCKER_CLOUD_URL/$DOCKER_IMAGE_NAME

参考

使用 docker-compose 快速安装Jenkins的更多相关文章

  1. 使用 Docker Compose 快速构建 TiDB 集群

    本文档介绍如何在单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群.Docker Compose 可以通过一个 YAML 文件定义多个容器的应用服务,然后一键启动或停止. ...

  2. linux下快速安装jenkins

    Linux下快速安装Jenkins 建议使用 FileZilla 工具简化以下步骤中移动.环境变量配置等步骤. 1      软件下载 l  Java:jdk-7u17-linux-x64.tar.g ...

  3. docker快速安装jenkins

    用过docker的人,可能真的很难忍受再一步步二进制安装了,好了话不多说,感慨一下jenkins实现自动化发布构建真的很方便. 推荐一个学习的好地方https://m.w3cschool.cn/jen ...

  4. [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境

    快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...

  5. 利用Docker Compose快速搭建本地测试环境

    前言 Compose是一个定义和运行多个Docker应用的工具,用一个YAML(dockder-compose.yml)文件就能配置我们的应用.然后用一个简单命令就能启动所有的服务.Compose编排 ...

  6. node项目自动化部署--基于Jenkins,Docker,Github(1)安装Jenkins

    前言 每次项目代码更新后都要重新部署,如果只有一台服务器还好. 但是如果是分布式系统,动不动就很多台服务器,所以代码的自动部署就显得十分重要了. 这里用几篇文章来记录一下如何使用Jenkins,Doc ...

  7. Docker Compose 介绍安装

    Compose介绍 Compose是一个定义和管理多容器的工具,也是一种容器编排工具,前身是Pig,使用Python语言编写.使用Compose配置文件描述多个容器应用的架构,biubiu使用什么镜像 ...

  8. 26. docker compose 的安装 和 基本使用

    1. 安装 docker compose https://docs.docker.com/compose/install/  选择linux 即可 sudo curl -L "https:/ ...

  9. 手把手教你 Docker Compose的安装和使用

    一.Docker Compose是什么? Docker Compose是一个工具,用于定义和运行多容器应用程序的工具: Docker Compose通过yml文件定义多容器的docker应用: Doc ...

随机推荐

  1. 分布式任务系统gearman的python实战

    Gearman是一个用来把工作委派给其他机器.分布式的调用更适合做某项工作的机器.并发的做某项工作在多个调用间做负载均衡.或用来在调用其它语言的函数的系统.Gearman是一个分发任务的程序框架,可以 ...

  2. 代码方式设置WordPress内所有URL链接都在新标签页打开

    本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=699 前言: WordPress默认情况下几乎所有URL链接都是在同一个标签页打开.这样的话,读者点击一个链接就会离 ...

  3. 附录C--拉格朗日对偶性

    1.原始问题 假设$f(x)$,$c_i(x)$,$h_j(x)$是定义在$R^n$上的连续可微函数,$x \in R^n$.考虑以下三类优化问题. 1.无约束的优化问题: \begin{align* ...

  4. FPGA学习笔记(三)—— 数字逻辑设计基础(抽象的艺术)

    FPGA设计的是数字逻辑,在开始用HDL设计之前,需要先了解一下基本的数字逻辑设计-- 一门抽象的艺术. 现实世界是一个模拟的世界,有很多模拟量,比如温度,声音······都是模拟信号,通过对模拟信号 ...

  5. DUBBO报错分析—1(连接zookeeper成功,调用方法无反应,不报错)

    思路分析 调用方法时,最后调用执行的是mapper的sql语句,既然调用对应的方法无法获取返回值,多是sql错误,但是并未报sql错误,说明可能是与sql相关的数据源配置错误. 过程调试 经尝试,当直 ...

  6. Java 学习笔记 (七) Java 参数

    head first java page 74 实参: argument 形参: parameter 方法会运用形参, 调用的一方会传入实参. 实参是传给方法的值.当它传入方法后就成了形参, 参数跟局 ...

  7. C# 指定父層級目錄

    lstrcatW(pszpath, "\\..\\..\\"); DWORD dwlen = GetFullPathNameW(pszpath, 0u, null, null); ...

  8. 前端教程(1)http协议的深刻理解

    一 HTTP协议简介 作为学习前端开发的开始,我们必须搞明白以下几件事 1.什么是互联网      互联网=物理连接介质+互联网协议     2.互联网建立的目的? 数据传输打破地域限制,否则的话,我 ...

  9. 全面理解 javascript 的 argements caller callee call apply 之caller

    /** * 演示arguments的用法,如何获取实参数和形数数 */ function argTest(a,b,c,d){ var numargs = arguments.length; // 获取 ...

  10. 【重学计算机】操作系统D1章:计算机操作系统概述

    1. 计算机软硬件系统 冯诺伊曼结构 以运算单元为核心,控制流由指令流产生 程序和数据存储在主存中 主存是按地址访问,线性编址 指令由操作码和地址码组成 数据以二进制编码 其他:参考<重学计算机 ...