CentOS Stream 9部署docker,并开启API

news2024/11/15 11:11:02

1、安装docker

(1)安装Docker的依赖项和存储库

sudo dnf install -y dnf-plugins-core

sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

(2)安装Docker

sudo dnf install -y docker-ce docker-ce-cli containerd.io

(3)启动Docker服务

sudo systemctl start docker

(4)验证Docker服务的状态

sudo systemctl status docker

(5)开机启动docker

sudo systemctl enable docker

sudo systemctl is-enabled docker

2、开启Docker Remote API: unix(unix本地使用)

配置Docker Remote API:默认情况下,Docker Remote API是禁用的。为了公开API,需要修改Docker的配置文件。

(1)使用以下命令打开配置文件:

sudo vi /usr/lib/systemd/system/docker.service

(2)在配置文件中找到ExecStart一行,并在该行的末尾添加-H unix:///var/run/docker.sock。修改后的行应如下所示:

(3)重新加载Docker配置:

sudo systemctl daemon-reload

(4)重启Docker服务

sudo systemctl restart docker

3、开启Docker Remote API: tcp(tcp远程使用,tcp不安全不推荐)

(1)使用以下命令打开配置文件:

sudo vi /usr/lib/systemd/system/docker.service

(2)在配置文件中找到ExecStart一行,并在该行的末尾添加-H tcp://0.0.0.0:2375,表示监听所有IP地址的2375端口。修改后的行应如下所示:

(3)重新加载Docker配置:

sudo systemctl daemon-reload

(4)重启Docker服务

sudo systemctl restart docker

(5)验证Docker Remote API

curl http://localhost:2375/version

3、Docker Remote API:tcp&tls(远程使用,使用证书认证,远程推荐配置)

(1)使用以下命令打开配置文件:

sudo vi /usr/lib/systemd/system/docker.service

(2)在配置文件中找到ExecStart一行,并在该行的末尾添加-H -H tcp://0.0.0.0:2376,表示监听所有IP地址的2376端口。修改后的行应如下所示:

(3)使用脚本一键生成证书

新建脚本,证书生成路径/etc/docker/

vi tls.sh

脚本内容:

#创建 Docker TLS 证书   

#!/bin/bash

SERVER="0.0.0.0"  #需要修改为本机ip

PASSWORD="xxxx"

COUNTRY="CN"

STATE="guizhou"

CITY="guiyang"

ORGANIZATION="guanshanghu"

ORGANIZATIONAL_UNIT="ningan"

EMAIL="xxxx@163.com"

#临时文件夹

TEMP_DIR='/etc/docker/ca'

mkdir -p ${TEMP_DIR}

cd ${TEMP_DIR}

#生成`ca-key.pem` 文件 设置密码

openssl genrsa -aes256 -passout pass:${PASSWORD} -out ca-key.pem 4096

echo "生成ca私钥完成"

#生成 `ca.pem` 文件,设置国家、省市、组织名、邮箱

openssl req -new -x509  -passin "pass:${PASSWORD}"  -days 3650 -key ca-key.pem -sha256 -out ca.pem -subj "/C=${COUNTRY}/ST=${STATE}/L=${CITY}/O=${ORGANIZATION}/OU=${ORGANIZATIONAL_UNIT}/emailAddress=${EMAIL}"

echo "填写配置信息完成"

#生成 `server-key.pem` 文件

openssl genrsa -out server-key.pem 4096

#生成 `server.csr` 文件

openssl req -subj "/CN=${SERVER}" -sha256 -new -key server-key.pem -out server.csr

#生成配置文件 `extfile.cnf`

echo subjectAltName = IP:${SERVER},IP:0.0.0.0 > extfile.cnf

echo extendedKeyUsage = serverAuth >> extfile.cnf

#生成服务器证书,需要输入之前输入的密码

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

echo "生成自签证书完成"

#添加配置,使密钥适合客户端身份验证

echo extendedKeyUsage = clientAuth >> extfile.cnf

#生成 `key.pem` 文件

openssl genrsa -out key.pem 4096

#创建`client.csr`文件

openssl req -subj '/CN=client' -new -key key.pem -out client.csr

#生成证书

openssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:${PASSWORD}" \-CAcreateserial -out cert.pem -extfile extfile.cnf

echo "生成client自签证书完成"

rm -v -f 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

echo "复制证书到指定目录"

cp server-*.pem  /etc/docker/

cp ca.pem /etc/docker/

执行tls.sh:

 sh tls.sh

(4)添加证书相关配置

sudo vi /etc/docker/daemon.json

添加上下面这部分

{

  "tls": true,

  "tlscacert": "/etc/docker/ca.pem",

  "tlscert": "/etc/docker/server-cert.pem",

  "tlskey": "/etc/docker/server-key.pem",

  "tlsverify": true

}

(5)重载配置、重启服务

systemctl daemon-reload

systemctl restart docker

(6)验证

docker --tlsverify --tlscacert=/etc/docker/ca/ca.pem --tlscert=/etc/docker/ca/cert.pem --tlskey=/etc/docker/ca/key.pem -H=0.0.0.0:2376 version

4、安装二进制docker-compose(可选)

(1)下载docker-compose二进制文件:在Docker官方GitHub仓库的releases页面上,你可以找到docker-compose的可执行文件。使用以下命令下载最新版本的docker-compose:

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

(2)授予执行权限:下载完成后,为docker-compose二进制文件授予执行权限:

sudo chmod +x /usr/local/bin/docker-compose

(3)验证安装:运行以下命令验证docker-compose是否成功安装:

docker-compose --version

 

如果安装成功,你应该能够看到docker-compose的版本信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2156712.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

0基础学习PyTorch——最小Demo

大纲 环境准备安装依赖 训练和推理训练生成数据加载数据TensorDatasetDataLoader 定义神经网络定义损失函数和优化器训练模型 推理 参考代码 PyTorch以其简洁直观的API、动态计算图和强大的社区支持,在学术界和工业界都享有极高的声誉,成为许多深度学习爱…

yum 集中式安装 LNMP

目录 安装 nginx 安装 mysql 安装 php 配置lnmp 配置 nginx 支持 PHP 解析 安装 nginx 修改yum源 将原本的yum源备份 vim /etc/yum.repos.d/nginx.repo [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/7/$basearch/ gpgcheck0 enable…

黎巴嫩BP机爆炸事件启示录:我国应加快供应链安全立法

据报道,当地时间9月17日下午,黎巴嫩首都贝鲁特以及黎巴嫩东南部和东北部多地都发生了BP机爆炸事件。当时的统计数据显示,爆炸造成9人死亡,约2800人受伤。9月18日,死亡人数上升到11人,受伤人数超过4000。 目…

14年数据结构

第一题 解析: 求时间复杂度就是看程序执行了多少次。 假设最外层执行了k次,我们看终止条件是kn,则: 有, 内层是一个j1到jn的循环,显然执行了n次。 总的时间复杂度是内层外层 答案选C。 第二题 解析: 一步一…

车辆行人转向意图状态检测系统源码分享

车辆行人转向意图状态检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of …

【Python】Maya:为人类打造的 Python 日期时间库

不知道少了什么,总感觉没有以前快乐。 在编程中处理日期和时间总是一个挑战,尤其是当涉及到时间和时区的转换时。Maya 是一个由 Kenneth Reitz 开发的 Python 库,旨在简化日期时间的处理,使其对人类开发者更加友好。本文将介绍 M…

如何在jupyter notebook中使用虚拟环境

一:在cmd中打开已经创建好的虚拟环境 二:安装ipykernel conda install ipykernel 三:安装牛逼conda conda install -c conda-forge nb_conda 四:运行jupyter notebook,选择虚拟环境

linux强制关闭再启动后zookeeper无法启动

1、若开启了zkserver就先关闭zkserver 查看zkserver是否启动 sh zkServer.sh status关闭zkServer sh zkServer.sh stop2、更改conf/zoo.cfg 将这里的启动端口改为2183 3、启动zkServer sh zkServer.sh start4、以2183端口启动zkCli zkCli.sh -server 127.0.0.1:2183这样启…

传知代码-基于多尺度动态卷积的图像分类

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 概述 在计算机视觉领域,图像分类是非常重要的任务之一。近年来,深度学习的兴起极大提升了图像分类的精度和效率。本文将介绍一种基于动态卷积网络(Dynamic Convolutional Netw…

机器人机构、制造

简单整理一下,在学习了一些运动学和动力学之类的东西,简单的整合了一些常用的机械结构和图片。 1.电机: 市面上的电机有:直流电机,交流电机,舵机,步进电机,电缸,无刷电…

【无人机设计与控制】 基于matlab的蚁群算法优化无人机uav巡检

摘要 本文使用蚁群算法(ACO)优化无人机(UAV)巡检路径。无人机巡检任务要求高效覆盖特定区域,以最小化能源消耗和时间。本研究提出的算法通过仿生蚁群算法优化巡检路径,在全局搜索和局部搜索中平衡探索与开…

【软件工程】成本效益分析

一、成本分析目的 二、成本估算方法 三、成本效益分析方法 课堂小结 例题 选择题

深度之眼(三十)——pytorch(一)--深入浅出pytorch(附安装流程)

文章目录 一、前言一、pytoch二、六个部分三、如何学习四、学习路径(重要)五、安装pytorch5.1 坑15.2 坑2 一、前言 我看了下目录 第一章和第二章都是本科学的数字图像处理。 也就是这一专栏:数字图像实验。 所以就不准备学习前两章了,直接…

一文详解大语言模型Transformer结构

目录 1. 什么是Transformer 2. Transformer结构 2.1 总体结构 2.2 Encoder层结构 2.3 Decoder层结构 2.4 动态流程图 3. Transformer为什么需要进行Multi-head Attention 4. Transformer相比于RNN/LSTM,有什么优势?为什么? 5. 为什么说Transf…

MySQL --数据类型

文章目录 1.数据类型分类2.数值类型2.1 tinyint类型2.2 bit类型2.3小数类型2.31float2.32decimal 3.字符串类型3.1 char3.2varchar3.3 char和varchar比较 4.日期和时间类型5.enum和set 1.数据类型分类 2.数值类型 2.1 tinyint类型 数值越界测试: create table tt1…

C++ Qt 之 QPushButton 好看的样式效果实践

文章目录 1.前序2.效果演示3.代码如下 1.前序 启发于 edge 更新 web 页面,觉得人家做的体验挺好 决定在Qt实现,方便以后使用 2.效果演示 特性介绍: 默认蓝色鼠标移入 渐变色,鼠标变为小手鼠标移出 恢复蓝色,鼠标恢…

计算机毕业设计之:基于uni-app的校园活动信息共享系统设计与实现(三端开发,安卓前端+网站前端+网站后端)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

006——队列

队列: 一种受限的线性表(线性逻辑结构),只允许在一段进行添加操作,在另一端只允许进行删除操作,中间位置不可操作,入队的一端被称为队尾,出队的一端被称为队头,在而我们…

作业报告┭┮﹏┭┮(Android反调试)

一:Android反调试 主要是用来防止IDA进行附加的,主要的方法思路就是,判断自身是否有父进程,判断是否端口被监听,然后通过调用so文件中的线程进行监视,这个线程开启一般JNI_OnLoad中进行开启的。但是这个是…

Java语言程序设计基础篇_编程练习题**18.31 (替换单词)

目录 题目:**18.31 (替换单词) 习题思路 代码示例 运行结果 替换前 替换后 题目:**18.31 (替换单词) 编写一个程序,递归地用一个新单词替换某个目录下的所有文件中出现的某个单词。从命令行如下传递参数: java Exercise18…