Docker网络
1
| docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
|
通过镜像启动MySQl容器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| # 启动mysql
# -d 后台运行
# -p 端口映射
# -v 卷挂载
# --name 名字
# --net 设置网络)
# -m 内存限制
# --memeory-reservation 内存的软性限制
# --memeory-swap 内存+交换分区大小总限制,设置时必须比-m大
docker run --name blog-mysql -d -p 3306:3306 -v /home/mysql/blog/conf:/etc/mysql -v/home/mysql/blog/data:/var/lib/mysql -m 600m --memory-swap 1g -e MYSQL_ROOT_PASSWORD=blogqimington1113 mysql:8.0.20
docker run --name sasd-mysql -d -p 33060:3306 -v /home/mysql/sasd/conf:/etc/mysql -v /home/mysql/sasd/data:/var/lib/mysql -m 900m --memory-swap 1g -e MYSQL_ROOT_PASSWORD=qimington_sasd mysql:8.0.20
# 到/etc/mysql/conf.d 目录执行 vim docker.cnf(可在宿主机完成)(可选择不执行)
performance_schema_max_table_instances=400
table_definition_cache=400 # 缓存
table_open_cache=256 # 打开表的缓存
performance_schema=off # 用于监控MySQL server 在一个较低级别的运行过程中的资源消耗、资源的东西
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| # 启动mysql容器 查看数据文件存放路径
docker run -d -p 4728:3306 --name farming-mysql -e MYSQL_ROOT_PASSWORD=qimington_farming mysql:8.0.20
docker exec -it farming-mysql bash
mysql -uroot -p
# Enter password:
# mysql> show variables like '%datadir%';
show variables like '%datadir%';
# 拷贝容器配置文件 mysql容器的配置文件存在 /etc/mysql下
docker cp farming-mysql:/etc/mysql /home/mysql/farming/conf
# 重新启动容器
docker stop farming-mysql
docker rm farming-mysql
docker run -d -p 4728:3306 --name farming-mysql -v /home/mysql/farming/conf/mysql:/etc/mysql -v /home/mysql/farming/data:/var/lib/mysql -m 900m --memory-swap 1g -e MYSQL_ROOT_PASSWORD=qimington_farming mysql:8.0.20
|
更新容器参数
1
| docker container update [OPTIONS] CONTAINER
|
通过镜像启动redis容器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| # 拉取镜像
docker pull redis:7.0
# 查看镜像是否已安装
docker images
# 创建数据保存文件夹与配置文件夹
mkdir /home/redis/blog/data
mkdir /home/redis/blog/conf
# 在conf中创建配置文件redif.conf,复制配置文件内容redif.conf
# 该配置已经设置 #daemonize yes,和设置requirepass 123456
cd /home/redis/blog/conf
vim redis.conf
# 运行容器
# redis-server /etc/redis/redis.conf redis将以/etc/redis/redis.conf为配置文件进行启动
# --appendonly yes 开启redis持久化
# --requirepass "123456" 设置密码(否则使用配置文件中的)
docker run -p 6379:6379 --name blog-redis -v /home/redis/blog/conf/redis.conf:/etc/redis/redis.conf -v /home/redis/blog/data:/data -m 300m --memory-swap 600m -d redis:7.0 redis-server /etc/redis/redis.conf --appendonly yes --requirepass "123456"
docker run -p 3724:6379 --name cas-sasd -v /home/redis/cas-sasd/conf/redis.conf:/etc/redis/redis.conf -v /home/redis/cas-sasd/data:/data -m 300m --memory-swap 600m -d redis:7.0 redis-server /etc/redis/redis.conf
|
通过镜像启动nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| docker pull nginx:1.23.2
docker run --name nginx -p 80:80 -d nginx:1.23.2
mkdir /home/nginx
# 把A放B下面 cp A/ B/ 得到B/A
docker cp 772c421af62f:/etc/nginx/nginx.conf /home/nginx/
docker cp 772c421af62f:/etc/nginx/conf.d /home/nginx/
docker cp 772c421af62f:/usr/share/nginx/html/ /home/nginx/
docker cp 772c421af62f:/var/log/nginx/ /home/nginx/
docker stop 772c421af62f #停止容器
docker rm 772c421af62f #移除容器
# 卷映射 一一对应 -v A/:B/ 即A和B内容保持一致,最后一个左斜线无任何意义
docker run --name nginx -p 80:80 -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/html:/usr/share/nginx/html/ -v /home/nginx/nginx/:/var/log/nginx/ -v /home/nginx/conf.d:/etc/nginx/conf.d -m 300m --memory-swap 600m --privileged=true -d nginx:1.23.2
# 重新加载配置文件
docker exec CONTAINER nginx -s reload
|
SpringBoot微服务打包镜像
本地测试运行jar包
编写Dockerfile
1
2
3
4
5
6
7
8
9
| FROM java:8
COPY *.jar /blog.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/blog.jar"]
|
上传jar包和Dockerfile文件到服务器
![image-20220519133939775]
生成镜像
1
| docker build -t blogapp:1.0 .
|
启动
1
| docker run --name blog-app -d -p 8974:8080 -v /home/idea/blog/files:/files -m 300m --memory-swap 600m blogapp:1.0
|
磁盘清理
使用过程中 /var/lib/docker
占用空间非常大,一个是由于日志问题、一个是由于没有使用的镜像、或者说一些卷没有删除。可以在启动容器时添加参数--log-opt max-size=30m --log-opt max-file=3
设置单个日志文件大小最大为30M,日志文件最多为3个。或者全局配置,只需要修改cat /etc/docker/daemon.json
,增加如下配置
1
2
3
4
5
6
7
| {
"log-driver": "json-file",
"log-opts": {
"max-size": "30m",
"max-file": "3"
}
}
|