私有仓库
1.下载软件包
cd /opt
wget https://github.com/goharbor/harbor/releases/download/v1.9.3/harbor-offline-installer-v1.9.3.tgz
tar xf harbor-offline-installer-v1.9.0-rc1.tgz
2.修改配置
vim harbor.yml
hostname: 10.0.0.51
harbor_admin_password: 123456
3.下载docker-compose
yum install docker-compose -y
4.安装harbor
./install.sh
5.修改镜像名称
docker tag ae21150e3af8 10.0.0.51/linux/my_kod:v2
docker images
6.修改docker配置添加信任仓库
cat >/etc/docker/daemon.json<<EOF
{
"registry-mirrors": ["https://ig2l319y.mirror.aliyuncs.com"],
"insecure-registries": ["http://10.0.0.51"]
}
EOF
7.docker登录到harbor
docker login 10.0.0.51
8.上传镜像到私有仓库
docker push 10.0.0.51/linux/my_kod:v2
9.客户端使用仓库下载镜像
docker run -p 80:80 -d 10.0.0.51/linux/my_kod:v2
docker 运行zabbix、gitlab
可以去官网,官网都有详细信息
docker运行zabbix
docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-d mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_bin
docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--link mysql-server:mysql \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql:latest
docker run --name zabbix-web-nginx-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--link mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-p 80:80 \
-d zabbix/zabbix-web-nginx-mysql:latest
docker运行gitlab
docker run --detach \
--hostname 10.0.0.51 \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
docker-compose
gitlab
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/docker/README.md#install-gitlab-using-docker-compose
zabbix
https://www.zabbix.com/documentation/4.0/zh/manual/installation/containers
监控容器
1.docker自带的监控命令
docker container ps :查看正在运行的容器
docker container top :知道某个容器运行了哪些进程
docker container stats :显示每个容器各种资源使用情况
2.cAdvisor+ prometheus+ grafana组件介绍
组件介绍:
#cAdvisor
cAdvisor是google开发的容器监控工具,cAdvisor会显示当前host的资源使用情况,包括CPU,内存,网络,文件系统。
不过cAdvisor提供的操作界面略显简陋,而且需要在不同页面之间跳转,并且只能监控一个host,这不免让人质疑他的实用性,但cAdvisor有一个亮点是可以将监控到的数据导出给第三方工具,有这些工具进一步加工处理。
所以我们可以把cAdvisor定位为一个监控数据收集器,收集和导出数据是他的强项,而非展示数据。
cAdvisor支持很多第三方工具,其中就包含prometheus
#prometheus
Prometheus是一个非常优秀的监控工具。提供了监控数据搜集,存储,处理,可视化和告警一系列完整的解决方案。包含组件
Node Exporter :负责收集host硬件和操作系统数据,以容器的形式运行在所有host上
cAdvisor :负责收集容器数据,以容器的形式运行在所有host上
#grafana
grafana是一款支持多种数据源的图形展示工具
3.部署
#地址规划:
10.0.0.51 cAdvisor+ Node Exporter +prometheus+ grafana
10.0.0.52 cAdvisor+ Node Exporter
#docker01的配置文件:
cat >docker-compose.yml<<EOF
version: '3.2'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
ports:
- 9090:9090
command:
- --config.file=/etc/prometheus/prometheus.yml
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
depends_on:
- cadvisor
node-exporter:
image: prom/node-exporter:latest
container_name: node_exporter
ports:
- 9100:9100
cadvisor:
image: google/cadvisor:latest
container_name: cadvisor
ports:
- 8080:8080
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- 3000:3000
EOF
#prometheus配置文件
cat >prometheus.yml <<EOF
scrape_configs:
- job_name: cadvisor
scrape_interval: 5s
static_configs:
- targets:
- 10.0.0.111:8080
- 10.0.0.112:8080
- job_name: prometheus
scrape_interval: 5s
static_configs:
- targets:
- 10.0.0.111:9090
- job_name: node_exporter
scrape_interval: 5s
static_configs:
- targets:
- 10.0.0.111:9100
- 10.0.0.112:9100
EOF
#docker02配置文件:
cat >docker-compose.yml<<EOF
version: '3.2'
services:
node-exporter:
image: prom/node-exporter:latest
container_name: node_exporter
ports:
- 9100:9100
cadvisor:
image: google/cadvisor:latest
container_name: cadvisor
ports:
- 8080:8080
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
EOF
4.运行
ntpdate time1.aliyun.com
docker-compose up -d
5.检查
http://10.0.0.111:8080/metrics
http://10.0.0.111:9100/metrics
http://10.0.0.111:9090
http://10.0.0.111:3000
docker 跨主机通信
Docker跨主机容器之间的通信macvlan
默认一个物理网卡,只有一个物理mac地址,虚拟多个mac地址
##创建macvlan网络 docker network create --driver macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_1
##设置eth0的网卡为混杂模式 ip link set eth1 promisc on
##创建使用macvlan网络的容器 docker run -it --network macvlan_1 --ip=10.0.0.200 busybox
这种方式容器连不上外网
Dcoker跨主机容器通信之overlay
http://www.cnblogs.com/CloudMan6/p/7270551.html
docker03上:
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
设置容器的主机名
consul:kv类型的存储数据库(key:value) docker01、02上: vim /etc/docker/daemon.json { "hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"], "cluster-store": "consul://10.0.0.13:8500", "cluster-advertise": "10.0.0.11:2376" }
vim /etc/docker/daemon.json vim /usr/lib/systemd/system/docker.service systemctl daemon-reload systemctl restart docker
2)创建overlay网络 docker network create -d overlay --subnet 172.16.1.0/24 --gateway 172.16.1.254 ol1
3)启动容器测试 docker run -it --network ol1 --name oldboy01 busybox /bin/bash 每个容器有两块网卡,eth0实现容器间的通讯,eth1实现容器访问外网
1.安装部署
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
2.修改docker启动文件
[root@docker01 ~]# vim /lib/systemd/system/docker.service
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store
consul://10.0.0.11:8500 --cluster-advertise 10.0.0.11:2375
3.重启docker
systemctl daemon-reload
systemctl restart docker.service
另一台机器一样操作
4.测试
在 docker1 上创建网络,然后会自动同步到 docker2 上
docker network create -d overlay overlay_net
分别在两个节点上创建容器
docker1
docker run -it --net=overlay_net --name busybox01 busybox:latest
docker2
docker run -it --net=overlay_net --name busybox02 busybox:latest
docker数据卷管理
/usr/share/nginx/html
-v /opt/xiaoniao:/usr/share/nginx/html
持久化 数据卷(文件或目录) -v 卷名:/data -v src(宿主机的目录):dst(容器的目录) 数据卷容器 --volumes-from(跟某一个已经存在的容器挂载相同的卷) 基于nginx启动一个容器,监听80和81,访问80,出现nginx默认欢迎首页,访问81,出现小鸟。 -p 80:80 -p 81:81 -v xxx:xxx -v xxx:xxxx 基于nginx多端口的多站点。