一、麒麟容器镜像下载链接
(1)kylin-V10-SP1-0711-x86_64 docker镜像下载链接:
链接:https://pan.baidu.com/s/10WyBYRoOykqgnagjnoxdXw?pwd=t4h5
提取码:t4h5
二、容器基础使用
#导入镜像
docker load < kylin-10-sp1-x86_64-b04.07.11.tar.xz
#创建容器
docker run -itd --name mykylin kylin-10-x86_64:v10-b04.07.11 /bin/bash #mykylin为容器名
#进入容器
docker exec -it mykylin /bin/bash
三、容器系统字符编码问题
1、问题描述
自带系统编码字符集为POSXI,改成utf-8也没有用,因为系统没有自带zh_CN.UTF-8包,强行改会导致系统中文乱码, 如果不改会导致安装一些需要zh_CN.UTF-8的应用时显示安装失败或乱码,采用安装*zh_CN*和langpacks语言包也没有用:
2、解决方式
第一步:找一个同版本的有zh_CN.UTF-8包的操作系统系统,将正常系统的/usr/share/locale/zh_CN和/usr/lib/locale/zh_CN.utf8目录拷贝到麒麟容器系统对应目录下,如:
docker cp /usr/lib/locale/zh_CN.utf8 mykylin:/usr/lib/locale #容器如果没有改目录则手动创建
docker cp /usr/share/locale/zh_CN mykylin:/usr/share/locale/zh_CN
第二步:将系统字符集编码改为zh_CN.utf-8
vim /etc/profile #文末添加如下内容
#加入内容
export LANG=zh_CN.UTF-8
第三步:加载profile文件,并加入开机启动,不然重启失效
source /etc/profile #生效配置
vim /root/.bashrc #加入重启自动生效,文末加入如下内容
#加入内容
source /etc/profile
第四步:查看容器系统编码是否更改
locale -a | grep -i zh_CN
locale
重启容器依然生效。
四、容器环境使用systemctl管理服务报错
1、问题描述
使用systemctl管理任务服务都报错,提示:尚未使用systemd作为初始化系统(PID 1)引导系统。 无法操作。 无法连接到总线:主机已关闭,如下图:
2、原因分析
Docker 容器在默认情况下是按“非特权”运行的,在“非特权”下不允许容器访问任何设备,容器对主机的访问与在主机上容器外部运行的进程不同。只有在以“特权”运行时,才允许容器访问任何设备,并可以在 AppArmor 或 SELinux 中进行一些配置,从而允许容器对主机的访问几乎与在主机上容器外部运行的进程相同。
3、解决方式
使用特权模式和/usr/sbin/init参数重新创建容器:
docker run -itd --privileged=true --name mykylin kylin-10-x86_64:v10-b04.07.11 /usr/sbin/init
4、结果验证
docker exec -it mykylin /bin/bash
systemctl #运行systemctl查看服务,看是否报错
问题解决。