MySQL(MariaDB)
# MySQL
docker run \
-d \
-e MYSQL_ROOT_PASSWORD=Passw0rd \
-e MYSQL_DATABASE=mydb \
-e MYSQL_USER=luanrz \
-e MYSQL_PASSWORD=Passw0rd \
-p 127.0.0.1:3306:3306 \
-v ~/Data/App/MySQL/data:/var/lib/mysql \
--name=mysql \
mysql
# phpMyAdmin
docker run \
-d \
-e PMA_USER=root \
-e PMA_PASSWORD=Passw0rd \
-p 127.0.0.1:8880:80 \
--link mysql:db \
--name phpmyadmin \
phpmyadmin
Redis
# Redis
docker run \
-d \
-p 127.0.0.1:6379:6379 \
--name=redis \
redis
XXL-JOB
docker run \
-d \
-e PARAMS="--spring.datasource.url=jdbc:mysql://db:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.password=Passw0rd" \
-p 127.0.0.1:8881:8080 \
-v ~/Data/App/XXL-JOB/logs:/data/applogs/xxl-job \
--name xxl-job-admin \
--link mysql:db \
xuxueli/xxl-job-admin:2.4.0
Windows
Docker Compose
创建docker-compose.yml
文件:
version: "3"
services:
windows:
image: dockurr/windows
container_name: windows
devices:
- /dev/kvm
cap_add:
- NET_ADMIN
ports:
- 127.0.0.1:8006:8006
- 127.0.0.1:3399:3389/tcp
- 127.0.0.1:3399:3389/udp
stop_grace_period: 2m
restart: on-failure
environment:
VERSION: "http://winiso/ltsc10.iso"
RAM_SIZE: "4G"
CPU_CORES: "2"
DISK_SIZE: "32G"
volumes:
- ./win:/storage
depends_on:
- winiso
winiso:
image: nginx:alpine
container_name: winiso
restart: on-failure
volumes:
- ./iso:/usr/share/nginx/html
在当前目录下创建iso
子目录,将ltsc10.iso
放入其中,随后启动容器:
docker compose up -d
在浏览器中访问http://127.0.0.1:8006
,执行windows安装流程。安装完成后开启远程桌面访问,后续可通过Remmina
等支持RDP
协议的工具连接3399
端口访问远程桌面。
Docker Run
- 准备本地iso镜像下载容器(可选)
后续创建Windows容器时,需要从远程服务器下载iso镜像,可新建本地iso镜像下载容器,以提升后续下载速度。
在当前目录下创建iso
子目录,将ltsc10.iso
放入其中,随后创建自定义网络与iso镜像下载容器:
创建自定义网络的目的是启用Docker的DNS,以便Windows容器能够通过容器名访问镜像下载容器提供的服务。
# 创建自定义网络
docker network create windows_network
# 创建镜像下载容器
docker run \
--name=winiso \
-d \
-v ./iso:/usr/share/nginx/html \
--net windows_network \
nginx:alpine
- 启动Windows容器
docker run \
--name windows \
-it \
-p 127.0.0.1:8006:8006 \
-p 127.0.0.1:3399:3389 \
--device=/dev/kvm \
--cap-add NET_ADMIN \
--stop-timeout 120 \
--net windows_network \
-e VERSION="http://winiso/ltsc10.iso" \
-e RAM_SIZE="4G" \
-e CPU_CORES="2" \
-e DISK_SIZE="32G" \
-v ./win:/storage \
dockurr/windows
--net
需要与镜像下载容器winiso
处于同一个网络(windows_network
)。-e VERSION
可指定windows镜像版本,指定为本地镜像下载容器服务路径可提升下载速度。
- 安装windows
在浏览器中访问http://127.0.0.1:8006
,执行windows安装流程。安装完成后开启远程桌面访问,后续可通过Remmina
等支持RDP
协议的工具连接3399
端口访问远程桌面。
- 移除临时容器(可选)
docker rm -f winiso
- 移除临时网络(可选)
# docker network connect bridge windows
docker network disconnect windows_network windows
docker network rm windows_network
当前Windows容器在首次启动时将NetworkMode配置为windows_network,通过上述命令移除windows_network后,重启Windows容器会提示找不到windows_network而报错。因此,需重建Windows容器:
docker rm -f windows
docker run \
--name windows \
-d \
-p 127.0.0.1:3399:3389 \
--device=/dev/kvm \
--cap-add NET_ADMIN \
--stop-timeout 120 \
-e VERSION="http://winiso/ltsc10.iso" \
-e RAM_SIZE="4G" \
-e CPU_CORES="2" \
-e DISK_SIZE="32G" \
-v ./win:/storage \
dockurr/windows
重建Windows容器时,将直接基于./win
中的内容启动容器。同时,以下几个配置已不再需要:-p 127.0.0.1:8006:8006
、--net windows_network
。
参见官方Github页面与这篇文章 。