#云原生征文# Docker-Compose 搭建云桌面实践 原创 精华
Docker-Compose 搭建云桌面实践
@toc
介绍
5月18号观看了高俊峰老师的直播课,https://ost.51cto.com/posts/12918
然后又去了解了一下云桌面的内容,觉得还是以挺有意思的,云桌面有很多优势,
1、防丢失、2、防泄密、3、快速发放、4、移动办公、5、资源按需调整、6、降低运维成本、7、故障快速恢复
再结合docker-compose 或者 k8s 完成快速部署,安逸…
一、部署 Docker 引擎
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker- ce/linux/centos/docker-ce.repo
yum makecache fast
yum install docker-ce -y
systemctl restart docker
systemctl enable docker
二、下载 Docker-Compose
1. 下载
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.5.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
2. 执行权限
chmod +x /usr/local/bin/docker-compose
3. 查看版本
docker-compose --version
三、通过 Docker-Compose 创建启动云桌面
1. 拉取镜像
docker pull swr.cn-north-1.myhuaweicloud.com/iivey/linux-desk:v1.0
2. 创建操作目录
mkdir /root/cloud-desk
3. 编写docker-compose-linux-desk.yml 文件
cd /root/cloud-desk
通过vi命令编辑 docker-compose-linux-desk.yml 文件,粘贴一下内容。
version: '3.5'
services:
linux-desk:
container_name: linux-desk
image: 'swr.cn-north-1.myhuaweicloud.com/iivey/linux-desk:v1.0'
shm_size: 2gb
ports:
- 5900:5900
- 6080:6080
environment:
- VNC_PASSWD=admin123456
- GEOMETRY=1280x720
- DEPTH=24
volumes:
- './data/Downloads:/root/Downloads'
- './data/Documents:/root/Documents'
- './data/Pictures:/root/Pictures'
- './data/Videos:/root/Videos'
- './data/Music:/root/Music'
- './data/Desktop:/root/Desktop'
restart: unless-stopped
4. 通过 Docker-Compose启动云桌面容器
docker-compose -f docker-compose-linux-desk.yml up -d
5. 如果是云服务器的话,需要再安全组中增加对6080的入方向的访问
6. 访问云桌面
http://主机地址:6080,输入密/码admin123456就可以登录了。
打开浏览器,访问一下网页,速度真的很好。
四、通过 Docker-Compose 批量发放云桌面(人手一个哈)
方法一:
复制一份docker-compose-linux-desk.yml,命名docker-compose-linux-desk2.yml
1.增加一个 linux-desk-service2,
修改2个服务的名称、 container_name、ports、volumes 为不同
version: '3.5'
services:
linux-desk-service1:
container_name: linux-desk-1
image: 'swr.cn-north-1.myhuaweicloud.com/iivey/linux-desk:v1.0'
shm_size: 2gb
ports:
- 5900:5900
- 6080:6080
environment:
- VNC_PASSWD=admin123456
- GEOMETRY=1280x720
- DEPTH=24
volumes:
- './data/Downloads:/root/Downloads'
- './data/Documents:/root/Documents'
- './data/Pictures:/root/Pictures'
- './data/Videos:/root/Videos'
- './data/Music:/root/Music'
- './data/Desktop:/root/Desktop'
restart: unless-stopped
linux-desk-service2:
container_name: linux-desk-2
image: 'swr.cn-north-1.myhuaweicloud.com/iivey/linux-desk:v1.0'
shm_size: 2gb
ports:
- 5901:5900
- 6081:6080
environment:
- VNC_PASSWD=admin123456
- GEOMETRY=1280x720
- DEPTH=24
volumes:
- './data2/Downloads:/root/Downloads'
- './data2/Documents:/root/Documents'
- './data2/Pictures:/root/Pictures'
- './data2/Videos:/root/Videos'
- './data2/Music:/root/Music'
- './data2/Desktop:/root/Desktop'
restart: unless-stopped
2. 通过docker-compose启动服务容器
docker-compose -f docker-compose-linux-desk2.yml up -d
3.查看启动的容器
docker-compose -f docker-compose-linux-desk2.yml ps
这种方法,
docker-compose配置文件存在较多重复内容,但是 可以保证 容器名称、端口、目录volumes 不变,适合容器固定长期使用。
方法二:
1. 修改docker-compose-linux-desk.yml 文件,去掉容器名称、对主机 端口 和 volumes 的映射
version: '3.5'
services:
linux-desk:
image: 'swr.cn-north-1.myhuaweicloud.com/iivey/linux-desk:v1.0'
shm_size: 1gb
ports:
- 5900
- 6080
environment:
- VNC_PASSWD=admin123456
- GEOMETRY=1280x720
- DEPTH=24
volumes:
- '/root/Downloads'
- '/root/Documents'
- '/root/Pictures'
- '/root/Videos'
- '/root/Music'
- '/root/Desktop'
restart: unless-stopped
2. 通过 scale 参数 扩展service,一次性创建并启动 2个云桌面服务容器,数量可以指定
docker-compose -f docker-compose-linux-desk.yml up --scale linux-desk=2 -d
3. 查看服务容器
docker-compose -f docker-compose-linux-desk.yml ps
4. 停止服务容器
docker-compose -f docker-compose-linux-desk.yml stop linux-desk
5. 重新启动后,查看服务容器
docker-compose -f docker-compose-linux-desk.yml start
docker-compose -f docker-compose-linux-desk.yml ps
这种方法,
容器名称、端口、卷都是自动生成,配置文件内容简单,但每次停止后重新启动,端口、卷会发生变化,适合一次性使用,用完就释放。卷自动映射到宿主的位置在 /var/lib/docker/volumes
6. 移除已停止的服务容器
docker-compose -f docker-compose-linux-desk.yml rm
移除容器但是映射的卷不会自动删除。
7. 停止并移除服务容器
docker-compose -f docker-compose-linux-desk.yml down
8. 查看docker-compose其它命令
五、使用 Nginx Proxy Manager 实现反向代理(本步骤需要域名和证书,做代理主要是安全方面的考虑)
1. 编写docker-compose-nginx.yml 文件
cd /root/cloud-desk
通过vi命令编辑 docker-compose-linux-desk.yml 文件,粘贴以下内容
version: "3"
services:
app:
image: 'swr.cn-north-1.myhuaweicloud.com/iivey/nginx-proxy-manager:v1.0'
restart: unless-stopped
ports:
- '7080:80'
- '443:443'
- '7081:81'
environment:
DB_MYSQL_HOST: "db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm"
DB_MYSQL_PASSWORD: "npm"
DB_MYSQL_NAME: "npm"
volumes:
- ./data/nginx:/data
- ./nginx/letsencrypt:/etc/letsencrypt
depends_on:
- db
db:
image: 'swr.cn-north-1.myhuaweicloud.com/iivey/mariadb-aria:v1.0'
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npm'
volumes:
- ./data/mysql:/var/lib/mysql
2. 通过docker-compose启动代理容器
docker-compose -f docker-compose-nginx.yml up -d
3. 如果是云服务器的话,需要再安全组中增加对7081的入方向的访问
4. 访问代理配置界面
第一次登录需要填写个人信息以及修改密/码,完成后登出重新登录
Nginx Proxy Manager默认登陆名和密/码:
Email: admin@example.com
Password: changeme,
更改完,记住密/码哈
5. 添加代理
Hosts ----- New Proxy Host
填写自己的域名,docker0 网卡地址,代理的端口号6080,保存后,点击或输入域名就可以访问啦。如果希望配置https 也可以上传证书,进行相关的配置。
【本文正在参加云原生有奖征文活动】,活动链接:https://ost.51cto.com/posts/12598
楼主这动手能力厉害了
纸上谈来终觉浅