linux 如何进入特权模式,如何以特权模式运行Docker CentOS?
1 基础知识1.1 系统的简介CentOS Linux是社区支持的发行版CentOS Linux源于Red Hat免费提供给公众使用的Red Hat Enterprise Linux(RHEL)CentOS Linux旨在与RHEL在功能上兼容CentOS Linux主要更改软件包以删除上游供应商的品牌和插图CentOS Linux是免费的,可以免费重新分发CentOS Linux每个版本最多可维
1 基础知识
1.1 系统的简介
CentOS Linux是社区支持的发行版
CentOS Linux源于Red Hat免费提供给公众使用的Red Hat Enterprise Linux(RHEL)
CentOS Linux旨在与RHEL在功能上兼容
CentOS Linux主要更改软件包以删除上游供应商的品牌和插图
CentOS Linux是免费的,可以免费重新分发
CentOS Linux每个版本最多可维护10年(随Red Hat发布源的安全更新支持间隔时间不同而不同)
CentOS Linux大约每2年发布一次新的版本
CentOS Linux每个版本都会定期更新(大约每6个月更新一次)以支持更新的硬件
CentOS Linux由此可知是一个安全、低维护、可靠、可预测和可复制的Linux环境
1.2 Docker容器与服务的关系
Docker容器的设计里面是容器内部不运行后台服务
Docker容器本身就是宿主机上独立运行的主进程
Docker容器可以理解为运行服务的应用进程
Docker容器生命周期是围绕容器的主进程存在
Dcoker容器正确使用方法是将服务运行于容器环境的前台
1.3 Systemd的介绍
Systemd当前成为管理主流Linux服务的管理器
Systemd管理系统服务器程序时需要特权去访问Linux内核
1.4 特权模式的介绍
容器并非一个完整的操作系统
容器的本质是一个文件系统
容器默认启动的程序只以普通用户的身份和权限访问Linux内核(没有任何特权)
基于以上,容器环境使用Systemd就需要使用“privileged”参数使赋以容器特权的权限方可使用
2 最佳实践
2.1 部署Docker集群
如果你尚未部署Docker集群环境,请参阅如下章节部署,
2.2 部署前的准备
In docker01
cd /data/docker/images/
docker load -i centos_centos7.3.1611.tar
docker tag centos:centos7.3.1611 docker01.cmdschool.org:5000/centos:centos7.3.1611
docker push docker01.cmdschool.org:5000/centos:centos7.3.1611
docker image rm centos:centos7.3.1611
另外,安装包的离线下载请在能上网的docker环境的机器上使用如下命令,
docker pull centos:centos7.3.1611
docker save centos:centos7.3.1611 -o centos_centos7.3.1611.tar
2.3 运行centos
2.3.1 尝试特权模式运行容器
docker run -d --name centos73 --privileged=true docker01.cmdschool.org:5000/centos:centos7.3.1611 /usr/sbin/init
以上使用特权(privileged)模式运行容器,赋予系统启动服务的能力,避免启动服务时出现如下错误提示,
Failed to get D-Bus connection: Operation not permitted
2.3.2 登录容器
docker exec -it centos73 /bin/bash
注:以上使用命令登录容器后
2.3.3 安装常见的软件包
yum install -y net-tools iproute
2.3.4 配置SSHD服务
yum install -y openssh-server
软件包安装好,可使用如下命令启动服务并设置默认启动,
systemctl start sshd.service
systemctl enable sshd.service
启动服务后,建议使用如下命令确认服务的端口已经起来,
netstat -antp
可见如下显示,
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 183/sshd
tcp 0 0 172.17.0.2:22 172.17.0.1:54258 ESTABLISHED 362/sshd: root@pts/
tcp6 0 0 :::22 :::* LISTEN 183/sshd
另外,SSH服务需要修改root密码才允许该用户登录,
passwd
2.3.5 查看当前容器的IP
ip a
可见如下显示,
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
500: eth0@if501: mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
2.3.6 退出容器并测试登录
exit
ssh 172.17.0.2
2.4 保存容器的更改
2.4.1 查询容器的containerID
docker container ls | grep centos7.3 | cut -d" " -f1
可见如下显示,
d23cc7a96035
2.4.2 保存当前容器的状态
docker commit d23cc7a96035 docker01.cmdschool.org:5000/sshd:centos7.3.1611
然后,使用如下命令查询新的镜像,
docker images
可见如下显示,
REPOSITORY TAG IMAGE ID CREATED SIZE
docker01.cmdschool.org:5000/sshd centos7.3.1611 9c6accff4795 7 minutes ago 289MB
docker01.cmdschool.org:5000/portainer/agent linux-amd64-1.6.0-alpine 82e35dbc0c04 6 weeks ago 75.3MB
docker01.cmdschool.org:5000/portainer/portainer alpine 3b8c73d25ad3 6 weeks ago 84.4MB
registry 2.7.1 2d4f4b5309b1 2 months ago 26.2MB
docker01.cmdschool.org:5000/centos centos7.3.1611 c5d48e81b986 18 months ago 192MB
参阅文档
=====================
更多推荐
所有评论(0)