Tag - docker

docker consul swarm overlay    2017-07-19 19:51:10    1097

Docker的使用中,尤为重要的是服务发现和docker的宿主机集群及跨主机overlay网络的搭建,这里来介绍下常用来配合使用的swarm+consul集群的搭建(此处全基于docker容器)

集群介绍:

192.168.11.30 为consul服务的leader,swarm的集群server和client节点,并为primary

192.168.11.32 为consul服务的节点,swarm的集群server和client节点,并为备份节点

服务分布:

192.168.11.30:

consul、swarm、nginx

192.168.11.32:

consul、swarm、nexus、jenkins、registry

基础环境

修改docker基础配置

cluster-store 是consul的leader的地址

cluster-advertise 是swarm client的地址,即当前主机

11.30

  1. vi /usr/lib/systemd/system/docker.service
  2. ExecStart=/usr/bin/docker daemon --tls=false -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 --cluster-store=consul://192.168.11.30:8500 --cluster-advertise=192.168.11.30:2375
  3. systemctl daemon-reload
  4. systemctl restart docker

by 刘迎光@萤火虫工作室
OpenBI交流群:495266201
MicroService 微服务交流群:217722918
mail: liuyg#liuyingguang.cn
博主首页(==防止爬虫==):http://blog.liuyingguang.cn
11.32

  1. vi /usr/lib/systemd/system/docker.servi
docker jenkins 容器 镜像    2017-06-07 17:51:34    1805
环境:
    CentOS 7
    Docker 1.10.3

1、本机安装docker环境,并配置TCP访问接口
    # vi /usr/lib/systemd/system/docker.service
    修改ExecStart为:
    ExecStart=/usr/bin/docker daemon --tls=false -H unix:///var/run/docker.sock  -H tcp://0.0.0.0:2375

2、pull并运行jenkins的docker镜像

    # docker pull index.docker.io/library/jenkins:1.642.2

    # docker run -d -e "DOCKER_HOST=tcp://192.168.10.136:2375" --name myjenkins -u root -p 8080:8080 -p 50000:50000 -v /home/jenkins-home-docker:/var/jenkins_home jenkins
    # docker cp /usr/bin/docker myjenkins:/usr/bin

3、安装插件:CloudBees Docker Build and Publish plug

4、配置jenkins镜像内部的docker,这里我们直接使用docker的二进制编译版本:
    # wget https://get.docker.com/builds/Linux/x86_64/docker-1.11.2.tgz
    # tar xvf docker-1.11.2.tgz
    # mv docker/* /usr/bin/docker
5、创建项目apache,源码管理选择git,URL为:https://git.coding.net/lightingLYG/apache.git
增加构建步奏,选择“Docker Build and Publish”,填写name,Docker Host URI为tcp://宿主机host:2375
然后点开高级,选中“Skip Push”
保存后即可构建,此处跳过了push到服务器的操作

6、到宿主机中查看镜像是否打包完成
    # docker images

by 刘迎光@萤火虫工作室
OpenB

docker jenkins 容器 镜像    2017-06-07 17:38:18    1144

最近又重新部署了jenkins持续集成系统,看到之前整理的文章不够详细,于是重新整理了docker下使用jenkins的容器进行持续集成的相关文章,拿来分享下

docker环境

  1. registry镜像:registry:2.6.1
  2. docker:17.05.0-ce
  3. registry宿主机IP:192.168.2.10
  4. jenkins的docker镜像:jenkins:2.46.3-alpine

docker-compose 文件:

  1. version: '2'
  2. services:
  3. jenkins:
  4. image: jenkins:2.46.3-alpine
  5. hostname: jenkins
  6. ports:
  7. - "8080:8080"
  8. - "50000:50000"
  9. environment:
  10. - DOCKER_HOST=tcp://192.168.2.10:2375
  11. volumes:
  12. - /home/soft/jenkins_home:/var/jenkins_home
  13. logging:
  14. options:
  15. max-size: "1000k"

部分解释:

jenkins的docker镜像

这个镜像是基于官方的镜像(jenkins:2.46.3-alpine)修改添加部分定制化内容(增加时区设置为上海,增加docker-17.05.0-ce的执行命令到容器中)的镜像

环境变量:DOCKER_HOST

这里的环境变量主要是给容器内的docker执行文件用的,用来标识docker运行的主机,即默认执行如下命令:

  1. docker -H 192.168.2.10:2375 ···

为什么要将docker的可执行文件放到容器中?

主要是为了方便容器中的jenkins在使用的“CloudBees Docker Build and Publish plug”插件中执行docker命令

docker DockerHub 容器    2017-04-28 16:33:23    1006

有时候想要保存自己的docker镜像,又不想自己搭建docker registry,那么就可以了借用DockerHub来用,一般不会有多少人在意你的镜像,不过万一被人看上了呢,这谁说的准呢,废话不多说,下面来看看操刀记录

  1. 在DockerHub上创建账号:https://hub.docker.com/ (这里我的账号是firewarm)
  2. 本地下载镜像(这里拿alpine做示例),并为镜像打tag
  1. [root@host-30 ~]# docker pull alpine:3.4
  2. [root@host-30 ~]# docker tag alpine:3.4 firewarm/alpine:3.4
  1. 登录到DockerHub上
  1. [root@host-30 ~]# docker login
  2. # 输入用户名和密码
  1. push镜像到DockerHub上
  1. [root@host-30 ~]# docker push firewarm/alpine:3.4
  2. The push refers to a repository [docker.io/firewarm/alpine]
  3. 4fe15f8d0ae6: Pushed
  4. 3.4: digest: sha256:dc89ce8401da81f24f7ba3f0ab2914ed9013608bdba0b7e7e5d964817067dc06 size: 528

by 刘迎光@萤火虫工作室
OpenBI交流群:495266201
MicroService 微服务交流群:217722918
mail: liuyg#liuyingguang.cn
博主首页(==防止爬虫==):http://blog.liuyingguang.cn

docker alpine 容器 时区    2017-01-11 09:51:41    982

在使用docker的时候,由于很多基础linux镜像都比较大,alpine这个仅仅几兆的linux基础镜像受到了很多人喜欢,笔者也不例外,可是由于alpine中的一些配置及命令与常见的centos等系统在一些方面不一样,下面来看看时区问题是如何解决的:

原因:alpine中,原生是不带时区相关的命令及文件的,需要安装额外的包来支持,然后需要将时区文件内容替换为localtime文件

解决办法

建议打造自己的alpine基础镜像,如下是我的alpine的Dockerfile:

  1. FROM alpine:3.4
  2. MAINTAINER firewarm LightingLiu <liuyg@liuyingguang.cn>
  3. # Install root filesystem
  4. ADD ./rootfs /
  5. # Install base packages
  6. RUN apk update && apk add curl bash tree tzdata \
  7. && cp -r -f /usr/share/zoneinfo/Hongkong /etc/localtime \
  8. && echo -ne "Alpine Linux 3.4 image. (`uname -rsv`)\n" >> /root/.built
  9. # Define bash as default command
  10. CMD ["/bin/bash"]

当这个镜像完成以后,不需要配置任何环境变量即可使用京八区的时区及时间

参考的源代码

  1. docker run -it --rm alpine /bin/sh
  2. / # date
  3. Sun May 8 20:46:18 UTC 2016
  4. / # apk add -U tzdata
  5. fetch http://dl-cdn.alpinelinux.org/alpine/v3.3/main/x86_64/APKINDEX.tar.gz
  6. fetch http://dl-cdn.alpinelinux.org/alpine/v3.3/comm
3/3