目录

Docker笔记

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包

1
java -jar xxx.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"
    }
}