天天看點

Docker筆記

安裝

市場: 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 配置:

  1. 主上執行:
    • 建立檔案 /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
           
  1. 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
  2. 配置主庫
    • 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
  1. 配置從庫
    • 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
  1. 安裝 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


成功.           
Docker筆記

  作者:NewSea     出處:http://newsea.cnblogs.com/   

QQ,MSN:[email protected]

  如無特别标記說明,均為NewSea原創,版權私有,翻載必糾。歡迎交流,轉載,但要在頁面明顯位置給出原文連接配接。謝謝。