搭建基于consul,registrator,nsq的GO体系Docker开发环境

使用GO作为生产服务开发语言,避免不了与以下几大基础组件打交道,他们分别是:

consul,registrator,nsq

consul

Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,通常用于docker 实例的注册与配置共享

registrator

Registrator 去除了需要手动管理Consul服务条目的复杂性,它监视容器的启动和停止,根据容器暴露的端口和环境变量自动注册服务。

nsq

NSQ是一个基于Go语言的分布式实时消息平台

基于Docker容器的组件搭建

以上组件都提供了官方docker镜像,我们只需要拉取镜像启动即可,以下提供组件使用命令,可供单机开发使用,复杂如consul组集群等,不在此讨论

consul启动命令
docker stop dev-consul
docker rm dev-consul
docker run -d --name=dev-consul -p 8400:8400 -p 8500:8500/tcp -p 8600:53/udp -e 'CONSUL_LOCAL_CONFIG={"bootstrap_expect":1,"datacenter":"dc1","data_dir":"/usr/local/bin/consul.d/data","server":true}' consul agent -server -bind=127.0.0.1 -client=0.0.0.0

bind为服务发布地址,默认为网卡发布,否则可能只发布到容器内部ip

registrator启动命令
docker stop registrator
docker rm registrator
docker run -d --restart=always --name=registrator \
-v /var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:latest -ip yourip  consul://yourip:8500

其中ip地址为该服务器ip地址,主动申明的目的在于防止registrator自动将127.0.0.1本地回环作为对外暴露的ip地址注册到consul上。

nsq启动命令

nsqlookupd: docker run -d --restart=always --name lookupd \ -p 4160:4160 \ -p 4161:4161 \ nsqio/nsq /nsqlookupd nsqd: docker run -d --restart=always --name nsqd \ -p 4150:4150 \ -p 4151:4151 \ nsqio/nsq /nsqd --broadcast-address=yourip --lookupd-tcp-address=yourip:4160 nsqadmin: docker run -d --restart=always --name nsqadmin \ -p 4171:4171 \ nsqio/nsq /nsqadmin --lookupd-http-address=yourip:4161

Docker配置使用harbor私服

Docker默认使用docker-hub拉取镜像,使用harbor私服,必须对docker进行配置,否则docker在拉取镜像时会报错

1. 添加harbor私服配置

创建或修改以下文件:

vim /etc/docker/daemon.json

添加或增加harbor配置:

{ "insecure-registries":["myhostname"] }
2. 登录harbor
docker login -u admin -p Harbor12345 yourhostname

登录完成后会在docker配置中增加一条授权记录

cat /root/.docker/config.json

Docker私服Harbor安装

Docker私服一般选用vmware的harbor

官方地址:

https://github.com/vmware/harbor/releases

1. 安装dcoker-compose

harbor依赖docker-compose组件,首先安装docker-compose

docker-compose官方地址:

https://github.com/docker/compose/releases

安装命令:

curl -L https://github.com/docker/compose/releases/download/1.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
2. 安装harbor安装包

harbor安装包分为离线安装和在线安装,考虑到国内网络环境,一般选择离线安装

下载最新版本,目前为1.1.1
wget https://github.com/vmware/harbor/releases/download/v1.1.1/harbor-offline-installer-v1.1.1.tgz
解压缩
tar xzvf harbor-offline-installer-v1.1.1.tgz
修改配置文件

进入harbor安装目录,修改配置文件

vim harbor.cfg

以下必须修改:

hostname ,harbor启动后的访问ip或者域名

以下酌情修改:

harbor_admin_password ,harbor的默认用户名密码,默认为:admin/Harbor12345

安装harbor
./install.sh
3. 验证harbor

浏览器打开以下url:
http://yourhostname/harbor

4. 启停harbor

harbor使用docker作为容器,启停harbor前,必须首先启动docker服务

停止harbor
docker-compose stop
启动start
docker-compose stop

Centos安装Docker特定版本

某些情况下,不希望安装官方最新版本,这个时候就需要指定版本进行安装

1. 前置条件
必须是CENTOS7,64位
2. 安装源
sudo tee /etc/yum.repos.d/docker.repo
<<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
3. 选择版本号

进入

https://yum.dockerproject.org/repo/main/centos/7/Packages/

选择需要安装的版本号,如:

docker-engine-1.12.4-1.el7.centos.src.rpm
docker-engine-1.12.4-1.el7.centos.x86_64.rpm
docker-engine-1.12.5-1.el7.centos.src.rpm
docker-engine-1.12.5-1.el7.centos.x86_64.rpm

4. 安装依赖包

docker-engine依赖docker-engine-selinux包,先安装相同版本的docker-engine-selinux包:

yum install docker-engine-selinux-1.12.5-1.el7.centos.noarch.rpm

5. 安装Docker

yum install docker-engine-1.12.5-1.el7.centos.x86_64.rpm

6. 启动Docker
sudo systemctl start docker
7. 测试Docker
sudo docker run hello-world

Centos安装Docker最新版

官方文档:

https://store.docker.com/editions/community/docker-ce-server-centos?tab=description

1. 前置条件
必须是CENTOS7,64位
2. 安装源

安装必要工具集

sudo yum install -y yum-utils

安装docker官方源

sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

更新yum缓存

sudo yum makecache fast
3. 安装Dcoker
sudo yum -y install docker-ce
4. 启动Docker
sudo systemctl start docker
5. 测试Docker
sudo docker run hello-world