docker基础:搭建centos7(详见B站泷羽sec)

docker的简单学习:

sudo apt-get update                //这个命令让系统检查有没有新软件

sudo apt-get install docker.io        //安装 Docker

sudo docker version                        //查看是否安装成功,显示docker的版本信息

启用Docker

启动成功后,没有错误信息输出。

可以使用 sudo docker ps 命令来验证 Docker 是否正常启动。

sudo service docker start

sudo docker ps

将docker改为国内的源

vim /etc/docker/daemon.json

然后将以下源复制进去即可

{

    "registry-mirrors": [

            "https://5tqw56kt.mirror.aliyuncs.com",

            "https://docker.hpcloud.cloud",

                   "https://docker.m.daocloud.io",

            "https://docker.1panel.live",

            "USTC Open Source Software Mirror",    

            "https://docker.chenby.cn",

            "https://docker.ckyl.me",

                   "Mirror site",

            "https://hub.rat.dev"

]

}

保存并退出

让docker守护进程重新加载配置文件

sudo systemctl daemon-reload

重启docker服务

sudo systemctl restart docker

拉取centos7官方docker的镜像:

sudo docker pull centos:7

 

 

运行一个基于CentOS 7镜像的容器:

sudo docker run -it --name my_centos7 centos:7 /bin/bash

sudo docker run -d --name my_centos7 centos:7 /bin/bash

两命令都会创建, exit 退出后仍然存在,可使用 docker ps -a 进行查看

在这个命令中:

-it 选项允许你交互式地运行容器,会占用终端。OR或者 -d 选项(Detached,分离

模式),容器就会在后台启动并运行,不会占用当前终端

--name my_centos7 给容器命名为my_centos7。

执行上述命令后,你会进入到一个新的CentOS 7容器中,可以在这个环境中执行

CentOS 7系统的命令。

centos:7 指定使用的镜像。

/bin/bash 启动容器后执行的命令,这里启动了bash让你能与容器交互。

 

创建apache容器后台运行

docker container run -d --rm -p 8080:80 httpd

 

当没有下载镜像直接启动时,会先下载对应的镜像

命令解释:

docker container run:这是启动一个新容器的命令。

-d:表示以守护进程(detached)模式运行容器,即容器在后台运行,不会占用当前终端。

--rm:当容器停止运行时,自动删除容器。

-p 8080:80:将主机的 8080 端口映射到容器内的 80 端口。这样,外部可以通过访问主机的 8080 端口来访问容器内运行的80端口服务。

 

安装成功:

挂载宿主机目录

docker container run -d --rm -p 8080:80 -v

/home/user/webroot/:/usr/local/apache2/htdocs/ httpd

-d 参数

功能 :表示以 “分离(detached)” 模式运行容器。

含义和作用 :当容器以这种模式启动后,它会在后台运行,不会占用当前的

命令行终端。这使得你可以在启动容器后,继续在终端中执行其他任务,比

如启动其他容器、检查容器状态或者运行其他系统命令等。例如,你可以在

启动这个 httpd 容器后,马上使用 docker ps 命令查看容器是否已经成功

启动并在后台运行。

--rm 参数

功能 :设置容器在退出时自动删除。

含义和作用 :一旦容器内的任务完成或者因为某种原因(如发生错误、手动

停止等)停止运行,Docker 会自动删除这个容器。这有助于保持 Docker 环境

的整洁,避免大量无用的容器占用磁盘空间。特别是在临时测试或者短期运

行容器的场景下非常有用,比如你只是想快速测试一下 httpd 服务器的配

置,使用完后容器自动删除,不需要手动清理。

-p 8080:80 参数

功能 :进行端口映射。

含义和作用 :左边的 8080 是宿主机(运行 Docker 的物理机或虚拟机)上

的端口,右边的 80 是容器内 httpd 服务器默认监听的端口。通过这种映

射,外部客户端(如浏览器)访问宿主机的 8080 端口时,请求会被转发到

容器内 httpd 服务器监听的 80 端口。这就使得你可以通过宿主机的 8080

端口来访问容器内 httpd 服务器提供的网页服务。例如,在浏览器中输入宿

主机的 IP 地址加上 8080 端口(如 http://[宿主机IP]:8080 ),就可以访

问容器内 httpd 服务器上的网页。

-v /home/user/webroot/:/usr/local/apache2/htdocs/ 参数

功能 :进行目录挂载。

含义和作用 :左边的 /home/user/webroot/ 是宿主机上的一个目录,右边

的 /usr/local/apache2/htdocs/ 是容器内 httpd 服务器存放网页文档的

默认目录。通过这种挂载,将宿主机上的目录挂载到容器内相应的目录。这

样做有很多好处,一是方便在宿主机上直接对要提供给 httpd 服务器的网页

文档进行编辑、更新等操作。例如,你在宿主机的 /home/user/webroot/

目录下新建一个 index.html 文件,容器内的 httpd 服务器就能直接使用

这个文件来提供网页服务。二是实现了数据的持久化和共享,即使容器重新

启动或者被删除后重新创建,只要宿主机上挂载的目录中的数据没有丢失,

容器内的 httpd 服务器就可以继续使用这些数据来提供网页服务。

httpd 部分

功能 :指定要运行的容器所基于的镜像名称。

含义和作用 : httpd 是一个常用的用于搭建 Apache HTTP 服务器的镜像。

通过运行基于这个镜像的容器,容器内部会启动 httpd 服务器,从而能够对

外提供网页服务。当容器启动后, httpd 服务器会根据容器内的配置和挂载

的网页文档目录来提供相应的网页内容

侦听宿主机80端口

docker container run -d --rm --network host -v

/home/user/webroot/:/usr/local/apache2/htdocs/ httpd

--network host 参数

功能:

将容器的网络模式设置为 “host” 模式。

含义和作用:

在这种模式下,容器会直接使用宿主机的网络栈。容器内的网络接口和端

口将直接与宿主机相同,不再进行端口映射操作。例如,容器内 httpd

服务器监听的 80 端口,将直接在宿主机的 80 端口上进行监听。这对于

一些需要直接使用宿主机网络资源或者需要避免网络地址转换(NAT)带

来的复杂性的应用场景很有用。不过,这种模式也有一定的风险,因为容

器内的服务将直接暴露在宿主机网络上,可能会增加安全风险。

 

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

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

相关文章

SwiftUI开发教程系列 - 第十四章:项目实战,创建一个完整的 SwiftUI 应用

在这一章,我们将创建一个简单的任务管理应用,名为 MyTasks,用户可以添加、删除和编辑任务,查看完成状态,并实现数据的本地持久化。应用的核心功能包括: 查看任务列表,支持删除和编辑。添加新任务,支持设置任务标题和完成状态。管理任务状态,可以将任务标记为“完成”或…

RNN(循环神经网络)详解

1️⃣ RNN介绍 前馈神经网络(CNN,全连接网络)的流程是前向传播、反向传播和参数更新,存在以下不足: 无法处理时序数据:时序数据长度一般不固定,而前馈神经网络要求输入和输出的维度是固定的&a…

解剖C++模板(2) —— 模板匹配规则及特化

众所周知,模板声明部分的尖括号中的内容是声明模板形参,而调用模板时的尖括号是给模板传参。然而这样理解仅仅停留于现象,只是将模板形参传参和函数传参的过程划等号了。C 的函数重载匹配并非真的进行匹配,因为函数名修饰规则导致…

题目讲解15 合并两个排序的链表

原题链接: 合并两个排序的链表_牛客题霸_牛客网 思路分析: 第一步:写一个链表尾插数据的方法。 typedef struct ListNode ListNode;//申请结点 ListNode* BuyNode(int x) {ListNode* node (ListNode*)malloc(sizeof(ListNode));node->…

高性能Web网关:OpenResty 基础讲解

一:概述 OpenResty是由国人章亦春开发的一个基于Nginx的可伸缩的Web平台。 openresty 是一个基于 nginx 与 lua 的高性能 web 平台,其内部集成了大量精良的 lua 库、第三方模块以及大数的依赖项。用于方便搭建能够处理超高并发、扩展性极高的动态 web 应…

OceanBase JDBC (Java数据库连接)的概念、分类与兼容性

本章将介绍 OceanBase JDBC的 概念与分类,已帮助使用 JDBC 的用户及技术人员更好的 了解JDBC,以及 OceanBase JDBC在与 MySQL 及 Oracle 兼容性方面的相关能力。 一、JDBC 基础 1.1 JDBC 的概念 JDBC 一般指 Java 数据库连接。Java 数据库连接&#xf…

关于Django 模型字段 `choices`自定义数据类型的枚举——补充

文章目录 1. 处理 datetime 类型的 choices2. 处理 time 类型的 choices3. 处理 Decimal 类型的 choices4. 处理 UUID 类型的 choices5. 处理 float 类型的 choices 在 Choices 类的基础上扩展,可以将 choices 与特定数据类型(如 date 或 datetime&a…

小程序中引入下载到本地的iconfont字体图标加载不出来问题解决

我这个是uniapp项目,字体图标都是一样的,在vue项目中web端、uniapp运行到h5都没问题,但是运行到小程序加载不出来,报错如下: 不让用本地路径,所以我们要转为base64编码,这里给大家提供一个工具,它可以把本地字体文件转为base64:transfonter 进入官网后,第一步: …

如何在 Ubuntu 24.04 上安装和配置 Fail2ban ?

确保你的 Ubuntu 24.04 服务器的安全是至关重要的,特别是如果它暴露在互联网上。一个常见的威胁是未经授权的访问尝试,特别是通过 SSH。Fail2ban 是一个强大的工具,可以通过自动阻止可疑活动来帮助保护您的服务器。 在本指南中,我…

大模型论文精华—20241111

使用大型语言模型进行神经病理诊断的初步探索 研究问题 本研究探讨了大型语言模型(LLMs)在辅助医生进行神经病理学诊断中的潜在应用。具体来说,研究人员通过设计特定的问题和病例背景,询问多个流行的LLMs,并根据这些…

量化交易系统开发-实时行情自动化交易-3.4.2.2.Okex交易数据

19年创业做过一年的量化交易但没有成功,作为交易系统的开发人员积累了一些经验,最近想重新研究交易系统,一边整理一边写出来一些思考供大家参考,也希望跟做量化的朋友有更多的交流和合作。 接下来聊聊基于Okex交易所API获取交易数…

多商户中英双语电商系统设计与开发 PHP+mysql

随着全球电商市场的扩展,多商户平台成为了越来越多商家参与全球贸易的重要方式。为了适应不同语言用户的需求,尤其是中英双语用户的需求,设计一个支持中英双语的电商系统显得尤为重要。本文将重点探讨如何设计一个多商户中英双语电商系统&…

关于 3D Engine Design for Virtual Globes(三维数字地球引擎设计)

《3D Engine Design for Virtual Globes》是一本专注于三维虚拟地球引擎设计的专业书籍。这本书由Patrick Cozzi和Kevin Ring编写,覆盖了设计适用于虚拟球面环境的三维引擎的各个方面。虚拟地球引擎作为地理信息系统(GIS)中的一个核心组件&am…

ubuntu 20.04添加ros官方的软件源(解决下载ros软件包出现的E 无法定位软件包的问题)

ubuntu 20.04添加ros官方的软件源(解决下载ros软件包出现的E: 无法定位软件包的问题) 在 Ubuntu 20.04 上添加 ROS 官方软件源可以解决使用其他镜像源时遇到的 “E: 无法定位软件包” 的问题,主要是因为这些镜像源可能没有同步所有官方提供的…

单元测试、集成测试、系统测试有什么区别

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 单元测试、集成测试、系统测试有什么区别 1、粒度不同 集成测试bai粒度居中,单元测试粒度最小,系统du测试粒度最大。 2、测试方式不同…

CE2.【C++ Cont】练习题组2

1.数字反转 https://www.luogu.com.cn/problem/P5705 题目描述 输入一个不小于 100100 且小于 10001000,同时包括小数点后一位的一个浮点数,例如 123.4123.4 ,要求把这个数字翻转过来,变成 4.3214.321 并输出。 输入格式 一行一个…

Golang | Leetcode Golang题解之第557题反转字符串中的单词III

题目&#xff1a; 题解&#xff1a; func reverseWords(s string) string {length : len(s)ret : []byte{}for i : 0; i < length; {start : ifor i < length && s[i] ! {i}for p : start; p < i; p {ret append(ret, s[start i - 1 - p])}for i < le…

适合二开的web组态?

一、web组态的定义和背景 在深入探讨之前&#xff0c;我们先回顾一下“组态”的定义。在工业自动化领域&#xff0c;组态软件是用于创建监控和数据采集&#xff08;SCADA&#xff09;系统的工具&#xff0c;它允许工程师构建图形界面&#xff0c;实现与各种设备和机器的数据交互…

L1-4【练习7-11】 字符串逆序

输入一个字符串&#xff0c;对该字符串进行逆序&#xff0c;输出逆序后的字符串。 输入格式&#xff1a; 输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。 输出格式&#xff1a; 在一行中输出逆序后的字符串。 输入样例&#xff1a; Hello World!输…

【大数据学习 | HBASE】hbase的读数据流程与hbase读取数据

1. hbase的读数据流程 在解析读取流程之前我们还需要知道两个功能性的组件和HFIle的格式信息 HFILE 存储在hdfs中的hbase文件&#xff0c;这个文件中会存在hbase中的数据以kv类型显示&#xff0c;同时还会存在hbase的元数据信息&#xff0c;包括整个hfile文件的索引大小&…