程序员的资源宝库

网站首页 > gitee 正文

Docker笔记 docker笔记推荐

sanyeah 2024-03-29 17:12:15 gitee 7 ℃ 0 评论

安装

市场: 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

docker rest api

参考: https://www.cnblogs.com/zakun/p/docker-engine-api.html

sudo deepin-editor /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H tcp://127.0.0.1:2375 -H tcp://localhost:2375   -H unix:///var/run/docker.sock -H fd:// --containerd=/run/containerd/containerd.sock

也可以添加一个具有一定安全措施的私有域名
-H tcp://my-private-docker:2375

常用参数:

-i 激活模式。
-t tty
-v 本地或卷:镜像内路径或文件 ,如果镜像内存在文件名, 则覆盖。
-p 端口映射,服务器端口:容器端口

不应该设置的参数:

--restart always 总是重启. 除非启动 portainer
--rm 退出容器后,自动删除。

以非ROOT用户运行:

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

sudo docker

1.创建docker组:sudo groupadd docker
2.将当前用户加入docker组:sudo gpasswd -a ${USER} docker
3.重启服务:sudo service docker restart
4.刷新docker成员:newgrp - docker

加速

报错:
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 $
  • 下次直接 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

注: 虽然配置了端口映射,但是需要连接它本身的端口 3306

  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


成功.

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表