docker配置

配置镜像加速

1
2
3
4
5
6
7
8
9
10
创建daemon.json文件     touch daemon.json
//直接执行
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}
EOF
//刷新配置重启
sudo systemctl daemon-reload
sudo systemctl restart 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
命令
docker images 查询镜像
docker rmi 镜像id删除镜像
docker ps 查看启动的容器
docker ps -a 查看全部
docker rm 容器id 删除
docker search redis 查看可用版本
docker images | grep seata* 模糊查询镜像
docker stop nacos //停止
docker restart nacos 重启
docker exec -it 容器id /bin/bash
docker inspect --format='{{.NetworkSettings.IPAddress}}' 8d16564ded0e 查看容器的ip
sudo docker network ls
sudo docker inspect bridge 查询docker的网络


:w - 保存文件,不退出 vim
:w file -将修改另外保存到 file 中,不退出 vim
:w! -强制保存,不退出 vim
:wq -保存文件,退出 vim
:wq! -强制保存文件,退出 vim
:q -不保存文件,退出 vim
:q! -不保存文件,强制退出 vim
:e! -放弃所有修改,从上次保存文件开始再编辑
pwd 查看位置

在使用docker容器时,有可能没有安装Vi,安装Vi:apt-get install vim,
如果提示:Unable to locate package vim,则需要敲:apt-get update
等更新完毕以后再敲命令: apt-get install vim

容器未启动 进入容器目录
docker inspect [CONTAINER ID]
MergedDir

一:docker安装jdk

1
2
3
4
5
6
1:docker pull primetoninc/jdk:1.8
2:启动容器
docker run -it --name jdk1.8 -d primetoninc/jdk:1.8
其中,--name=后的jdk1.8是为容器指定了一个别名,而最后的primetoninc/jdk:1.8那个指的是下载镜像时的名称。)该命 令的意思为:使用docker镜像primetoninc/jdk:1.8以后台模式启动一个容器,并将容器命名为jdk1.8
3:查看安装是否正确
sudo docker exec -it jdk1.8 /bin/bash

二:docker安装mysql

1
2
3
4
5
6
7
8
1:docker pull mysql:8.0.31    //docker pull mysql:latest  下载最新
2:启动容器
-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。MYSQL_ROOT_PASSWORD=root密码:设置 MySQL 服务 root 用户的密码。

docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=bohu0812 mysql:8.0.31
3:进入MySQL容器(登录)
sudo docker exec -it mysql /bin/bash
mysql -u root -p

三:redis

1
2
3
1: docker pull redis:latest  安装最新
2:docker run -itd --name redis-test -p 6379:6379 redis
3:进入redisdocker exec -it redis-test /bin/bashredis-cli

四:MongoDB

1
2
3
4
5
6
7
8
9
10
11
12
1:docker pull mongo:latest
2:启动容器
docker run -itd --name mongo -p 27017:27017 mongo --auth
-p 27017:27017映射容器服务的27017端口到宿主机的27017端口.外部可以直接通过 宿主机ip:27017访问到mongo 的服务。
3:添加用户设置密码
docker exec -it mongo mongo admin
4:# 创建一个名为 admin,密码为 bohu0812 的用户。
> db.createUser({ user:'admin',pwd:'bohu02',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
# 尝试使用上面创建的用户信息进行连接。
5:对admin进行身份认证
> db.auth('admin', 'bohu0812')
6:链接navicat 查看显示隐藏的项目

五:nacos 单机模式

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
1:docker search nacos  # nacos/nacos-server   查找镜像
2:docker pull nacos/nacos-server:v2.1.2 下载
3:创建数据库 导入nacos配置表(nacos内置数据源不需要修改)
4:创建容器并启动
docker run \
--name nacos \
-d \
-p 8848:8848 \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
nacos/nacos-server:v2.1.2
5:进入nacos容器
docker exec -it 容器id /bin/bash
6:修改nacos(nacos内置数据源不需要修改)
vi ./conf/application.properties //打开配置文件
添加以下配置
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=bohu0812
7:停止并重启nacos
docker stop nacos //停止 docker restart nacos 重启
8:docker logs nacos 查看启动日志

六:seata

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
1:docker pull seataio/seata-server:1.6.0-SNAPSHOT  下载
2:创建容器并启动
//docker run --name seata-server -p 8091:8091 -p 7091:7091 seataio/seata-server:1.6.0-SNAPSHOT
不使用自定义配置文件创建、启动
docker run --name seata-server \
-p 8091:8091 \
-e SEATA_IP=192.168.1.126 \
-e SEATA_PORT=8091 \
docker.io/seataio/seata-server:1.6.0-SNAPSHOT
修改配置启动(目录自定义) 15 以上
启动容器 进入容器 resources目录下修改 application.yml
seata:
config:
# support: nacos, consul, apollo, zk, etcd3
type: nacos
nacos:
server-addr: nacos:8848
namespace: abec0c92-a3eb-4baf-9b24-4fff0c3cf6bb
group: DEFAULT_GROUP
username: nacos
password: nacos
data-id: seataServer.properties //db配置文件
registry:
type: nacos
nacos:
application: seata-server
server-addr: nacos:8848
group: DEFAULT_GROUP
namespace: abec0c92-a3eb-4baf-9b24-4fff0c3cf6bb
cluster: default
username: nacos
password: nacos
store:
mode: db


创建 seataServer.properties nacos配置文件


store.mode=db
#-----db-----
store.db.datasource=druid
store.db.dbType=mysql
# 需要根据mysql的版本调整driverClassName
# mysql8及以上版本对应的driver:com.mysql.cj.jdbc.Driver
# mysql8以下版本的driver:com.mysql.jdbc.Driver
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://192.168.1.126:3306/seata?useUnicode=true&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
store.db.user= root
store.db.password= bohu0812
# 数据库初始连接数
store.db.minConn=1
# 数据库最大连接数
store.db.maxConn=20
# 获取连接时最大等待时间 默认5000,单位毫秒
store.db.maxWait=5000
# 全局事务表名 默认global_table
store.db.globalTable=global_table
# 分支事务表名 默认branch_table
store.db.branchTable=branch_table
# 全局锁表名 默认lock_table
store.db.lockTable=lock_table
# 查询全局事务一次的最大条数 默认100
store.db.queryLimit=100
# undo保留天数 默认7天,log_status=1(附录3)和未正常清理的undo
server.undo.logSaveDays=7
# undo清理线程间隔时间 默认86400000,单位毫秒
server.undo.logDeletePeriod=86400000
# 二阶段提交重试超时时长 单位ms,s,m,h,d,对应毫秒,秒,分,小时,天,默认毫秒。默认值-1表示无限重试
# 公式: timeout>=now-globalTransactionBeginTime,true表示超时则不再重试
# 注: 达到超时时间后将不会做任何重试,有数据不一致风险,除非业务自行可校准数据,否者慎用
server.maxCommitRetryTimeout=-1
# 二阶段回滚重试超时时长
server.maxRollbackRetryTimeout=-1
# 二阶段提交未完成状态全局事务重试提交线程间隔时间 默认1000,单位毫秒
server.recovery.committingRetryPeriod=1000
# 二阶段异步提交状态重试提交线程间隔时间 默认1000,单位毫秒
server.recovery.asynCommittingRetryPeriod=1000
# 二阶段回滚状态重试回滚线程间隔时间 默认1000,单位毫秒
server.recovery.rollbackingRetryPeriod=1000
# 超时状态检测重试线程间隔时间 默认1000,单位毫秒,检测出超时将全局事务置入回滚会话管理器
server.recovery.timeoutRetryPeriod=1000
重启

七:FastDFS

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
1:docker pull delron/fastdfs 
2:构建Tracker容器
宿主机linux: docker run -d --network=host --name tracker -v /Users/zzs/develop/temp/tracker:/var/fdfs delron/fastdfs tracker
mac/win: docker run -d --name tracker -p 22122:22122 -v /Users/zzs/develop/temp/tracker:/var/fdfs delron/fastdfs tracker
-v参数将本地的目录与容器中的/var/fdfs目录进行挂载。
3:构建Storage容器
linux:docker run -d --network=host --name storage -e TRACKER_SERVER=ip:22122 -v /Users/zzs/develop/temp/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
mac/win: docker run -d --name storage -p 8888:8888 -p 23000:23000 -e TRACKER_SERVER=192.168.1.126:22122 -v /Users/zzs/develop/temp/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
其中8888为Nginx对应的访问端口,23000是storage服务端口。
4:配置
docker exec -it storage的id bash
配置文件在/etc/fdfs目录下的storage.conf

# the port of the web server on this storage server
http.server_port=8888 docker镜像中默认监听的是8888端口 可以修改 如果修改为其他端口,对应的Nginx配置也需要修改。
Nginx 配置
/usr/local/nginx/conf/ nginx.conf
server {
listen 8888;
server_name localhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
5:测试 将一张图片放入 /Users/zzs/develop/temp/storage 构建Storage容器的位置
进入storage容器,进入/var/fdfs目录,执行如下命令:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf 图片全名带后缀
得到:group1/M00/00/00/rBEADWNoOIWAel16AAROVIeAJlo406.png
此时,文件已经上传成功,会返回在storage存储文件的路径信息

http://192.168.1.126:8888/group1/M00/00/00/rBEADWNoOIWAel16AAROVIeAJlo406.png

上次更新 2022-11-18