摘要:针对此改变,重新整理并记录自动部署环境配置步骤。官方源下载可能很慢,更换成国内的源,比如阿里云的源启动并设置开机自启更换镜像源从官方源下载镜像可能很慢,更换成阿里云的源即可。阿里云专属加速器地址。
前言
从Docker改变使用动态库后,DooD不再可行,而Dind依然可行。针对此改变,重新整理并记录自动部署环境配置步骤。
此环境是实现微服务自动部署的基础,使用jenkins持续集成工具,并内置了java和maven,并实现了容器内运行Docker命令的功能。
软件环境宿主机win10
虚拟机CentOS-7-x86_64-Minimal-1708
Docker 17.09.0-ce
apache-maven-3.5.2
jdk 1.8.0_151
jenkins 2.73.3
虚拟机安装配置 1. 安装Docker参考官方教程Get Docker CE for CentOS
可选项:更换源。官方源下载Docker可能很慢,更换成国内的Docker源,比如阿里云的Docker源https://download.docker.com/linux/centos/docker-ce.repo
$ sudo service docker start $ sudo chkconfig docker on3. 更换Docker镜像源
从Docker官方源下载镜像可能很慢,更换成阿里云的源即可。阿里云专属加速器地址。教程照搬一下,方便查阅。
安装/升级你的Docker客户端推荐安装1.10.0以上版本的Docker客户端,参考文档 docker-ce
如何配置镜像加速器您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器:
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-"EOF" { "registry-mirrors": ["https://a2srrwpd.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker容器安装配置 1. 创建Dockerfile
该Dockerfile已实现:
安装openjdk1.8、maven、jenkins、git
maven配置阿里云镜像源
jenkins自启
时区调整成中国上海
Dockerfile内容如下:
FROM centos:centos7.4.1708 MAINTAINER "Simon Sun"2. 编译DockerfileADD http://www-us.apache.org/dist/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz /opt USER root RUN tar -zxvf /opt/apache-maven-3.5.2-bin.tar.gz -C /opt && yum install -y wget && yum install -y initscripts && yum install -y sudo && yum install -y java-1.8.0-openjdk && yum install -y java-1.8.0-openjdk-devel && yum install -y git # install jenkins RUN wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo && rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key && yum install -y jenkins # install docker with aliyun mirror source RUN yum install -y yum-utils device-mapper-persistent-data lvm2 && yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && yum-config-manager --disable docker-ce-edge && yum install -y docker-ce RUN chmod a+x /opt/apache-maven-3.5.2/bin/mvn # add user jenkins and add user jenkins to group docker # set root password to root RUN echo "jenkins ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && gpasswd -a jenkins docker && echo "root:root" | chpasswd ENV JAVA_HOME /usr/lib/jvm/java ENV PATH $JAVA_HOME/bin:$PATH ENV MAVEN_HOME /opt/apache-maven-3.5.2 ENV PATH $MAVEN_HOME/bin:$PATH ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # add aliyun maven mirror source RUN sed -i "//i " /opt/apache-maven-3.5.2/conf/settings.xml USER jenkins CMD sudo service jenkins start && tail -F /var/log/jenkins/jenkins.log nexus-aliyun central Nexus aliyun http://maven.aliyun.com/nexus/content/groups/public
docker build -t jeesun/java-jenkins .3. 启动容器
docker run --privileged -i -t -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 jeesun/java-jenkins
此时我已经使用jenkins账户登录到容器中,根据Dockerfile,此时jenkins已经自启,且目前正在运行命令tail -F /var/log/jenkins/jenkins.log。
按Ctrl+P+Q退出bash。命令Ctrl+P+Q保证退出容器不关闭容器。
访问http://localhost:8080。当然,因为我装的是minimal版的CentOS,没有图形界面,只能在宿主机上通过http://虚拟机ip:8080来访问。可使用命令ip addr查看虚拟机ip地址。
使用docker ps查看CONTAINER ID。
使用docker exec -it container_id /bin/bash进入容器。
首次访问该地址需要使用/var/lib/jenkins/secrets/initialAdminPassword中的初始管理员密码来解锁jenkins。 执行cat /var/lib/jenkins/secrets/initialAdminPassword就可以知道密码了。
按照页面指示继续,jenkins会推荐下载一些插件。我默认都安装了。如果安装失败重试即可。然后就是填入新的管理员账号密码。完成后正式进入jenkins管理页面。
5. 测试选择新建,填入项目名称,选择构建一个自由风格的软件项目。
构建——》增加构建步骤——》Execute shell——》填入docker run hello-world——》保存。选择立即构建。如果不报错,气球为蓝色,说明成功。
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.34/version: dial unix /var/run/docker.sock: connect: permission denied解决方案
优先参考官方Manage Docker as a non-root user。
关闭虚拟机的selinux(可能有用)。参考查看 SELinux状态及关闭SELinux。
在虚拟机中修改/var/run/docker.sock的权限。(很危险!!!)
$ sudo chmod 777 /var/run/docker.sock2. 错误2 错误内容
Failed to get D-Bus connection: Operation not permitted解决方案
忽略。
3. 错误3 错误内容Couldn"t connect to Docker daemon at http+unix://var/run/docker.sock - is it running?解决方案
权限问题。解决办法同错误1。
参考内容https://askubuntu.com/questions/477551/how-can-i-use-docker-without-sudo
Docker in Docker
DooD(不再有用,因为新版Docker使用了动态库)
Dockerfile: ADD vs COPY
Maven镜像更换为阿里云中央仓库(精)
tailf、tail -f、tail -F三者区别
[How to automatically start a service when running a docker container?
](https://stackoverflow.com/que...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/70625.html
摘要:从开始搭建自动部署环境续前言上一篇从开始搭建自动部署环境虽然环境搭建起来了,但是配置少了一部分步骤。创建本地仓库参考新建项目项目是我写的一个用来测试环境的项目,代码托管在上。 从0开始搭建自动部署环境(续) 前言 上一篇从0开始搭建自动部署环境虽然环境搭建起来了,但是配置少了一部分步骤。本来应该写到上一篇中,但是这样做篇幅过长了。另外,此篇会使用自动部署一个同步在Github上的Spr...
摘要:从开始搭建自动部署环境续前言上一篇从开始搭建自动部署环境虽然环境搭建起来了,但是配置少了一部分步骤。创建本地仓库参考新建项目项目是我写的一个用来测试环境的项目,代码托管在上。 从0开始搭建自动部署环境(续) 前言 上一篇从0开始搭建自动部署环境虽然环境搭建起来了,但是配置少了一部分步骤。本来应该写到上一篇中,但是这样做篇幅过长了。另外,此篇会使用自动部署一个同步在Github上的Spr...
摘要:针对此改变,重新整理并记录自动部署环境配置步骤。官方源下载可能很慢,更换成国内的源,比如阿里云的源启动并设置开机自启更换镜像源从官方源下载镜像可能很慢,更换成阿里云的源即可。阿里云专属加速器地址。 前言 从Docker改变使用动态库后,DooD不再可行,而Dind依然可行。针对此改变,重新整理并记录自动部署环境配置步骤。 此环境是实现微服务自动部署的基础,使用jenkins持续集成工具...
摘要:和比特币协议有所不同的是,以太坊的设计十分灵活,极具适应性。超级账本区块链的商业应用超级账本超级账本是基金会下的众多项目中的一个。证书颁发机构负责签发撤 showImg(https://segmentfault.com/img/bV2ge9?w=900&h=385); 从比特币开始 一个故事告诉你比特币的原理及运作机制 这篇文章的定位会比较科普,尽量用类比的方法将比特币的基本原理讲出来...
阅读 2869·2021-11-23 09:51
阅读 3387·2021-11-22 09:34
阅读 3267·2021-10-27 14:14
阅读 1466·2019-08-30 15:55
阅读 3324·2019-08-30 15:54
阅读 1044·2019-08-30 15:52
阅读 1861·2019-08-30 12:46
阅读 2825·2019-08-29 16:11