如何使用RHEL/CentOS 7安装创建和管理LXC

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用RHEL/CentOS 7安装创建和管理LXC相关的知识,希望对你有一定的参考价值。

参考技术A CentOS7.0中一个最主要的改变,就是切换到了systemd。它用于替代红帽企业版Linux前任版本中的SysV和Upstart,对系统和服务进行管理。systemd兼容SysV和Linux标准组的启动脚本。Systemd是一个Linux操作系统下的系统和服务管理器。它被设计成向后兼容SysV启动脚本,并提供了大量的特性,如开机时平行启动系统服务,按需启动守护进程,支持系统状态快照,或者基于依赖的服务控制逻辑。先前的使用SysV初始化或Upstart的红帽企业版Linux版本中,使用位于/etc/rc.d/init.d/目录中的bash初始化脚本进行管理。而在RHEL7/CentOS7中,这些启动脚本被服务单元取代了。服务单元以.service文件扩展结束,提供了与初始化脚本同样的用途。要查看、启动、停止、重启、启用或者禁用系统服务,你要使用systemctl来代替旧的service命令。注:为了向后兼容,旧的service命令在CentOS7中仍然可用,它会重定向所有命令到新的systemctl工具。使用systemctl来启动/停止/重启服务要启动一个服务,你需要使用如下命令:#systemctlstarthttpd.service这会启动httpd服务,就我们而言,ApacheHTTP服务器。要停掉它,需要以root身份使用该命令:#systemctlstophttpd.service要重启,你可以使用restart选项,如果服务在运行中,它将重启服务;如果服务不在运行中,它将会启动。你也可以使用try-start选项,它只会在服务已经在运行中的时候重启服务。同时,reload选项你也可以有,它会重新加载配置文件。#systemctlrestarthttpd.service#systemctltry-restarthttpd.service#systemctlreloadhttpd.service我们例子中的命令看起来会像下面这样:检查服务状态要检查服务状态,你可以使用status选项,看这里:#systemctlstatushttpd.service输出结果就像这样:它会告诉你运行中的服务的方方面面。使用启用/禁用服务来控制开机启动你也可以使用enable/disable选项来控制一个服务是否开机启动,命令如下:#systemctlenablehttpd.service#systemctldisablehttpd.service

如何减小 RHEL/Centos/Fedora Docker 镜像的大小

【中文标题】如何减小 RHEL/Centos/Fedora Docker 镜像的大小【英文标题】:How to reduce the size of RHEL/Centos/Fedora Docker image 【发布时间】:2018-02-15 18:30:25 【问题描述】:

来自 Red Hat 的基本映像非常小,对于 RHEL 7.4 大约为 196M。但是,它往往会丢失我想要为其构建新图像的产品所需的许多零碎。

当我在它上面执行“yum install Xxx”时,图像大小会爆炸到 +500M-800M。

有没有办法缩小图片的大小?

【问题讨论】:

【参考方案1】:

是的,通过执行“yum clean all”可以显着减小 Docker 映像大小

初始 RHEL 图像大小 = 196M

Dockerfile - RHEL 映像(+bc) = 505M

# Build command
# docker build -t rhel7base:latest --build-arg REG_USER='<redhat_developer_user>' --build-arg REG_PSWD='<password>' --squash .

FROM registry.access.redhat.com/rhel7/rhel:latest

LABEL maintainer="tim"

ARG REG_USER=none
ARG REG_PSWD=none

RUN subscription-manager register --username $REG_USER --password $REG_PSWD --auto-attach && \
    subscription-manager repos --enable rhel-server-rhscl-7-rpms && \
    yum install -y bc

Dockerfile - RHEL Image(+bc) with "yum clean all" = 207M 节省 298M

# Build command
# docker build -t rhel7base:latest --build-arg REG_USER='<redhat_developer_user>' --build-arg REG_PSWD='<password>' --squash .

FROM registry.access.redhat.com/rhel7/rhel:latest

LABEL maintainer="tim"

ARG REG_USER=none
ARG REG_PSWD=none

RUN subscription-manager register --username $REG_USER --password $REG_PSWD --auto-attach && \
    subscription-manager repos --enable rhel-server-rhscl-7-rpms && \
    yum install -y bc && \
    yum clean all && \
    rm -rf /var/cache/yum

注意:--squash 选项在最新版本的 Docker 中作为实验标志出现。它将分层文件系统压缩成一个新层https://blog.docker.com/2017/01/whats-new-in-docker-1-13/

我在https://medium.com/@vaceletm/docker-layers-cost-b28cb13cb627找到了使用“yum clean all”的解决方案

“rm -rf /var/cache/yum”的添加来自“yum clean all”输出中的建议

【讨论】:

【参考方案2】:

除了TJA的回答,你还可以使用更小的CentOS基础镜像,比如有一个Debian light存在,叫做Bitnami

https://hub.docker.com/r/bitnami/minideb-extras/

对于 CentOS 也许你可以使用

https://hub.docker.com/r/blalor/centos/

您还可以尝试使用 2 个工具来减小图像的大小

https://github.com/mvanholsteijn/strip-docker-image

https://github.com/docker-slim/docker-slim

【讨论】:

绝对正确,甚至选择像 Alpine 这样的东西。归根结底,我怀疑 yum clean all 也适用于那些。

以上是关于如何使用RHEL/CentOS 7安装创建和管理LXC的主要内容,如果未能解决你的问题,请参考以下文章

如何在RHEL/CentOS 7以及Fedora中配置FirewallD

centos 7/rhel7: 如何重启/停止/启动网络服务

如何在CentOS/RHEL 7上借助ssm管理LVM卷

如何在CentOS 7/6.5/6.4 下安装PostgreSQL 9.3 与 phpPgAdmin

如何在 CentOS / RHEL 中启用/禁用 CPU(限制 CPU 数量)

如何在 CentOS 8/RHEL 8 上安装和使用 Cockpit