各种容器部署
所有敏感信息或环境相关信息强烈建议使用环境变量传入,如密码、端口等。
反向代理服务容器的网络模式建议使用host模式,以避免端口映射带来的麻烦。
数据库容器等公共服务应使用自定义网络,并使用容器名访问。
Caddy2
一个简单的HTTP服务器,支持自动申请证书,反向代理,静态文件服务等。
docker pull caddy
docker run -d --restart=always --network=host --name caddy -v /srv/caddy:/etc/caddy -v caddy_data:/data caddy
version: '3'
services:
caddy:
image: caddy
container_name: caddy
restart: always
network_mode: host
volumes:
- /srv/caddy:/etc/caddy
- caddy_data:/data
Jenkins
一个CI/CD工具,可用于自动化构建、测试、部署等。
docker run -d --restart=always --name jenkins -u root -p 8080:8080 -p 50000:50000 -v /srv/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts-jdk11
version: '3'
services:
jenkins:
image: jenkins/jenkins:lts-jdk11
container_name: jenkins
ports:
- 8080:8080
- 50000:50000
volumes:
- /srv/jenkins:/var/jenkins_home$ docker logs some-teamspeak
...通过docker-compose或docker stack deploy
示例:docker-compose.yml_teamspeak
version: '3.1'
services:
- /var/run/docker.sock:/var/run/docker.sock
restart: always
Portainer
一个Docker管理工具,可在网页上管理Docker容器、镜像、网络等。
需要使用edge功能时可添加8000端口。
docker pull portainer/portainer-ce
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
version: '3'
services:
portainer:
image: portainer/portainer-ce
container_name: portainer
restart: always
ports:
- 9000:9000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
升级
# 拉取最新镜像
docker pull portainer/portainer-ce:latest
# 先删除,再执行上面的安装,注意不要删除数据卷
docker stop portainer
docker rm portainer
PortainerAgent
部署此镜像,可用于在其他Portainer中管理此机器上的Docker。
docker pull portainer/agent:alpine
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:alpine
version: '3'
services:
portainer_agent:
image: portainer/agent:alpine
container_name: portainer_agent
restart: always
ports:
- 9001:9001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
rancher
一个Kubernetes管理工具,可在网页上管理Kubernetes集群。
docker run --privileged -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
version: '3'
services:
rancher:
image: rancher/rancher
container_name: rancher
restart: unless-stopped
ports:
- 80:80
- 443:443
privileged: true
vlmcsd
一个KMS激活服务器,可用于激活Windows、Office等。
git clone https://github.com/Wind4/vlmcsd-docker.git vlmcsd
cd vlmcsd
# 使用docker-compose
docker-compose up -d
# 或构建镜像
docker build -t vlmcsd .
docker run -idt --restart=always -p 1688:1688 vlmcsd
Hitokoto
一言,可用于获取一句话。
Redis
一个内存数据库,可用于缓存等。
mkdir -p /srv/redis/data
mkdir -p /srv/redis/config
docker pull redis
docker run -d --domainname -h redis --restart always -v /srv/redis/config:/usr/local/etc/redis -v /srv/redis/data:/data --name redis -p 6379:6379 redis redis-server /usr/local/etc/redis/redis.conf
version: '3'
services:
redis:
image: redis
container_name: redis
restart: always
volumes:
- /srv/redis/config:/usr/local/etc/redis
- /srv/redis/data:/data
ports:
- 6379:6379
docker pull redis:7
docker run -d --name redis --restart always -p 6379:6379 redis:7 [--requirepass <密码>]
version: '3'
services:
redis:
image: redis:7
container_name: redis
restart: always
ports:
- 6379:6379
command: --requirepass <密码>
MariaDB
一个MySQL分支,SQL数据库。
export MARIADB_ROOT_PASSWORD=YOUR_ROOT_PASSWORD
docker pull mariadb:10
mkdir -p /srv/mariadb
mkdir -p /srv/mariadb/config
mkdir -p /srv/mariadb/data
docker run --name mariadb -h mariadb --restart=always -p 3306:3306 -v /srv/mariadb/config:/etc/mysql/conf.d -v /srv/mariadb/data:/var/lib/mysql -e MARIADB_ROOT_PASSWORD=$YOUR_ROOT_PASSWORD -d mariadb:10
version: '3'
services:
mariadb:
image: mariadb:10
container_name: mariadb
restart: always
ports:
- 3306:3306
volumes:
- /srv/mariadb/config:/etc/mysql/conf.d
- /srv/mariadb/data:/var/lib/mysql
environment:
- MARIADB_ROOT_PASSWORD=YOUR_ROOT_PASSWORD
MySQL8
新版MySQL。
docker pull mysql:8
export MYSQL_ROOT_PASSWORD=123456
mkdir -p /srv/mysql
docker run -d --name mysql -v /srv/mysql:/var/lib/mysql -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD mysql:8
version: '3'
services:
mysql:
image: mysql:8
container_name: mysql
restart: always
ports:
- 3306:3306
volumes:
- /srv/mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=123456
phpMyAdmin
一个Web端的MySQL数据库管理工具。
docker pull phpmyadmin
docker run --name phpmyadmin --restart=always -d --link mariadb:db -p 80:80 phpmyadmin
version: '3'
services:
phpmyadmin:
image: phpmyadmin
container_name: phpmyadmin
restart: always
links:
- mariadb:db
ports:
- 80:80
Awtrix2 Server
一个LED点阵的控制系统。
docker run --name awtrix2-main -d -p 7000:7000 -p 7001:7001 -p 5568:5568/udp --restart always -v /srv/awtrix-main:/data -e JAVA_TOOL_OPTIONS="-Duser.language=zh -Duser.country=CN" -e TZ=Asia/Shanghai whyet/awtrix2:latest
version: '3'
services:
awtrix2:
image: whyet/awtrix2:latest
container_name: awtrix2
restart: always
ports:
- 7000:7000
- 7001:7001
- 5568:5568/udp
volumes:
- /srv/awtrix2:/data
environment:
- JAVA_TOOL_OPTIONS=-Duser.language=zh -Duser.country=CN
- TZ=Asia/Shanghai
MongoDB
一个NoSQL数据库。
# 拉取镜像
docker pull mongo
# 创建本地数据文件夹
mkdir -p /srv/mongo/db /srv/mongo/configdb
# 创建并启动容器
docker run --name mongo -v /srv/mongo/db:/data/db -v /srv/mongo/config:/data/configdb --restart always -p 27017:27017 -d mongo --auth
--auth表示连接mongodb需要授权
创建管理员账号
docker exec -it mongo mongosh admin
db.createUser({ user: 'root', pwd: '<YOUR_PASSWORD>', roles: [ { role: "r", db: "admin" } ] });
version: '3'
services:
mongo:
image: mongo
container_name: mongo
restart: always
ports:
- 27017:27017
volumes:
- /srv/mongo/db:/data/db
- /srv/mongo/config:/data/configdb
command: --auth
创建管理员账号
docker compose exec mongo mongosh admin
db.createUser({ user: 'root', pwd: '<YOUR_PASSWORD>', roles: [ { role: "r", db: "admin" } ] });
青龙+京豆
bash -c "$(curl -fsSL https://raw.githubusercontent.com/kiddin9/Oreomeow-VIP/main/Scripts/sh/ql.sh)"
然后打开青龙管理后台 ql/或后台ip:5700, 设置账号密码登录后再命令行中执行
docker exec -it qinglong bash -c "$(curl -fsSL https://raw.githubusercontent.com/kiddin9/Oreomeow-VIP/main/Scripts/sh/1custom.sh)"
Postgres
开源的,更加强大的数据库。
version: '3'
services:
db:
image: postgres:15
restart: always
ports:
- "5432:5432"
environment:
POSTGRES_USER: example
POSTGRES_PASSWORD: example
POSTGRES_DB: example
volumes:
- /srv/example/db:/var/lib/postgresql/data
NginxProxyManager
一个基于Nginx的反向代理管理工具。
docker pull jc21/nginx-proxy-manager
mkdir -p /srv/nginx_proxy_manager/data
mkdir -p /srv/nginx_proxy_manager/letsencrypt
docker run -d --name nginx-proxy-manager --restart=always --network=host -e TZ=Asia/Shanghai -v /srv/nginx_proxy_manager/data:/data -v /srv/nginx_proxy_manager/letsencrypt:/etc/letsencrypt jc21/nginx-proxy-manager
version: '3'
services:
nginx-proxy-manager:
image: jc21/nginx-proxy-manager
container_name: nginx-proxy-manager
restart: always
network_mode: host
environment:
- TZ=Asia/Shanghai
volumes:
- /srv/nginx_proxy_manager/data:/data
- /srv/nginx_proxy_manager/letsencrypt:/etc/letsencrypt
访问 http://ip:81/ 进行配置,首次登录后要求修改密码,初始用户:
Email: admin@example.com
Password: changeme
TeamSpeak
一个语音聊天软件。注意,服务端需要 3 个端口。
启动后查看日志,获取 ServerAdmin privilege key,用于首次登录。
version: '3.1'
services:
teamspeak:
image: teamspeak
restart: always
ports:
- 9987:9987/udp
- 10011:10011
- 30033:30033
environment:
TS3SERVER_DB_PLUGIN: ts3db_mariadb
TS3SERVER_DB_SQLCREATEPATH: create_mariadb
TS3SERVER_DB_HOST: db
TS3SERVER_DB_USER: root
TS3SERVER_DB_PASSWORD: example
TS3SERVER_DB_NAME: teamspeak
TS3SERVER_DB_WAITUNTILREADY: 30
TS3SERVER_LICENSE: accept
db:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: teamspeak
服务器别名注册:https://www.myteamspeak.com/userarea/server_nicknames