Docker筆記

安裝

市場: hub.docker.comphp

參考中文站點: http://docs.docker-cn.com/node

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/mysql

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/ubuntulinux

sudo snap install docker
其餘同樣。git

運行

docker run -it -v 本地或卷:鏡像內路徑或文件 -p 服務器端口:容器端口 --net $net --ip $ip -e $參數=值 -name $name  $image

經常使用參數:

-i 激活模式。
-t tty
-v 本地或卷:鏡像內路徑或文件 ,若是鏡像內存在文件名, 則覆蓋。
-p 端口映射,服務器端口:容器端口github

不該該設置的參數:

--restart always 老是重啓. 除非啓動 portainer
--rm 退出容器後,自動刪除。redis

以非ROOT用戶運行:

https://blog.csdn.net/diyiday/article/details/77619775算法

加速

報錯:
net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headsql

使用加速器:
https://blog.csdn.net/LEoe_/article/details/78681343docker

在 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

一些容器啓動實例:

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

2. 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

3. 配置主庫

    * 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 

4. 配置從庫
    * 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

> 注: 雖然配置了端口映射,可是須要鏈接它自己的端口 3306 


5. 安裝 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

成功.

相關文章
相關標籤/搜索