从0开始搭建自动部署环境

从0开始搭建自动部署环境 前言

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

参考官方教程
可选项:更换源。官方源下载Docker可能很慢,更换成国内的Docker源,比如阿里云的Docker源https://download.docker.com/linux/centos/docker-ce.repo

2. 启动Docker并设置开机自启 $ sudo service docker start $ sudo chkconfig docker on 3. 更换Docker镜像源

从Docker官方源下载镜像可能很慢,更换成阿里云的源即可。阿里云专属加速器。教程照搬一下,方便查阅。

安装/升级你的Docker客户端

推荐安装1.10.0以上版本的Docker客户端,参考文档 docker-ce

如何配置镜像加速器 针对Docker客户端版本大于1.10.0的用户

您可以通过修改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"<simon.sun.dev@hotmail.com> ADD /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 '/<\/mirrors>/i\<mirror>\n <id>nexus-aliyun<\/id>\n <mirrorOf>central<\/mirrorOf>\n <name>Nexus aliyun<\/name>\n <url><\/url>\n<\/mirror>' /opt/apache-maven-3.5.2/conf/settings.xml USER jenkins CMD sudo service jenkins start && tail -F /var/log/jenkins/jenkins.log 2. 编译Dockerfile 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保证退出容器不关闭容器。

访问:8080。当然,因为我装的是minimal版的CentOS,没有图形界面,只能在宿主机上通过虚拟机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——》保存。选择立即构建。如果不报错,气球为蓝色,说明成功。

报错解决 1. 错误1 错误内容 Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get %2Fvar%2Frun%2Fdocker.sock/v1.34/version: dial unix /var/run/docker.sock: connect: permission denied 解决方案

优先参考官方。

关闭虚拟机的selinux(可能有用)。参考查看 SELinux状态及关闭SELinux。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpgxpj.html