笔记dockerdocker学习记录
伴随Docker
pmm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| docker run -d --name=pmm --restart=always \ -p 2812:2812 -p 2813:80 -p 2814:443 \ --privileged=true \ percona/pmm-server:latest
docker run -d --net=pxc_network \ --name pmm-client \ -v /etc/localtime:/etc/localtime \ -e PMM_AGENT_SERVER_ADDRESS=10.252.110.188:2814 \ -e PMM_AGENT_SERVER_USERNAME=admin \ -e PMM_AGENT_SERVER_PASSWORD=admin \ -e PMM_AGENT_SERVER_INSECURE_TLS=1 \ -e PMM_AGENT_SETUP=1 \ -e PMM_AGENT_CONFIG_FILE=config/pmm-agent.yaml \ percona/pmm-client:latest
pmm-admin add mysql --host=opalpxc3 --port=3306 --username=pmm --password=Mes_opal123 --service-name=pxc3
在安装pmm-client客户端的主机上,添加监控的MySQL实例 pmm-admin add mysql --username=username --password=password --tls --tls-skip-verify --tls-ca=pathtoca.pem --tls-cert=pathtocert.pem --tls-key=pathtocertkey.pem --server-url=http://admin:admin@172.16.130.12 --query-source=perfschema name 172.16.130.53:3308
pmm-admin add proxysql --host=10.252.110.183 --port=6033 --username=mes_opal --password=Mes_opal123 --service-name=proxysql
pmm-admin add mysql --query-source=perfschema --username=pmm --password=Mes_opal123 --service-name=client_pxc1 --host=10.252.110.180 --port=3306
docker exec -it pmm-client bash
pmm-admin inventory list services --service-type=mysql
|
修改容器名
1
| docker rename pmm-server pmm-server-old
|
设置日志大小
1
| docker update --log-opt max-size=20m --log-opt max-file=30 <container-id>
|
自动重启容器
1
| docker update --restart=always 容器ID(或者容器名)
|
docker镜像命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| docker version #显示docker版本信息 docker info #显示docker的系统信息 docker 命令 --hepl #帮助命令
docker images #查询当前容器中的镜像
#搜索镜像 docker search 软件名
#下载镜像,默认下载最新版本---latest docker pull 软件名 #指定版本下载 docker pull 软件名:版本号(指定把版本号时必须保证dockhub中存在) https://hub.docker.com/
#删除镜像 docker rmi -f 软件名或者id,多个用空格隔开 #删除所有 docker rmi -f $(docker images)
|
docker容器命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| #下载一个容器 docker pull centos
#启动一个容器 docker run [参数] 容器名
--name = "" #容器名称 -d #后台运行 -it #启动并且进入容器 -p #指定端口 -p ip:主机端口:容器端口 -p 主机端口:容器端口 -p 容器端口 不指定则随机端口 --rm #用完即删,用于测试
#运行nginx,指定名称为nginx1,后台方式运行,指定主机端口3344,容器端口80 docker run -d --name nginx1 -p 3344:80 nginx
#进入正在运行的容器 docker exec -it 容器id #进入容器 docker attach 容器id #进入容器正在执行的终端
#查询运行的容器 docker ps [] -a #查询运行过的容器 -n = 1 #显示指定个数
#退出容器 exit #退出并且停止 ctrl+p+q #退出不停止
#删除容器 docker rm 容器id或名称 -f #强制删除,无论是否运行
#查看容器的占用情况 docker stats 容器id
#启动容器 docker start 容器id #停止容器 docker stop 容器id #重启容器 docker restart 容器id #强制停止 docker kill 容器id
|
查看日志
1 2 3
| docker logs [参数] 容器id -ft #显示所有日志以及时间戳 --tail 10 #显示10行
|
查看容器中的进程
从容器内拷贝到主机
1
| docker cp 容器id:文件路径 主机路径
|
测试
1 2
| #安装nginx docker pull nginx
|
可视化(portsiner)文档
1 2 3 4 5
| #官方文档 [文档](https://docs.portainer.io/start/install/agent/docker/linux)
#安装命令 docker run -d -p 9001:9001 --name portainer_agent --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes portainer/agent:latest
|
commit镜像
1 2 3
| docker commit -a cb e146099b156 tomcatcb:1.0 -a #提交作者名称 -m #提交的内容注释
|
容器数据卷
指定路径挂载
- 将容器中的数据挂载到主机中,其实就是容器的持久化和同步
1 2 3 4
| docker run -it -v 主机目录:容器目录
#将tomcat的webapps目录挂载到主机中 docker run -d -p 3344:8080 -v /root/tomcat/:/usr/local/tomcat/webapps tomcatcb:1.0
|
匿名挂载
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #-v时不指定主机目录 docker run -d -p 3344:8080 --name niming-tomcat -v /usr/local/tomcat/webapps tomcatcb:1.0
#查看镜像配置 docker inspect niming-tomcat
"Mounts": [ { "Type": "volume", "Name": "9001da5b9732a3a17890977ed04e38eedf3db29573c606f674df2673f95b6d37", "Source": #这里目录为随机目录 "/var/lib/docker/volumes/9001da5b9732a3a17890977ed04e38eedf3db29573c606f674df2673f95b6d37/_data", "Destination": "/usr/local/tomcat/webapps", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } ]
|
具名挂载
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #-v时指定一个主机名称而不指定目录 docker run -d --name jvanming-tomcat -p 3302:8080 -v jvanming-tomcat:/usr/local/tomcat/webapps tomcatcb:1.0
#查看镜像配置 docker inspect jvanming-tomcat
"Mounts": [ { "Type": "volume", "Name": "jvanming-tomcat", "Source": "/var/lib/docker/volumes/jvanming-tomcat/_data", #这里目录为我们指定的目录 "Destination": "/usr/local/tomcat/webapps", "Driver": "local", "Mode": "z", "RW": true, "Propagation": "" } ]
|
扩展
1 2 3 4 5 6
| #还可以指定权限 docker run -v jvming:/etc:[ro|rw]
ro readOnly 只读 rw readWrite 可读可写 如果为只读那么容器中的配置文件无法修改,只能主机来修改
|
安装MySQL并且将数据文件挂载到主机中
1 2 3 4 5 6 7 8 9
| # 1.下载mysql docker pull mysql:8
# 2.启动 docker run -d -p 3308:3306 -v /root/dockerData/mysql/conf:/etc/mysql/conf.d #指定挂载目录,配置文件 -v /root/dockerData/mysql/data:/var/lib/mysql #指定挂载目录,数据库文件 -e MYSQL_ROOT_PASSWORD=123456 #指定连接密码 --name mysql01 mysql:8 #指定版本
|
DockerFile
1 2 3 4 5 6 7 8 9 10
| FROM # 基础镜像 MAINTAINER # 指定镜像作者 RUN # 镜像构建是需要运行的命令 ADD # 添加内容 WORDDIR # 镜像工作目录 VOLOME # 挂载的目录 EXPOSE # 端口 ONBUILD # 继承镜像时执行该命令 COPY # 类似add。将文件拷贝到镜像中 ENV # 设置环境变量
|
配置tomcat环境的DockerFile脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| # 1. 编写dockerfile脚本 from centos:8 #初始容器centos8
maintainer chenbo #作者名称
copy readme.txt /usr/local/ #拷贝文件
add apache-tomcat-8.5.79.tar.gz /usr/local #添加依赖 add jdk-8u333-linux-x64.tar.gz /usr/local #添加依赖
workdir /usr/local #工作目录
env JAVA_HOME /usr/local/jdk1.8.0_333 #配置环境变量 env CLASSPATH $JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib
env CATALINA_HOME /usr/local/apache-tomcat-8.5.79 env CATALINA_BASH /usr/local/apache-tomcat-8.5.79
env PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_BASH/bin
expose 8080 #端口
#启动tomcat脚本 cmd /usr/local/apache-tomcat-8.5.79/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.79/logs/log.out
# 2.编译脚本文件 #-t指定镜像名称和版本 -f指定脚本文件 .指定当前目录 docker build -t mytomcat-diy:1.0 -f my-tomcat-test .
# 启动镜像 docker run -d -p 8080:8080 --name chenbotomcatdiy -v /root/dockerData/my-tomcat/jar/:/usr/local/apache-tomcat-8.5.79/webapps/test -v /root/dockerData/my-tomcat/logs:/usr/local/apache-tomcat-8.5.79/logs -it mytomcat-diy:1.0
|
提交到远程仓库
docker-compose
compose相关命令
1 2 3 4 5 6 7 8 9 10 11 12 13
| # 查看当前正在运行的项目 docker-compose ps # 创建并启动容器 docker-compose up -f #指定docker-compose文件位置,不指定默认当前位置 -p #指定项目名称,默认目录名 -d #后台运行 # 构建容器 docker-compose build # 停止 docker-compose down # 验证并查看 Compose 文件,有错误时会提示行号 docker-compose config
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| version: "3" services: nginx: image: nginx:1.21.6 ports: - "8022:80" volumes: - "/docker-project-data/nginx/nginx.conf:/etc/nginx/nginx.conf"
rabbitmq: image: rabbitmq:3.10.2-management ports: - "5672:5672" - "15672:15672" environment: - RABBITMQ_DEFAULT_USER:guest - RABBITMQ_DEFAULT_PASS:guest - loopback_users:none volumes: - "/docker-project-data/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf"
redis: image: redis:7.0.0 ports: - "6381:6379" volumes: - "/docker-project-data/redis/redis.conf:/usr/local/etc/redis/redis.conf" - "/docker-project-data/redis/data:/data" environment: - “appendonly=yes” command: --requirepass "123456"
mysql: image: mysql:8 ports: - "3307:3306" volumes: - "/docker-project-data/mysql/conf.d:/etc/mysql/conf.d" - "/docker-project-data/mysql/data:/var/lib/mysql" environment: - MYSQL_ROOT_PASSWORD:"123456"
jar: image: chendd1314/getwebdata-dockerfile:1.0 volumes: - "/docker-project-data/jar/log/:/log/" ports: - "9091:9091"
centos: image: c
|
镜像和容器的导入导出
1 2 3 4 5
| # 导出 docker save -o 指定路径 指定镜像名称
# 导入 docker load -i 镜像路径
|
==容器导入导出==
1 2 3 4 5
| #导出 docker export -o 文件全路径 镜像名称
# 导入 docker import 文件全路径
|
导出是文件后缀为tar
save保存的是镜像,export保存的是容器
load用来载入镜像包,import用来载入容器包,但两者都会恢复为镜像
load不能对载入的镜像重命名,而import可以为镜像指定新名称
load不能载入容器包,import能载入镜像包,但不能使用
1
| sudo docker run --name xxl-job-admin -d -p 8090:8090 -v /home/datadisk/xxl-job-admin/config/application.properties:/application.properties -v /home/datadisk/xxl-job-admin/log:/data/applogs xuxueli/xxl-job-admin
|