https://git.oschina.net/dockerf/second fork一下
java
Docker Registry 是存放docker镜像的仓库
linux
Docker Hub是docker官方的Registryhttps://hub.docker.com/,因为总所周知的网络缘由,国内使用官方的registry pull 镜像速度慢的像蜗牛····nginx
[root@rancher-server]~# dao pull registry # ---------------------------------------------------------------------------- # DaoCloud ToolBox for Docker # # DaoCloud, Inc. (c) 2016 # # Fastest way to pull image from Docker Hub # ---------------------------------------------------------------------------- Pulling repository library/registry 7c4baf947271: Download complete a3ed95caeb02: Download complete f1d1dbdd4f97: Download complete 4e3899dc28fa: Download complete e14b922ad4f5: Download complete f2bbca3948d0: Download complete 1d4dc7bffbb8: Download complete Pull library/registry:latest complete, you can find it with 'docker images' #Registry服务默认会将上传的镜像保存在容器的/tmp/registry,咱们将主机的/opt/registry目录挂载到该目录,便可实现将镜像保存到主机的/opt/registry目录了 [root@rancher-server]# docker run -d -p 5000:5000 --restart=always -v /opt/registry:/tmp/registry --name registry registry 7643b9b79730ce411bf80be5f7ebb776ec15823be5d40475e3c3ebcc0d6f2b5f [root@rancher-server]/# docker logs -f 7643b9b79730ce411bf80be5f7ebb776ec15823be5d40475e3c3ebcc0d6f2b5f [root@rancher-server]/# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7643b9b79730 registry "docker-registry" 8 minutes ago Up 7 minutes 0.0.0.0:5000->5000/tcp registry 5ca3bb6cfc42 rancher/agent:v1.0.1 "/run.sh run" 14 hours ago Up 19 minutes rancher-agent 0f38b7bab4fb rancher/server "/usr/bin/s6-svscan /" 14 hours ago Up 19 minutes 3306/tcp, 0.0.0.0:8888->8080/tcp rancher-server
[root@rancher-server]/# vim /usr/lib/systemd/system/docker.service #添加--insecure-registry registry-host:5000 [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network.target docker.socket Requires=docker.socket [Service] Type=notify ExecStart=/usr/bin/docker daemon --insecure-registry 192.168.2.22:5000 -H fd:// $OPTIONS $DOCKER_STORAGE_OPTIONS MountFlags=slave LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity TimeoutStartSec=0 [Install] WantedBy=multi-user.target #加载新的配置文件 [root@rancher-server]/# systemctl daemon-reload #重启Docker服务 [root@rancher-server]/# systemctl restart docker.service #Tag镜像 registry_url/image_name:image_tag 这里咱们tag一个jenkins镜像 [root@rancher-server]/# docker tag jenkins 192.168.2.22:5000/jenkins #Push镜像到私有Registry [root@rancher-server]/# docker push 192.168.2.22:5000/jenkins The push refers to a repository [192.168.2.22:5000/jenkins] 7105667cc19d: Image successfully pushed 5f70bf18a086: Image successfully pushed 8931f5a4c543: Image successfully pushed 3d2200f39554: Image successfully pushed edc3eb62ecee: Image successfully pushed 4cbfdafef1a6: Image successfully pushed 7efd3ba34fe9: Image successfully pushed 451fe6ec6290: Image successfully pushed 910c11554e05: Image successfully pushed 18a708dd9f86: Image successfully pushed c58360ce048c: Image successfully pushed 0030e912789f: Image successfully pushed 0ece0aa9121d: Image successfully pushed ef63204109e7: Image successfully pushed 694ead1cbb4d: Image successfully pushed 591569fa6c34: Image successfully pushed 998608e2fcd4: Image successfully pushed c12ecfd4861d: Image successfully pushed Pushing tag for rev [62f5c69b8249] on {http://192.168.2.22:5000/v1/repositories/jenkins/tags/latest}
从私有Registry pull镜像到本地git
#删除刚刚Push上去的镜像 [root@rancher-server]/# docker rmi 192.168.2.22:5000/jenkins Untagged: 192.168.2.22:5000/jenkins:latest 再Pull下来 [root@rancher-server]/# docker pull 192.168.2.22:5000/jenkins Using default tag: latest Pulling repository 192.168.2.22:5000/jenkins 62f5c69b8249: Pulling dependent layers 62f5c69b8249: Pulling image (latest) from 192.168.2.22:5000/jenkins c12ecfd4861d: Pulling metadata 9bed728889e3: Pulling metadata 284d895cc891: Pulling metadata 255386472d2e: Pulling metadata 636d6481a70c: Pulling metadata 5bdfbeac8908: Pulling metadata e156e4746bc6: Pulling metadata 79539a64183f: Pulling metadata 43f767d950ba: Pulling metadata bb46233dab51: Pulling metadata acd71b58286e: Pulling metadata fae0335e5f13: Pulling metadata 988b4f10914a: Pulling metadata dbde4f7c26b4: Pulling metadata a714af38eb97: Pulling metadata a1ffa5c5ac92: Pulling metadata 43fd34bcdf1c: Pulling metadata bf942e9a6196: Pulling metadata ace3a12d121b: Pulling metadata 62f5c69b8249: Already exists ba64f08c87cf: Already exists d521a4fa3dea: Already exists 0382e085fcf1: Already exists 909f5d01a2b5: Already exists 9752b4caf6ed: Already exists 4dde5ea7e731: Already exists 5e37802efb0f: Already exists 098d97977023: Already exists ffc5d1f38cc7: Already exists 83ec3700b3b9: Already exists 0e227729a063: Already exists acca8465e42e: Already exists a6e4e05a09e5: Already exists 99d9866b6e00: Already exists 1a6d35263e5b: Already exists 2453e14f3604: Already exists 657500b7f74a: Already exists dca53caaf190: Already exists 431ede532da7: Already exists Status: Image is up to date for 192.168.2.22:5000/jenkins:latest 192.168.2.22:5000/jenkins: this image was pulled from a legacy registry. Important: This registry version will not be supported in future versions of docker. [root@rancher-server]/# docker images | grep 192.168.2.22:5000/jenkins 192.168.2.22:5000/jenkins latest 2742172fed4c 11 days ago 708.9 MB
[root@rancher-agent]~# docker push 192.168.2.22:5000/rancher/agent The push refers to a repository [192.168.2.22:5000/rancher/agent] unable to ping registry endpoint https://192.168.2.22:5000/v0/ v2 ping attempt failed with error: Get https://192.168.2.22:5000/v2/: EOF v1 ping attempt failed with error: Get https://192.168.2.22:5000/v1/_ping: EOF
修改docker启动命令,重启dockergithub
[root@rancher-server]/# vim /usr/lib/systemd/system/docker.service #添加--insecure-registry registry-host:5000 [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network.target docker.socket Requires=docker.socket [Service] Type=notify ExecStart=/usr/bin/docker daemon --insecure-registry 192.168.2.22:5000 -H fd:// $OPTIONS $DOCKER_STORAGE_OPTIONS MountFlags=slave LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity TimeoutStartSec=0 [Install] WantedBy=multi-user.target #加载新的配置文件 [root@rancher-server]/# systemctl daemon-reload #重启Docker服务 [root@rancher-server]/# systemctl restart docker.service
重启完成以后再次Pushweb
很好的解决环境一致性问题sql
加快部署和持续集成docker
Docker资源消耗少shell
Docker Compose提供一个简单的基于YAML配置语言,用于描述和组装多容器的分布式应用。 使用docker定义和运行复杂的应用,使用compose,能够在一个文件里,定义多容器的应用。只须要三步便可完成一个应用的建立。
#Install [root@rancher-server]~curl -L https://github.com/docker/compose/releases/download/1.1.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose [root@rancher-server]~chmod +x /usr/local/bin/docker-compose #clone你以前fork的git仓库 [root@rancher-server]~# git clone https://git.oschina.net/vincent927/second.git [root@rancher-server]~# cd second [root@rancher-server]~/second# cat docker-compose.yml mysql: image: csphere/mysql:5.5 ports: - "3306:3306" volumes: - /var/lib/docker/vfs/dir/dataxc:/var/lib/mysql hostname: mydb.server.com tomcat: image: csphere/tomcat:7.0.55 ports: - "8080:8080" links: - mysql:db environment: - TOMCAT_USER=admin - TOMCAT_PASS=admin hostname: tomcat.server.com #这里为了方面咱们把image改一下 mysql: image: mysql ports: - "3306:3306" volumes: - /var/lib/docker/vfs/dir/dataxc:/var/lib/mysql hostname: mydb.server.com tomcat: image: tomcat ports: - "8080:8080" links: - mysql:db environment: - TOMCAT_USER=admin - TOMCAT_PASS=admin hostname: tomcat.server.com #启动 [root@rancher-server]~/second# docker-compose up -d Recreating second_mysql_1... Recreating second_tomcat_1... #查看状态 [root@rancher-server]~/second# docker-compose ps Name Command State Ports ------------------------------------------------------------------------------ second_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp second_tomcat_1 catalina.sh run Up 0.0.0.0:8080->8080/tcp #查看日志 [root@rancher-server]~/second# docker-compose logs Attaching to second_tomcat_1, second_mysql_1 tomcat_1 | 17-Apr-2016 08:04:58.992 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version: Apache Tomcat/8.0.33 tomcat_1 | 17-Apr-2016 08:04:58.994 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Mar 18 2016 20:31:49 UTC tomcat_1 | 17-Apr-2016 08:04:58.994 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number: 8.0.33.0 tomcat_1 | 17-Apr-2016 08:04:58.994 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux tomcat_1 | 17-Apr-2016 08:04:58.994 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 3.10.0-327.10.1.el7.x86_64 tomcat_1 | 17-Apr-2016 08:04:58.994 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64 tomcat_1 | 17-Apr-2016 08:04:58.995 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /usr/lib/jvm/java-7-openjdk-amd64/jre tomcat_1 | 17-Apr-2016 08:04:58.995 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 1.7.0_95-b00 tomcat_1 | 17-Apr-2016 08:04:58.995 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation tomcat_1 | 17-Apr-2016 08:04:58.995 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/tomcat tomcat_1 | 17-Apr-2016 08:04:58.995 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/tomcat tomcat_1 | 17-Apr-2016 08:04:58.996 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties tomcat_1 | 17-Apr-2016 08:04:58.996 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager tomcat_1 | 17-Apr-2016 08:04:58.996 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.endorsed.dirs=/usr/local/tomcat/endorsed tomcat_1 | 17-Apr-2016 08:04:58.996 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat tomcat_1 | 17-Apr-2016 08:04:58.996 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat tomcat_1 | 17-Apr-2016 08:04:58.996 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp tomcat_1 | 17-Apr-2016 08:04:58.996 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib tomcat_1 | 17-Apr-2016 08:05:01.179 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"] tomcat_1 | 17-Apr-2016 08:05:01.352 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read tomcat_1 | 17-Apr-2016 08:05:01.355 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"] tomcat_1 | 17-Apr-2016 08:05:01.357 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read tomcat_1 | 17-Apr-2016 08:05:01.358 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 8408 ms tomcat_1 | 17-Apr-2016 08:05:01.386 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service Catalina tomcat_1 | 17-Apr-2016 08:05:01.386 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.0.33 tomcat_1 | 17-Apr-2016 08:05:01.419 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat/webapps/ROOT tomcat_1 | 17-Apr-2016 08:05:40.996 INFO [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [38,413] milliseconds. tomcat_1 | 17-Apr-2016 08:05:42.017 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat/webapps/ROOT has finished in 40,598 ms tomcat_1 | 17-Apr-2016 08:05:42.018 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat/webapps/docs tomcat_1 | 17-Apr-2016 08:05:42.084 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat/webapps/docs has finished in 66 ms tomcat_1 | 17-Apr-2016 08:05:42.085 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat/webapps/examples tomcat_1 | 17-Apr-2016 08:05:44.082 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat/webapps/examples has finished in 1,997 ms tomcat_1 | 17-Apr-2016 08:05:44.082 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat/webapps/host-manager tomcat_1 | 17-Apr-2016 08:05:44.123 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat/webapps/host-manager has finished in 41 ms tomcat_1 | 17-Apr-2016 08:05:44.130 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat/webapps/manager tomcat_1 | 17-Apr-2016 08:05:44.201 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat/webapps/manager has finished in 71 ms tomcat_1 | 17-Apr-2016 08:05:44.223 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"] tomcat_1 | 17-Apr-2016 08:05:44.246 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"] tomcat_1 | 17-Apr-2016 08:05:44.251 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 42893 ms #中止 [root@rancher-server]~/second# docker-compose stop Stopping second_tomcat_1... Stopping second_mysql_1... #删除 [root@rancher-server]~/second# docker-compose rm Going to remove second_tomcat_1, second_mysql_1 Are you sure? [yN] y Removing second_mysql_1... Removing second_tomcat_1... [root@rancher-server]~/second# docker-compose ps Name Command State Ports ------------------------------
[root@rancher-server]~/maven-tar/ [root@rancher-server]~ cp apache-maven-3.3.3-bin.tar.gz /maven-tar/
[root@rancher-server]/jenkins_home# docker run -d -p 8080:8080 --name jenkins -v /usr/bin/docker:/usr/bin/docker -v /./run/docker.sock:/var/run/docker.sock -v /maven-tar:/root -v /var/jenkins_home jenkins
浏览器访问
安装Git插件
在可选插件里面搜索git
勾选
git Client Plug-In
Git Parameter Plug-In
直接安装
系统管理-全局安全配置
Jenkins注册新用户
建立一个新的任务
演示代码地址
https://git.oschina.net/dockerf/build-nginx.git
增长一个构建步骤-EXCUTE-SHELL
未完待续···