1.1 操作系统的基本配置

#### 系统版本以及内核的版本
[root@vm7-121 ~]# cat /etc/redhat-release;uname -r;uname -m
CentOS Linux release 7.9.2009 (Core)
3.10.0-1160.el7.x86_64
x86_64

#### sshd服务的端口
[root@vm7-121 ~]# ss -lntup|grep sshd
tcp    LISTEN     0      128       *:22        *:*      users:(("sshd",pid=954,fd=3))
tcp    LISTEN     0      128    [::]:22        [::]:*    users:(("sshd",pid=954,fd=4))


#### 关闭SELINUX
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
setenforce 0


#### 关闭 firewalld 服务,不用它来管理 iptables 防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl mask firewalld.service 
mv /usr/lib/systemd/system/firewalld.service /usr/lib/systemd/system/firewalld.service.bak


#### 安装 ipables-services 防火墙,用它来管理iptables防火墙
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow
yum install iptables-services -y
systemctl start iptables
systemctl enable iptables

iptables -t filter -D INPUT -j REJECT --reject-with icmp-host-prohibited     # 删除filter表中INPUT链的第5条规则
iptables -t filter -D FORWARD -j REJECT --reject-with icmp-host-prohibited   # 删除filter表中FORWARD链里唯一的一条规则

iptables-save >/etc/sysconfig/iptables                                       # 保存配置
systemctl restart iptables                                                   # 重启防火墙


#### 是可以访问互联网的哈
ping -c 2 www.baidu.com|head -2


#### 更改base源和epel源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install -y epel-release


#### 安装常用工具
yum install -y  \
 tree telnet lrzsz wget ntpdate vim  nc namp dos2unix  tcpdump  expect elinks unzip \
 lsof net-tools iproute  bridge-utils \
 bind-utils nscd \
 gcc gcc-c++ make cmake libaio zlib-devel pcre-devel  \
 psmisclsof sysstat yum-utils 


#### 开启Linux内核转发(当容器的网络类型为bridge时,需要用内核转发)
chattr -i /etc/sysctl.conf
echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
sysctl -p

1.2 从哪里可下载rpm包

阿里云:https://mirrors.aliyun.com/docker-ce/linux/centos/7.9/x86_64/stable/Packages/

1

官方:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

2

1.3 需要下载哪些包呢

需要下载如下的基础包,这些包下载好以后,你用 rpm -ivh ./* 来进行安装时还无法安装成功。还需要一些依赖。

## docker-ce服务端
wget https://mirrors.aliyun.com/docker-ce/linux/centos/7.9/x86_64/stable/Packages/docker-ce-19.03.11-3.el7.x86_64.rpm
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.2-3.el7.x86_64.rpm

## docker-ce客户端
wget https://mirrors.aliyun.com/docker-ce/linux/centos/7.9/x86_64/stable/Packages/docker-ce-cli-19.03.11-3.el7.x86_64.rpm

当这些安装包安装下载好以后,用rpm -ivh ./* 进行安装时不成功,提示需要一些依赖包。下所示

[root@vm7-121 tools]# ll 
总用量 86424
-rw-r--r-- 1 root root 23156212 728 2020 containerd.io-1.2.2-3.el7.x86_64.rpm
-rw-r--r-- 1 root root 25278520 728 2020 docker-ce-19.03.11-3.el7.x86_64.rpm
-rw-r--r-- 1 root root 40054796 728 2020 docker-ce-cli-19.03.11-3.el7.x86_64.rpm


[root@vm7-121 tools]# rpm -ivh ./*
警告:./containerd.io-1.2.2-3.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID 621e9f35: NOKEY
错误:依赖检测失败:
	container-selinux >= 2:2.74 被 docker-ce-3:19.03.11-3.el7.x86_64 需要
	libcgroup 被 docker-ce-3:19.03.11-3.el7.x86_64 需要
	libseccomp >= 2.3 被 docker-ce-3:19.03.11-3.el7.x86_64 需要
	libseccomp.so.2()(64bit) 被 docker-ce-3:19.03.11-3.el7.x86_64 需要

## 需要解决libcgroup、libseccomp、libseccomp.so.2依赖,可用:yum install -y  libcgroup-devel  libseccomp-devel 
## 但container-selinux我们在1.2章节中所指的网址中找不到相应的版本

所以我们用rpm包安装时可以这样做:

### 只下载docker-ce服务端和客户端
wget https://mirrors.aliyun.com/docker-ce/linux/centos/7.9/x86_64/stable/Packages/docker-ce-19.03.11-3.el7.x86_64.rpm
wget https://mirrors.aliyun.com/docker-ce/linux/centos/7.9/x86_64/stable/Packages/docker-ce-cli-19.03.11-3.el7.x86_64.rpm

### 再安装时用 yum install localhost *.rpm 来进行安装,会自动解决依赖
A:好处:我不用在1.2章节所指定的网站去找containerd.io-1.2.2-3.el7.x86_64.rpm包了
B:会解决依赖:container-selinux、libcgroup、libseccomp、libseccomp.so.2
C:当然我们操作系统的base源为阿里源、docker-ce的源为阿里源

1.4 安装docker-ce引擎

### 更改操作系统的base源和docker-ce的源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

### 下载rpm包并进行安装
mkdir -p /root/tools
cd /root/tools
wget https://mirrors.aliyun.com/docker-ce/linux/centos/7.9/x86_64/stable/Packages/docker-ce-19.03.11-3.el7.x86_64.rpm
wget https://mirrors.aliyun.com/docker-ce/linux/centos/7.9/x86_64/stable/Packages/docker-ce-cli-19.03.11-3.el7.x86_64.rpm
ll 
chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow
yum install -y localhost *.rpm

#### 查看docker-ce是否安装成功
which docker dockerd

1.5 配置docker-ce引擎

这个配置不适合于生产(生产上要考虑的就比较多了,因为不单单是只使用Docker引擎),在Linux下其实不配置daemon.json也是可以启动docker-ce引擎的哈。因为dockerd命令在去启动时默认会到/etc/docker/目录下去找daemon.json文件,如果没有,就以dockerd命令相关参数的默认值为准。这里只配置了一个拉取镜像的加速器和关闭Docker引擎时不关闭里面的容器。

#### 创建/etc/docker目录
mkdir /etc/docker
ls -ld /etc/docker

#### 创建/etc/docker/daemon.json文件并追加内容[这些配置只是入门的哈]
cat >>/etc/docker/daemon.json<<EOF
{
  "registry-mirrors": ["https://m2xxornh.mirror.aliyuncs.com"],
  "live-restore": true
} 
EOF

#### 配置参数说明
"registry-mirrors": ["https://m2xxornh.mirror.aliyuncs.com"]
    # 镜像加速器,这是我自己在阿里云上搞的一个,用于快速访问docker的官方仓库
    # 配置以后,当你从docker的官方仓库上进行拉取镜像时比较快,因为该网站是在国外;
"live-restore": true
    # 表示在docker引擎关闭时,不影响运行着的容器,默认为false

1.6 启动Docker-ce引擎

#### 启动docker引擎,并查看其状态
[root@vm7-121 ~]# systemctl start docker.service              # 启动docker引擎
[root@vm7-121 ~]#
[root@vm7-121 ~]# systemctl status docker.service|head -3     # 查看docker引擎的运行状态
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since 四 2020-11-12 03:45:38 CST; 3h 29min ago

[root@vm7-121 ~]#
[root@vm7-121 ~]# systemctl status containerd.service|head -3   # containerd服务是docker.service拉起来的
● containerd.service - containerd container runtime
   Loaded: loaded (/usr/lib/systemd/system/containerd.service; disabled; vendor preset: disabled)
   Active: active (running) since 六 2021-11-27 17:36:25 CST; 33s ago


[root@vm7-121 ~]# systemctl status docker.socket
● docker.socket - Docker Socket for the API
   Loaded: loaded (/usr/lib/systemd/system/docker.socket; disabled; vendor preset: disabled)
   Active: active (running) since 六 2021-11-27 18:51:39 CST; 2min 34s ago
   Listen: /var/run/docker.sock (Stream)

1127 18:51:39 vm7-121.host.com systemd[1]: Starting Docker Socket for the API.
1127 18:51:39 vm7-121.host.com systemd[1]: Listening on Docker Socket for the API.


#### 查看docker引擎启动后运行的进程
[root@vm7-121 ~]# ps -ef|grep dockerd|grep -v grep             # 这是docker-daemon进程
root      1915     1  0 05:45 ?  00:00:01 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
[root@vm7-200 ~]#
[root@vm7-200 ~]# ps -ef|grep "containerd"|grep -v grep        # 这是containerd进程
root      1904     1  1 05:45 ?  00:01:38 /usr/bin/containerd
root      1915     1  0 05:45 ?  00:00:01 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

#### 加入开机自启动
systemctl enable docker.service

#### 将其加入/etc/rc.local里面
echo -e '\n# Boot start docker-ce engine\nsystemctl start docker.service\n' >>/etc/rc.local
tail -2 /etc/rc.local

#### 给/etc/rc.d/rc.local加可执行权限
chmod 744 /etc/rc.d/rc.local

1.7 验证Docker-ce引擎

docker version 和 docker info

[root@vm7-121 ~]# docker version
Client: Docker Engine - Community      # 客户端
 Version:           19.03.11
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        42e35e61f3
 Built:             Mon Jun  1 09:13:48 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community      # 服务端
 Engine:
  Version:          19.03.11
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.10
  Git commit:       42e35e61f3
  Built:            Mon Jun  1 09:12:26 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683


## 客户端和服务端的版本都是 19.03.11,这是因为我们是下载服务端和客户端的rpm包时,它们的版本是一样的。
## 如果你只下载了服务端(19.03.11),没有下载客户端(docker-ce-cli),再用yum install localhost *.rpm安装后,它们的版本是不一样的
##  但是不影响使用。

查看有哪些镜像,当然是没有的了

[root@vm7-121 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐