前言
- 團(tuán)隊(duì)多人協(xié)同經(jīng)常出現(xiàn)開(kāi)發(fā)環(huán)境不一致問(wèn)題
- ubuntu默認(rèn)的桌面系統(tǒng)動(dòng)不動(dòng)就掛掉
- 一臺(tái)高配服務(wù)器如何讓多人同時(shí)獨(dú)立使用一套完整統(tǒng)一的帶界面的開(kāi)發(fā)環(huán)境
- 出差筆記本性能差,能否直接連服務(wù)器開(kāi)發(fā)
帶著這幾個(gè)問(wèn)題慕的,最先想到的就是docker環(huán)境了,但每次都是想搞改鲫,后面就爛尾了,因?yàn)関nc搭建遠(yuǎn)程桌面比較簡(jiǎn)單林束,但vnc需要消耗較大網(wǎng)絡(luò)帶寬像棘,出差在機(jī)場(chǎng)這些網(wǎng)絡(luò)較差的地方還是有點(diǎn)不爽,遠(yuǎn)程桌面最優(yōu)解還是微軟的rdp诊县,在linux下的插件就是xrdp
由于我們開(kāi)發(fā)環(huán)境是ubuntu18.04的讲弄,對(duì)xrdp支持不太友好措左,安裝總是會(huì)出各種藍(lán)屏依痊、黑屏、中文輸入法無(wú)法輸入等等問(wèn)題怎披,就一直拖著沒(méi)完整的去做一個(gè)鏡像
這次抽了點(diǎn)時(shí)間胸嘁,把坑都躺了一遍
源碼:https://github.com/vell001/docker-xrdp
制作好的鏡像:
- 不帶ros環(huán)境,只有xfce4+xrdp: https://hub.docker.com/repository/docker/vell001/ubt18.04_xrdp
- 帶ros環(huán)境: https://hub.docker.com/repository/docker/vell001/ubt18.04_ros_xrdp
- 只有ros環(huán)境凉逛,不帶xrdp: https://hub.docker.com/repository/docker/vell001/ubt18.04_ros
使用方式
- clone源碼
git clone https://github.com/vell001/docker-xrdp
- 編譯【非必要性宏,如果不需要修改Dockerfile,直接跳到下一步即可】
可以直接使用我寫好的build腳本./build
編譯状飞,默認(rèn)編譯帶ros環(huán)境的
也可以docker命令行編譯
docker build -t vell001/ubt18.04_xrdp -f ./Dockerfile .
- 運(yùn)行
可以直接使用我寫好的run腳本./run
運(yùn)行毫胜,默認(rèn)運(yùn)行帶ros環(huán)境的鏡像,xrdp端口為23389
诬辈,掛載本地/data到/data上
當(dāng)容器已經(jīng)存在的話酵使,直接使用舊容器運(yùn)行
可以根據(jù)我的腳本自行按需修改
進(jìn)入容器后,還可以運(yùn)行/bin/start_xrdp
來(lái)重啟xrdp
#!/usr/bin/env bash
docker_image="vell001/ubt18.04_ros_xrdp:latest"
docker_name="ubt18.04_ros_xrdp"
num=$(docker ps -a | grep -w ${docker_name} | wc -l)
if [ $num -ne 0 ]; then
container_id=$(docker ps -a | grep -w ${docker_name} | grep -v grep | awk '{print $1}')
echo "use old container: "$container_id
docker container start $container_id
docker exec -it $container_id /bin/start_xrdp /bin/bash
else
docker run -it \
--privileged=true \
--hostname="$(hostname)" \
--publish="23389:3389/tcp" \
--name=${docker_name} \
-v /data:/data \
--shm-size="2g" \
${docker_image} /bin/bash
fi
啟動(dòng)后就可以在windows上連接rdp了焙糟,默認(rèn)端口23389口渔,用戶名:ubuntu,密碼:ubuntu
- 刪除容器
參考./rm
腳本
#!/usr/bin/env bash
docker stop ubt18.04_ros_xrdp
docker rm ubt18.04_ros_xrdp
- 保存新鏡像
參考./commit
腳本
#!/usr/bin/env bash
docker stop ubt18.04_ros_xrdp
docker commit ubt18.04_ros_xrdp vell001/ubt18.04_ros_xrdp
- 提交鏡像到hub.docker.com【注意穿撮,修改為你自己的docker賬號(hào)哈】
docker push vell001/ubt18.04_ros_xrdp:latest
感謝
xfce4+xrdp部分參考: https://github.com/scottyhardy/docker-remote-desktop