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

参阅文档

=====================

Logo

更多推荐