私有倉(cāng)庫(kù)
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.修改鏡像名稱(chēng)
docker tag ae21150e3af8 10.0.0.51/linux/my_kod:v2
docker images
6.修改docker配置添加信任倉(cāng)庫(kù)
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.上傳鏡像到私有倉(cāng)庫(kù)
docker push 10.0.0.51/linux/my_kod:v2
9.客戶端使用倉(cāng)庫(kù)下載鏡像
docker run -p 80:80 -d 10.0.0.51/linux/my_kod:v2
docker 運(yùn)行zabbix璧针、gitlab
可以去官網(wǎng)泼橘,官網(wǎng)都有詳細(xì)信息
docker運(yùn)行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運(yùn)行g(shù)itlab
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
監(jiān)控容器
1.docker自帶的監(jiān)控命令
docker container ps :查看正在運(yùn)行的容器
docker container top :知道某個(gè)容器運(yùn)行了哪些進(jìn)程
docker container stats :顯示每個(gè)容器各種資源使用情況
2.cAdvisor+ prometheus+ grafana組件介紹
組件介紹:
#cAdvisor
cAdvisor是google開(kāi)發(fā)的容器監(jiān)控工具民晒,cAdvisor會(huì)顯示當(dāng)前host的資源使用情況尾序,包括CPU悯许,內(nèi)存亥啦,網(wǎng)絡(luò)炭剪,文件系統(tǒng)。
不過(guò)cAdvisor提供的操作界面略顯簡(jiǎn)陋翔脱,而且需要在不同頁(yè)面之間跳轉(zhuǎn)奴拦,并且只能監(jiān)控一個(gè)host,這不免讓人質(zhì)疑他的實(shí)用性届吁,但cAdvisor有一個(gè)亮點(diǎn)是可以將監(jiān)控到的數(shù)據(jù)導(dǎo)出給第三方工具错妖,有這些工具進(jìn)一步加工處理。
所以我們可以把cAdvisor定位為一個(gè)監(jiān)控?cái)?shù)據(jù)收集器疚沐,收集和導(dǎo)出數(shù)據(jù)是他的強(qiáng)項(xiàng)暂氯,而非展示數(shù)據(jù)。
cAdvisor支持很多第三方工具亮蛔,其中就包含prometheus
#prometheus
Prometheus是一個(gè)非常優(yōu)秀的監(jiān)控工具痴施。提供了監(jiān)控?cái)?shù)據(jù)搜集,存儲(chǔ),處理辣吃,可視化和告警一系列完整的解決方案动遭。包含組件
Node Exporter :負(fù)責(zé)收集host硬件和操作系統(tǒng)數(shù)據(jù),以容器的形式運(yùn)行在所有host上
cAdvisor :負(fù)責(zé)收集容器數(shù)據(jù)神得,以容器的形式運(yùn)行在所有host上
#grafana
grafana是一款支持多種數(shù)據(jù)源的圖形展示工具
3.部署
#地址規(guī)劃:
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.運(yùn)行
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 跨主機(jī)通信
Docker跨主機(jī)容器之間的通信macvlan
默認(rèn)一個(gè)物理網(wǎng)卡厘惦,只有一個(gè)物理mac地址,虛擬多個(gè)mac地址
##創(chuàng)建macvlan網(wǎng)絡(luò) docker network create --driver macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_1
##設(shè)置eth0的網(wǎng)卡為混雜模式 ip link set eth1 promisc on
##創(chuàng)建使用macvlan網(wǎng)絡(luò)的容器 docker run -it --network macvlan_1 --ip=10.0.0.200 busybox
這種方式容器連不上外網(wǎng)
Dcoker跨主機(jī)容器通信之overlay
http://www.cnblogs.com/CloudMan6/p/7270551.html
docker03上:
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
設(shè)置容器的主機(jī)名
consul:kv類(lèi)型的存儲(chǔ)數(shù)據(jù)庫(kù)(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)創(chuàng)建overlay網(wǎng)絡(luò) docker network create -d overlay --subnet 172.16.1.0/24 --gateway 172.16.1.254 ol1
3)啟動(dòng)容器測(cè)試 docker run -it --network ol1 --name oldboy01 busybox /bin/bash 每個(gè)容器有兩塊網(wǎng)卡,eth0實(shí)現(xiàn)容器間的通訊,eth1實(shí)現(xiàn)容器訪問(wèn)外網(wǎng)
1.安裝部署
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
2.修改docker啟動(dòng)文件
[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
另一臺(tái)機(jī)器一樣操作
4.測(cè)試
在 docker1 上創(chuàng)建網(wǎng)絡(luò)宵蕉,然后會(huì)自動(dòng)同步到 docker2 上
docker network create -d overlay overlay_net
分別在兩個(gè)節(jié)點(diǎn)上創(chuàng)建容器
docker1
docker run -it --net=overlay_net --name busybox01 busybox:latest
docker2
docker run -it --net=overlay_net --name busybox02 busybox:latest
docker數(shù)據(jù)卷管理
/usr/share/nginx/html
-v /opt/xiaoniao:/usr/share/nginx/html
持久化 數(shù)據(jù)卷(文件或目錄) ? -v 卷名:/data ? -v src(宿主機(jī)的目錄):dst(容器的目錄) 數(shù)據(jù)卷容器 ? --volumes-from(跟某一個(gè)已經(jīng)存在的容器掛載相同的卷) ? 基于nginx啟動(dòng)一個(gè)容器,監(jiān)聽(tīng)80和81节榜,訪問(wèn)80国裳,出現(xiàn)nginx默認(rèn)歡迎首頁(yè),訪問(wèn)81全跨,出現(xiàn)小鳥(niǎo)缝左。 -p 80:80 -p 81:81 -v xxx:xxx -v xxx:xxxx 基于nginx多端口的多站點(diǎn)。