0
点赞
收藏
分享

微信扫一扫

#云原生征文# 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的入方向的访问

image.png

6. 访问云桌面
http://主机地址:6080,输入密/码admin123456就可以登录了。

image.png

image.png
打开浏览器,访问一下网页,速度真的很好。

image2.png

四、通过 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

image.png

3.查看启动的容器

docker-compose -f docker-compose-linux-desk2.yml ps

image.png

image.png

这种方法,
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

image.png
3. 查看服务容器

docker-compose -f docker-compose-linux-desk.yml ps

image.png
4. 停止服务容器

docker-compose -f docker-compose-linux-desk.yml stop linux-desk

image.png
5. 重新启动后,查看服务容器

docker-compose -f docker-compose-linux-desk.yml start
docker-compose -f docker-compose-linux-desk.yml ps

image.png

这种方法,
容器名称、端口、卷都是自动生成,配置文件内容简单,但每次停止后重新启动,端口、卷会发生变化,适合一次性使用,用完就释放。卷自动映射到宿主的位置在 /var/lib/docker/volumes

image.png
6. 移除已停止的服务容器

docker-compose -f docker-compose-linux-desk.yml rm

image.png
移除容器但是映射的卷不会自动删除。
7. 停止并移除服务容器

docker-compose -f docker-compose-linux-desk.yml down

image.png
8. 查看docker-compose其它命令

image.png

五、使用 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的入方向的访问

image.png

4. 访问代理配置界面

http://主机IP:7081/users

image.png
第一次登录需要填写个人信息以及修改密/码,完成后登出重新登录

Nginx Proxy Manager默认登陆名和密/码:
Email: admin@example.com
Password: changeme,
更改完,记住密/码哈

5. 添加代理

Hosts ----- New Proxy Host

填写自己的域名,docker0 网卡地址,代理的端口号6080,保存后,点击或输入域名就可以访问啦。如果希望配置https 也可以上传证书,进行相关的配置。
image.png
image.png
image.png

【本文正在参加云原生有奖征文活动】,活动链接:https://ost.51cto.com/posts/12598

想了解更多关于开源的内容,请访问:

51CTO 开源基础软件社区

https://ost.51cto.com/#bkwz

举报

相关推荐

0 条评论