安裝
市場: hub.docker.com
參考中文站點: http://docs.docker-cn.com/
windows10 ubuntu18子系統裡
sudo service docker start 不報錯, 但是檢視狀态 : sudo service docker status 卻發現沒有啟動。 檢視日志:
tail -50f /var/log/docker.log
Devices cgroup isn't mounted
http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=21335514&id=5682246
運作腳本後,報:
Error initializing network controller: list bridge addresses failed: no available network
centos
https://docs.docker.com/install/linux/docker-ce/centos/
yum install docker
systemctl enable docker
systemctl start docker
vi /etc/docker/daemon.json
{
“registry-mirrors”: [“https://registry.docker-cn.com“]
}
systemctl daemon-reload
systemctl restart docker
ubuntu
http://docs.docker.com/engine/installation/linux/docker-ce/ubuntu
sudo snap install docker
其他一樣。
運作
docker run -it -v 本地或卷:鏡像内路徑或檔案 -p 伺服器端口:容器端口 --net $net --ip $ip -e $參數=值 -name $name $image
常用參數:
-i 激活模式。
-t tty
-v 本地或卷:鏡像内路徑或檔案 ,如果鏡像記憶體在檔案名, 則覆寫。
-p 端口映射,伺服器端口:容器端口
不應該設定的參數:
--restart always 總是重新開機. 除非啟動 portainer
--rm 退出容器後,自動删除。
以非ROOT使用者運作:
https://blog.csdn.net/diyiday/article/details/77619775
加速
報錯:
net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting head
使用加速器:
https://blog.csdn.net/LEoe_/article/details/78681343
在 https://www.daocloud.io/mirror 上找到鏡像位址。windows 下,添加到Docker Daemon 裡:
registry-mirrors:["http://f1361db2.m.daocloud.io"]
linux 下:
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
docker UI Portainer
https://github.com/portainer/portainer
docker volume create portainer_data
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
指定IP
docker network create --subnet=172.18.0.0/16 mynetwork
docker run -d --net mynetwork --ip 172.18.0.10 mariadb:latest
正确姿勢
- docker run --name ${name} -d -v ${local_path}😒{docker_path} ${docker_image} , 成功會傳回 container_id
- 關機 或 docker stop ${name}
- 下次直接 docker start ${name} 這時參數都還在.
- 進入 docker : docker exec -it centos7 /bin/bash
- 最重要的, 一個 image 可以啟動多份. 隻是參數不同. 達到複用的效果. 如檔案負載,Web負載. 這也是和 虛拟機的最大差別.
- 在 portainer 的 app tempalte 中,添加 image 吧.
- 從主機複制到容器sudo docker cp host_path containerID:container_path
- 從容器複制到主機sudo docker cp containerID:container_path host_path
- 使用 --restart=unless-stopped ,在重新開機docker後自動重新開機執行個體 。
一些容器啟動執行個體:
docker run --name zookeeper -d -p 2181:2181 -p 2888:2888 -p 3888:3888 -t --net mynetwork --ip 172.18.0.8 zookeeper:3.5
docker run -d --name zkui -p 8090:9090 -e ZKUI_ZK_SERVER=172.18.0.8:2181 -t --net mynetwork --ip 172.18.0.9 qnib/zkui
docker run --name db -e MYSQL_ROOT_PASSWORD=1234 -d --net mynetwork --ip 172.18.0.10 -p 13306:3306 mariadb
docker run --name postgresql -e POSTGRES_PASSWORD=1234 -d --net mynetwork --ip 172.18.0.11 -p 15432:5432 postgres
docker run --name redis -d --net mynetwork --ip 172.18.0.20 -p 6379:6379 redis --requirepass "1234"
docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=1234 --net mynetwork --ip 172.18.0.30 -p 5672:5672 -p 15672:15672 rabbitmq:3-management
docker run --name kafka -d -e HOST_IP=localhost -e KAFKA_ADVERTISED_PORT=9092 -e KAFKA_BROKER_ID=1 -e ZK=zk -e KAFKA_ZOOKEEPER_CONNECT=172.18.0.8:2181 -e KAFKA_LISTENERS=PLAINTEXT://172.18.0.36:9092 -p 9092 --link zookeeper:zk --net mynetwork --ip 172.18.0.36 wurstmeister/kafka
docker run --name elasticsearch -d --net mynetwork --ip 172.18.0.40 -p 19200:9200 -p 19300:9300 -e transport.host=0.0.0.0 -e discovery.zen.minimum_master_nodes=1 elasticsearch
docker run --name mongo -dt -p 27017:27017 --net mynetwork --ip 172.18.0.50 -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=yxh123 mongo
docker run -p 9800:9800 --net mynetwork --ip 172.18.0.51 -d --link <elk>:demo containerize/elastichd
其中 <elk> 是連結elasticsearch 的容器名稱, 開放 9200 端口。
docker run -d --name=gitea -p 10022:22 -p 10080:3000 -v /opt/gitea:/data --net mynetwork --ip 172.18.0.98 gitea/gitea:latest
docker run -d --name confluence -p 2080:8090 --user root:1234 cptactionhank/atlassian-confluence:latest
需要破解檔案:http://wiki.wuyijun.cn/download/attachments/2327034/51CTO%E4%B8%8B%E8%BD%BD-Confluence.zip
docker run -d --net mynetwork --ip 172.18.0.12 -p 8500:8500 --name consul -e CONSUL_BIND_INTERFACE=eth0 consul
docker run --net mynetwork --ip 172.18.0.96 -d -p 8080:8080 -p 50000:50000 -v jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins docker.io/jenkins/jenkins
docker run -d -p 9100:9000 --name minio1 -e "MINIO_ACCESS_KEY=lwl" -e "MINIO_SECRET_KEY=lwl--418" -v /opt/minio/data:/data -v /opt/minio/config:/root/.minio minio/minio server /data
docker run --env MODE=standalone --name nacos -d -p 8848:8848 --ip 172.18.0.16 \
-e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_MASTER_SERVICE_DB_NAME=nacos -e MYSQL_MASTER_SERVICE_DB_NAME=nacos\
-e MYSQL_MASTER_SERVICE_HOST=172.17.71.90 -e MYSQL_SLAVE_SERVICE_HOST=172.17.71.91 \
-e MYSQL_MASTER_SERVICE_USER=root -e MYSQL_MASTER_SERVICE_PASSWORD=1@#4 \
nacos/nacos-server
執行資料庫腳本: https://raw.githubusercontent.com/alibaba/nacos/master/config/src/main/resources/META-INF/nacos-db.sql
docker 資源限制
docker update -m 1880m --memory-swap -1 gitlab2
mariadb 主從 docker 配置:
- 主上執行:
- 建立檔案 /opt/mariadb/my_master.cnf
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mariadb-bin
binlog-ignore-db = information_schema
binlog-ignore-db = mysql
binlog-ignore-db = performance_schema
[galera]
bind-address=0.0.0.0
* docker volume create db_master_data
* docker run --name db_master -e MYSQL_ROOT_PASSWORD=1234 -d -v /opt/mariadb/my_master.cnf:/etc/mysql/conf.d/my_master.cnf -v db_master_data:/data --net mynetwork --ip 172.18.0.10 -p 3307:3306 mariadb
- slave 上執行:
- 建立檔案 /opt/mariadb/my_slave1.cnf 修改上面的 server-id 為 2
- docker volume create db_slave1_data
- docker run --name db_slave1 -e MYSQL_ROOT_PASSWORD=1234 -d -v /opt/mariadb/my_slave1.cnf:/etc/mysql/conf.d/my_slave1.cnf -v db_slave1_data:/data --net mynetwork --ip 172.18.0.11 -p 3308:3306 mariadb
- 配置主庫
- mysql -h172.18.0.10 -P3306 -uroot -p1234
- GRANT REPLICATION SLAVE ON . to 'repl'@'%' identified by '1234';
- flush privileges;
- show master status; //記住 File、Position的值
注: 雖然配置了端口映射,但是需要連接配接它本身的端口 3306
- 配置從庫
- mysql -h172.18.0.11 -P3306 -uroot -p1234
- change master to master_host='172.18.0.10',master_user='repl',master_password='1234',master_log_file='$master.file',master_log_pos=$master.position,master_port=3306;
- start slave;
- show slave status\G
- 安裝 haproxy
~/haproxy.cfg
ulimit-n 51200
global
maxconn 4000 #最大連接配接數的設定
daemon
defaults
mode http #預設使用協定,可以為{http|tcp|health} http:是七層協定 tcp:是四層 health:隻傳回OK
log global #全局日志記錄
option httplog #詳細記錄http日志
option dontlognull #不記錄空日志
option http-server-close #啟用http-server-close
option forwardfor except 127.0.0.0/8 #來自這些資訊的都不forwardfor
option redispatch #重新分發,ServerID對應的伺服器當機後,強制定向到其他運作正常的伺服器
retries 3 #3次連接配接失敗則認為服務不可用
timeout http-request 10s #預設http請求逾時時間
timeout queue 1m #預設隊列逾時時間
timeout connect 10s #預設連接配接逾時時間
timeout client 1m #預設用戶端逾時時間
timeout server 1m #預設伺服器逾時時間
timeout http-keep-alive 10s #預設持久連接配接逾時時間
timeout check 10s #預設檢查時間間隔
maxconn 3000 #最大連接配接數
listen mysql
bind 0.0.0.0:3306 #代理端口
mode tcp #模式 TCP
option mysql-check user haproxy #建立沒有權限的haproxy使用者,密碼為空。Haproxy使用這個賬戶對MySQL資料庫心跳檢測
balance roundrobin #排程算法
server mysql1 172.18.0.11:3306 weight 1 check inter 1s rise 2 fall 2 #健康檢查加上check
server mysql2 172.18.0.12:3306 weight 1 check inter 1s rise 2 fall 2
listen stats #監控
mode http
bind 0.0.0.0:80
stats enable
stats uri /dbs
stats realm Global\ statistics
stats auth admin:admin
* docker run -d -it --name haproxy -v ~/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro --net mynetwork --ip 172.18.0.19 -p 13306:3306 -p 3380:80 haproxy
成功.
![]() | 作者:NewSea 出處:http://newsea.cnblogs.com/ QQ,MSN:[email protected] 如無特别标記說明,均為NewSea原創,版權私有,翻載必糾。歡迎交流,轉載,但要在頁面明顯位置給出原文連接配接。謝謝。 |