centos安装docker

0.安装Docker

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。

Docker CE 分为 stable testnightly 三个更新频道。

官方网站上有各种环境下的 安装指南,这里主要介绍 Docker CE 在 CentOS上的安装。

1.CentOS安装Docker

Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。

1.1.卸载(可选)

如果之前安装过旧版本的Docker,可以使用下面命令卸载:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

1.2.安装docker

首先需要大家虚拟机联网,安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

然后更新本地镜像源:

# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

然后输入命令:

yum install -y docker-ce

docker-ce为社区免费版本。稍等片刻,docker即可安装成功。

1.3.启动docker

Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!

启动docker前,一定要关闭防火墙后!!

启动docker前,一定要关闭防火墙后!!

启动docker前,一定要关闭防火墙后!!

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

通过命令启动docker:

systemctl start docker  # 启动docker服务

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

然后输入命令,可以查看docker版本:

docker -v

1.4.配置镜像加速

docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

2.CentOS7安装DockerCompose

2.1.下载

Linux下需要通过命令下载:

# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

如果下载速度较慢,或者下载失败,可以使用课前资料提供的docker-compose文件:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZMs9sa6n-1691918241094)(assets/image-20210417133020614.png)]

上传到/usr/local/bin/目录也可以。

2.2.修改文件权限

修改文件权限:

# 修改权限
chmod +x /usr/local/bin/docker-compose

2.3.Base自动补全命令:

# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果这里出现错误,需要修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

3. 允许远程连接

3.1 修改配置文件

找到 Service节点,修改ExecStart属性,增加 -H tcp://0.0.0.0:2375

vim /usr/lib/systemd/system/docker.service 

在这里插入图片描述

3.2 重新加载配置

systemctl daemon-reload 
systemctl restart docker 
尝试访问

刷新配置后,可以通过IP:端口号访问,如:127.0.0.1:2375。

但是前提是你防火墙开放了这个端口,不然是访问不了的。

我这里使用的是云服务器,就不开放端口了,没有密码暴露端口很危险。

端口放行

此段是对上文开放端口的补充。
虚拟机Linux可以使用如下命令开放端口。

firewall-cmd --zone=public --add-port=2375/tcp --permanent
firewall-cmd --reload
云服务器,如:阿里云、腾讯云,请前往安全组放行端口。

3.3 配置安全(密钥)访问

这是一次在阿里云上未配置密钥访问,被攻击的场景。生产环境一定要设置密钥访问,不然就GG!!!血淋淋的教训。
在这里插入图片描述
官方文档已经提供了基于CA证书的加密方法:Docker Doc。

3.3.1 一键创建证书脚本

我们必须设置服务器的ip地址,其它的选填或者默认即可。

vim /root/docker/autogen.sh
#!/bin/bash
# -------------------------------------------------------------
# 自动创建 Docker TLS 证书
# -------------------------------------------------------------

# config
# --[BEGIN]------------------------------
# 代码,可以随便写
CODE="WRETCHANT"
# 服务器的外网IP
IP="47.99.138.xxx"
# CA证书的密码
PASSWORD="CAPWDXXX"
# 国家
COUNTRY="CN"
# 地区
STATE="guangdong"
# 城市
CITY="guangzhou"
# 组织
ORGANIZATION="WRETCHANT.EDU"
ORGANIZATIONAL_UNIT="Dev"
COMMON_NAME="$IP"
# 邮件地址
EMAIL="xxx@gmail.com"

# --[END]--

# 创建存放脚本的文件夹
mkdir -p /etc/docker/cert.init/
cd /etc/docker/cert.init/

# Generate CA key
openssl genrsa -aes256 -passout "pass:$PASSWORD" -out "ca-key.pem" 4096
# Generate CA
openssl req -new -x509 -days 365 -key "ca-key.pem" -sha256 -out "ca.pem"   -passin "pass:$PASSWORD" -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORGANIZATION/OU=$ORGANIZATIONAL_UNIT/CN=$COMMON_NAME/emailAddress=$EMAIL"
# Generate Server key
openssl genrsa -out "server-key.pem" 4096

# Generate Server Certs.
openssl req -subj "/CN=$COMMON_NAME" -sha256 -new -key "server-key.pem" -out server.csr

echo "subjectAltName = IP:$IP,IP:127.0.0.1" >> extfile.cnf
echo "extendedKeyUsage = serverAuth" >> extfile.cnf

openssl x509 -req -days 365 -sha256 -in server.csr -passin "pass:$PASSWORD" -CA "ca.pem" -CAkey "ca-key.pem" -CAcreateserial -out "server-cert.pem" -extfile extfile.cnf

# Generate Client Certs.
rm -f extfile.cnf

openssl genrsa -out "key.pem" 4096
openssl req -subj '/CN=client' -new -key "key.pem" -out client.csr
echo extendedKeyUsage = clientAuth >> extfile.cnf
openssl x509 -req -days 365 -sha256 -in client.csr -passin "pass:$PASSWORD" -CA "ca.pem" -CAkey "ca-key.pem" -CAcreateserial -out "cert.pem" -extfile extfile.cnf

rm -vf client.csr server.csr

chmod -v 0400 "ca-key.pem" "key.pem" "server-key.pem"
chmod -v 0444 "ca.pem" "server-cert.pem" "cert.pem"

# 打包客户端证书成tar.gz包
mkdir -p "tls-client-certs"
cp -f "ca.pem" "cert.pem" "key.pem" "tls-client-certs/"
cd "tls-client-certs"
tar zcf "tls-client-certs.tar.gz" *
mv "tls-client-certs.tar.gz" ../
cd ..
rm -rf "tls-client-certs"

# 拷贝服务端证书,保存在docker目录下
mkdir -p /etc/docker
cp "ca.pem" "server-cert.pem" "server-key.pem" /etc/docker
执行权限
chmod +x /root/docker/autogen.sh
生成证书
 bash /root/docker/autogen.sh

在这里插入图片描述

3.3.2 Docker指定证书文件

老样子:

vim /usr/lib/systemd/system/docker.service

找到ExecStart = 开头的一行代码,将其替换为如下内容:

ExecStart=/usr/bin/dockerd \
--tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem \
-H fd:// -H tcp://0.0.0.0:2375 
刷新Docker
systemctl daemon-reload && systemctl restart docker
测试连接方法

服务器本机测试:

curl https://47.99.138.xxx:2375/info --cert /etc/docker/cert.init/cert.pem --key /etc/docker/cert.init/key.pem --cacert /etc/docker/cert.init/ca.pem

在这里插入图片描述
2375是你开放的端口,灵活修改!

3.4 Idea远程连接Docker

3.4.1 下载客户端的证书

scp -r root@47.99.138.251:/etc/docker/cert.init/tls-client-certs.tar.gz ./client_ca/tls-client-certs.tar.gz

我们把压缩包解压到任意文件夹,即可。
在这里插入图片描述
指定远程docker服务器的ip和端口,客户端证书所在的文件夹地址。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值