服务环境快速搭建
初始化docker环境
创建自定义网络,后续容器连接到这个网络
1
| docker network create dev-network
|
解包镜像
1
| docker load -i /opt/docker_images/mysql-8.0.28.tar
|
redis
配置文件修改
启动容器
1 2 3 4 5 6 7 8 9
| sudo docker run -d \ --name redis_6_2_14 \ --net dev-network \ -v /opt/docker_data/redis/6.2.14/data:/data \ -v /opt/docker_data/redis/6.2.14/redis.conf:/usr/local/etc/redis/redis.conf \ -p 6379:6379 \ --restart always \ redis:6.2.14 \ redis-server /usr/local/etc/redis/redis.conf
|
mysql
运行 mysql 容器
某些 Bash 配置中,!
字符被解释为历史展开符号。
使用单引号并在命令前禁用历史展开功能:
1 2 3 4 5 6 7
| sudo docker run -d \ --name mysql_8_0_28 \ -e MYSQL_ROOT_PASSWORD='root_password' \ -v /opt/application/mysql/data_mysql_8_0_28:/var/lib/mysql \ -p 3306:3306 \ --restart always \ mysql:8.0.28
|
查看当前的 wait_timeout
和 interactive_timeout
设置:
1 2
| SHOW VARIABLES LIKE 'wait_timeout'; SHOW VARIABLES LIKE 'interactive_timeout';
|
修改 wait_timeout
和 interactive_timeout
设置:
1 2
| SET GLOBAL wait_timeout = 300; -- 设置为5分钟 SET GLOBAL interactive_timeout = 300; -- 设置为5分钟
|
查看最大连接数:
1
| SHOW VARIABLES LIKE 'max_connections';
|
已有数据卷
1 2 3 4 5 6 7 8
| sudo docker run -d \ --name mysql_8_0_28 \ --net dev-network \ -v /opt/docker_data/mysql/8.0.28/data:/var/lib/mysql \ -v /opt/docker_data/mysql/8.0.28/config/my.cnf:/etc/mysql/my.cnf \ -p 3306:3306 \ --restart always \ mysql:8.0.28
|
打包镜像
1
| docker save -o /opt/docker_images/mysql-8.0.28.tar mysql:8.0.28
|
解包镜像
1
| docker load -i /opt/docker_images/mysql-8.0.28.tar
|
alist
1 2 3 4 5 6 7 8 9 10
| docker run -d --restart=always \ --net dev-network \ -v /opt/docker_data/alist:/opt/alist/data \ -p 5244:5244 \ -e PUID=0 \ -e PGID=0 \ -e UMASK=022 \ -e "TZ=Europe/Warsaw" \ --name="alist" \ xhofe/alist:latest
|
1 2 3 4 5 6 7 8 9 10
| mkdir -p /opt/docker_data/alist && docker run -d --restart=always \ --net dev-network \ -v /opt/docker_data/alist:/opt/alist/data \ -p 5244:5244 \ -e PUID=0 \ -e PGID=0 \ -e UMASK=022 \ -e "TZ=Europe/Warsaw" \ --name="alist" \ xhofe/alist:latest
|
docker 安装时挂载本地存储只能挂载容器内部存储,无法挂载宿主机的,只能通过映射。
或者,直接在本机安装
1 2 3 4 5 6 7
|
curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s install /opt/application
curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s update /opt/application
curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s uninstall /opt/application
|
napcatQQ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| docker run -d \ -p 3000:3000 \ -p 3001:3001 \ -p 6099:6099 \ --restart=always \ -e HTTP_ENABLE=true \ -e HTTP_POST_ENABLE=true \ -e HTTP_URLS='["http://ip:5140/onebot"]' \ -e ACCOUNT=qq账号 \ -e WS_ENABLE=true \ -e WSR_ENABLE=true \ -e WS_URLS='["ws://ip:5140/onebot"]' \ -e DEBIAN_FRONTEND=noninteractive \ -e TZ=Asia/Shanghai \ -v /opt/docker_data/napcat/QQ:/root/.config/QQ \ -v /opt/docker_data/napcat/config:/usr/src/app/napcat/config \ mlikiowa/napcat-docker:latest bash entrypoint.sh
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| docker run -d \ -e ACCOUNT=qq账号 \ -e WS_ENABLE=true \ -e WSR_ENABLE=true \ -e WS_URLS='["ws://ip:5140/onebot"]' \ -e HTTP_ENABLE=true \ -e HTTP_POST_ENABLE=true \ -e HTTP_URLS='["http://ip:5140/onebot"]' \ -p 3000:3000 \ -p 3001:3001 \ -p 6099:6099 \ --name napcat \ --restart=always \ -v /opt/docker_data/napcat/QQ:/root/.config/QQ \ -v /opt/docker_data/napcat/config:/usr/src/app/napcat/config \ mlikiowa/napcat-docker:latest
|
登录
Vaultwarden 密码管理
1
| docker run -d --name vaultwarden -v /opt/docker_data/vaultwarden/:/data/ --restart always -p 50000:80 vaultwarden/server:latest
|
1 2 3 4 5 6 7 8
| docker run -d --name vaultwarden \ -e SIGNUPS_ALLOWED=false \ -e INVITATIONS_ALLOWED=false \ -e ADMIN_TOKEN=some_random_token_as_per_above_explanation \ -e LOG_FILE=/data/vaultwarden.log \ -v /vw-data/:/data/ \ -p 80:80 \ vaultwarden/server:latest
|
nacos
1 2 3 4 5 6 7
| docker run --name nacos_2_2_3 \ --net dev-network \ -e MODE=standalone \ -v /opt/docker_data/nacos/2.2.3:/home/nacos \ -p 8848:8848 \ -p 9848:9848 \ -d nacos/nacos-server:v2.2.3
|
ElasticSearch
1
| docker run -d --name elasticsearch_8_12_1 --net dev-network -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -v /opt/docker_data/elasticsearch/8.12.1:/usr/share/elasticsearch elasticsearch:8.12.1
|
1 2 3 4 5 6 7
| docker run -d --name elasticsearch_8_12_1 \ --net dev-network \ -p 9200:9200 \ -p 9300:9300 \ -e "discovery.type=single-node" \ -v /opt/docker_data/elasticsearch/8.12.1:/usr/share/elasticsearch \ elasticsearch:8.12.1
|
ncmctl
登录
1 2 3 4 5
| docker run --rm -it \ -v /opt/docker_data/ncmctl:/root \ -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro \ -e TZ=Asia/Shanghai \ chaunsin/ncmctl:latest /app/ncmctl login qrcode
|
先检查时区,错误时执行
1
| ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
删除原容器
1 2
| docker stop ncmctl docker rm ncmctl
|
启动
1 2 3 4 5
| docker run -it -d --name ncmctl \ -v /opt/docker_data/ncmctl:/root \ -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro \ -e TZ=Asia/Shanghai \ chaunsin/ncmctl:latest /app/ncmctl task --sign.cron "5 0 * * *" --partner.cron "5 0 * * *"
|
将多个镜像源添加到 Docker 配置
要将多个镜像源添加到 Docker 配置中,可以在 daemon.json
文件中配置多个镜像源。
编辑 Docker 配置文件: 创建或编辑 /etc/docker/daemon.json
文件:
1
| sudo vi /etc/docker/daemon.json
|
配置 Docker 使用多个镜像源: 在 daemon.json
文件中添加或修改以下内容:
1 2 3 4 5
| { "registry-mirrors": [ "https://hub.atomgit.com/" ] }
|
重新启动 Docker 服务 : 保存文件后,重新启动 Docker 服务以应用更改:
1 2
| sudo systemctl daemon-reload sudo systemctl restart docker
|
验证配置: 运行以下命令来验证新的镜像源是否生效:
在输出信息中查找 Registry Mirrors
部分,确保显示 https://hub.atomgit.com/
和 https://0vsv80z0.mirror.aliyuncs.com
。
完成这些步骤后,Docker 将使用多个镜像源。然后可以再次尝试构建镜像:
1
| docker build -t qmsgredis -f qmsg-redis-Dockerfile .
|
这样配置后,Docker 将从多个镜像源拉取镜像,加快下载速度并提高可靠性。