Linux操作系统之docker基础
目录
一、docker
1.1 简介
1.2 安装配置docker
二、dockerfile
1.1、简介
1.2、dockerfile 关键字
一、docker
1.1 简介
容器技术
容器其实就是虚拟机,每个容器可以运行不同的系统【系统是以linux为主的】
为什么要使用docker?
docker容器之间相互隔离,可以提高安全性
通过使用docker可以做靶场
1.2 安装配置docker
方法1:yum安装
方法2:编译安装
配置yum源
需要三个源,请安装前配置好
BASE baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/os/x86_64/EXTRA baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/extras/x86_64/
UPDATE baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/updates/x86_64/
安装组件 (我用的是写了一个shell脚本docker安装,所以我们先需要安装一些上传文件的组件)
yum install irzsz unzip -y
将soft.zip 和 install_docker.sh,然后运行install_docker.sh
下载链接在下面
注意:关于防火墙
使用docker需要注意iptables防火墙
建议:关闭firewad 启动iptables
具体操作命令:yum install iptables-services -y
在这里我安装的时候出现了一些问题, 无法进行安装,后来我发现是我的yum命令用不了了
Another app is currently holding the yum lock; waiting for it to exit...
另一个应用程序是:PackageKit
内存:116 M RSS (568 MB VSZ)
已启动: Sun Apr 7 13:48:24 2024 - 00:59之前
状态 :睡眠中,进程ID:50687
像这样,我是这样解决的 rm -f /var/run/yum.pid 然后就OK了
我们继续,关闭防火墙,开启iptablessystemctl stop firewalld
systemctl disable firewalld
systemctl start iptablessystemctl enable iptables
关闭selinuxsetenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
启动docker容器,需要用docker镜像【docker镜像是一个操作系统】默认docker镜像都是在国外,访问速度特别慢,所以需要配置加速
vim /etc/docker/daemon.json
{#云服务器一般都会提供
}
systemctl daemon-reloadsystemctl restart-docker
下载镜像:docker pull 镜像名:版本
案例:下载centos 的镜像 docker pull centos:7
查看现有容器:docker images删除镜像:docker images --rm 镜像名/镜像ID | docker rmi 镜像名/镜像ID
查看容器:docker ps | docker ps -a
启动一个容器:docker run --name c1 -it 容器ID
启动容器时选项
-t 这里是指定一个终端,如果没有终端,是无法登录这个容器的
-i --interactive : 如果想用交互式访问,就需要用这个选项
--name string : 这里是指定容器的名字
--rm 当容器停止的时候,自动删除容器对象
-d --detach 让当前的这个容器工作在后台
--network 指定容器加入到哪个网络,如果不加的话,默认是一个bridge网络
-p 暴露容器的端口,将容器中的端口和宿主机的任意端口进行端口映射
-P 宿主机的端口:容器的端口 可以将宿主机的指定端口和容器的端口进行映射
-v :逻辑卷
停止容器:docker stop 容器ID
删除容器:docker rm -f 容器名/容器ID
关闭所有容器:docker rm -f `docker ps -a | awk 'NR>=2{print $1}'`
链接:https://pan.baidu.com/s/1xjABgcoc6KNc7YbNmuaKng
提取码:8023
二、dockerfile
1.1、简介
dockerfile是一个脚本文件
通过这个脚本文件可以快速做新的镜像
在dockerfile中包含了各种关键字
1.2、dockerfile 关键字
FROM 指定基础镜像
RUN 在基础镜像中执行的命令
ADD 镜宿主机中的文件发送到docker容器中
如果ADD发生的文件是一个tar.gz的包,那么ADD会自动进行解压
COPY:将宿主机中的一个文件复制到容器中
EXPOST 将容器的端口暴露出去
ENTRYPOINT 在容器中去执行一个shell脚本
#指定镜像
FROM centos:7
#执行命令安装编译库文件
RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel zlib-devel ncurses-devel iproute
#安装php环境
RUN yum install epel-release -y
添加解压nginx包到/tmp 目录下
ADD nginx-1.18.0.tar.gz /tmp
#进入目录进行编译安装
RUN cd /tmp/nginx-1.18.0 && ./configure --prefix=/usr/local/nginx && make -j 2 &&
make install
#删除容器内置配置文件
RUN rm -f /usr/local/nginx/conf/nginx.conf
#复制本地配置文件到容器内
copy nginx.conf /usr/local/nginx/conf
#复制启动脚本
COPY run.sh /tmpRUN cd /tmp
RUN chmod +x /tmp/run.sh
#fuzhiweb代码到容器
COPY s.html /usr/local/ngix/html/
#声明暴露端口
EXPOSE 80
#启动容器nginx服务,指定全局命令daemon off 保证服务在前台运行不会关闭
ENTRYPOINT ["/tmp/run.sh"]
案例:用centos作为基础镜像,安装上nginx
第一步:先准备一个目录
第二步:在目录中创建dockerfile文件
第三步:根据dockerfile中的内容,去逐一准备文件
- nginx-1.18.0.tar.gz
- nginx.conf
- run.sh
- s.htm
第四步:创建镜像文件 docker build -t 镜像名 .
第五步:用自己的镜像启动或容器
相关文章:
Linux操作系统之docker基础
目录 一、docker 1.1 简介 1.2 安装配置docker 二、dockerfile 1.1、简介 1.2、dockerfile 关键字 一、docker 1.1 简介 容器技术 容器其实就是虚拟机,每个容器可以运行不同的系统【系统是以linux为主的】 为什么要使用docker? docker容器之间相互隔…...
35-3 使用dnslog探测fastjson漏洞
一、DNSLog 原理 DNSLog是一种记录在DNS上的域名相关信息的机制,类似于日志文件,记录了对域名或IP的访问信息。了解多级域名的概念对理解DNSLog至关重要。因特网采用树状结构的命名方法,按照组织结构划分域,每个域都是名字空间中被管理的一个划分,可以进一步划分为子域。域…...
Qt——示波器/图表 QCustomPlot
一、介绍 QCustomPlot是一个用于绘图和数据可视化的Qt C小部件。它没有进一步的依赖关系,提供友好的文档帮助。这个绘图库专注于制作好看的,出版质量的2D绘图,图形和图表,以及为实时可视化应用程序提供高性能。QCustomPlot可以导出…...
《图解Vue3.0》- 调试
如何对vue3项目进行调试 调试是开发过程中必备的一项技能,掌握了这项技能,可以很好的定义bug所在。一般在开发vue3项目时,有三种方式。 代码中添加debugger;使用浏览器调试:sourcemap需启用vs code 调试:先开启node服…...
【PyQt5篇】和子线程进行通信
文章目录 🍔使用QtDesigner进行设计🛸和子线程进行通信🎈运行结果 🍔使用QtDesigner进行设计 我们首先使用QtDesigner设计界面 得到代码login.ui <?xml version"1.0" encoding"UTF-8"?> <ui …...
JavaScript数组操作方法全录
改变原数组的方法: push() - 将一个或多个元素添加到数组的末尾,并返回新数组的长度。 pop() - 从数组中移除最后一个元素,并返回该元素。 shift() - 从数组中移除第一个元素,并返回该元素。 unshift() - 将一个或多个元素添加到…...
8.排序(直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序)的模拟实现
1.排序的概念及其运用 1.1排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录…...
(详解)python调用另一个.py文件中的类和函数或直接运行另一个.py文件
一、同一文件夹下的调用 1.调用函数 A.py文件如下: def add(x,y):print(和为:%d%(xy))在B.py文件中调用A.py的add函数如下: import A A.add(1,2)或 from A import add add(1,2)2.调用类 A.py文件如下: class Add:def __ini…...
每日一题:修改后的最大二进制字符串
给你一个二进制字符串 binary ,它仅有 0 或者 1 组成。你可以使用下面的操作任意次对它进行修改: 操作 1 :如果二进制串包含子字符串 "00" ,你可以用 "10" 将其替换。 比方说, "00010"…...
Redis 5种数据结构常用命令
文章目录 1 字符串2 哈希3 列表4 集合5 有序集合 1 字符串 命令描述set key value设置指定key的值为valueget key获取指定key的值del key [key …]删除一个或多个keymset key value [key value …]设置多个key的值mget key [key …]获取一个或多个key的值incr key将key中储存的…...
23、区间和
区间和 题目描述 假定有一个无限长的数轴,数轴上每个坐标上的数都是0。 现在,我们首先进行 n 次操作,每次操作将某一位置x上的数加c。 接下来,进行 m 次询问,每个询问包含两个整数l和r,你需要求出在区间…...
Python零基础从小白打怪升级中~~~~~~~文件和文件夹的操作 (1)
第七节:文件和文件夹的操作 一、IO流(Stream) 通过“流”的形式允许计算机程序使用相同的方式来访问不同的输入/输出源。stream是从起源(source)到接收的(sink)的有序数据。我们这里把输入/输…...
Qt plugin 开发UI界面插件
目录 1.创建接口 2.创建插件 3.创建插件界面 4.插件实现 5.创建应用工程 6.应用插件 1.创建接口 打开QtCreater,点击左上角“文件”->新建文件或项目,在弹窗中选择C/CHeader File。 输入文件名,选好路径(可自行设置名称…...
Android查看SO库的依赖
➜ bin pwd /Users/xxx/Library/Android/sdk/ndk/21.1.6352462/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/bin ➜ bin ./aarch64-linux-android-readelf -d /Download/libxxx.so 0x0000000000000001 (NEEDED) Shared library: [liblog.so]0x…...
麒麟KOS删除鼠标右键新建菜单里不需要的选项
原文链接:麒麟KOS删除鼠标右键新建菜单里不需要的选项 Hello,大家好啊!在日常使用麒麟KOS操作系统时,我们可能会发现鼠标右键新建菜单里包含了一些不常用或者不需要的选项。这不仅影响我们的使用效率,也让菜单显得杂乱…...
DPDK系列之四十二DPDK应用网络编程UDP编程
一、UDP编程 UDP编程的应用和TCP编程的应用同样非常广泛,如果说真得想使用UDP编程,一般情况下还真得不至于运用DPDK这种重量级的框架。但一个框架的优秀与否,不仅仅在于自身的整体设计优秀,更重要的在于其对应用的支持更完善。 正…...
金三银四面试题(十九):MySQL中的锁
在MySQL中,锁是非常重要的,特别是在多用户并发访问数据库的环境中,因此也是面试中常问的话题。 请说说数据库的锁? 关于MySQL 的锁机制,可能会问很多问题,不过这也得看面试官在这方面的知识储备。 MySQL …...
【JavaScript】原型链/作用域/this指针/闭包
1.原型链 参考资料:Annotated ES5 ECMAScript起初并不支持如C、Smalltalk 或 Java 中“类”的形式创建对象,而是通过字面量表示法或者构造函数创建对象。每个构造函数都是一个具有名为“prototype”的属性的函数,该属性用于实现基于原型的继…...
Python的MATLAB使用
Python和MATLAB是两种不同的编程语言,它们各自拥有不同的生态系统和库。然而,你可以在Python中使用一些方法来实现与MATLAB类似的功能。以下是一些方法和库,可以帮助你在Python中实现MATLAB风格的编程: 1. NumPy: NumPy是Python中…...
文件输入/输出流(I/O)
文章目录 前言一、文件输入\输出流是什么?二、使用方法 1.FileInputStream与FileOutputStream类2.FileReader与FileWriter类总结 前言 对于文章I/O(输入/输出流的概述),有了下文。这篇文章将具体详细展述如何向磁盘文件中输入数据,或者读取磁…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
