部署带x服务的容器
- 在 Ubuntu 上安装docker:
sudo apt install docker docker.io
- 将当前用户添加到docker组中:
sudo usermod -aG docker kylin
newgrp docker
- 允许其他应用使用x服务:
xhost +x
- 编写Dockerfile,需要注意的是,不能使用apt而要使用apt-get。
FROM ubuntu:focal
LABEL maintainer Deqiang Chen <chendeqiang1024@qq.com>
RUN echo "deb http://mirrors.bfsu.edu.cn/ubuntu/ focal main restricted universe multiverse \n\
deb http://mirrors.bfsu.edu.cn/ubuntu/ focal-updates main restricted universe multiverse \n\
deb http://mirrors.bfsu.edu.cn/ubuntu/ focal-backports main restricted universe multiverse \n\
deb http://mirrors.bfsu.edu.cn/ubuntu/ focal-security main restricted universe multiverse" \
> /etc/apt/sources.list && apt-get update && apt-get install -y x11-xserver-utils x11-apps vim bash-completion && source /etc/bash_completion
- 构建image
docker build -t u20 .
如果网络错误,参考下一章节的“解决docker无法联网的问题“
临时解决方案,追加 --network=host
- 创建支持x服务的容器
docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE --name test --privileged=true u20
- 检测x可用
xclock
管理容器和镜像
- 使用容器
docker start
docker exec -it bash
- 删除所有容器:
docker rm -f $(docker ps -aq)
- 删除所有镜像:
docker rmi -f $(docker images -q)
- 清除所有镜像和容器
docker system prune -a
解决docker无法联网的问题
在Ubuntu中重建docker网络:
sudo service docker stop
sudo pkill docker
sudo iptables -t nat -F
sudo apt install net-tools bridge-utils
sudo ifconfig docker0 down
sudo brctl delbr docker0
sudo service docker start
制作kylinv10sp1镜像
os: kylinv10sp1
debootstrap安装后会在/usr/share/debootstrap/scripts
下生成本机系统的脚本,
但是我发现麒麟镜像源中的目录叫10.1
,所以这里得把v101
改成 10.1
。如果宿主机不是kylin-os,可以使用这个缓存下来的脚本10.1。
sudo apt install debootstrap docker.io
sudo cp /usr/share/debootstrap/scripts/v101 /usr/share/debootstrap/scripts/10.1
sudo debootstrap --no-check-gpg --arch=amd64 10.1 kylin-sp1 http://archive.kylinos.cn/kylin/KYLIN-ALL/
sudo tar -cf kylin-sp1.tar kylin-sp1/*
sudo docker import kylin-sp1.tar kylin/v10sp1:v1.0