当前位置: 首页 > news >正文

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了

我们继续,关闭防火墙,开启iptables

systemctl stop firewalld

systemctl disable firewalld

systemctl start iptables

systemctl enable iptables

关闭selinux

setenforce 0

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

启动docker容器,需要用docker镜像【docker镜像是一个操作系统】

默认docker镜像都是在国外,访问速度特别慢,所以需要配置加速

vim /etc/docker/daemon.json
{

#云服务器一般都会提供

}

systemctl daemon-reload

systemctl 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 /tmp

RUN 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篇】和子线程进行通信

文章目录 &#x1f354;使用QtDesigner进行设计&#x1f6f8;和子线程进行通信&#x1f388;运行结果 &#x1f354;使用QtDesigner进行设计 我们首先使用QtDesigner设计界面 得到代码login.ui <?xml version"1.0" encoding"UTF-8"?> <ui …...

JavaScript数组操作方法全录

改变原数组的方法&#xff1a; push() - 将一个或多个元素添加到数组的末尾&#xff0c;并返回新数组的长度。 pop() - 从数组中移除最后一个元素&#xff0c;并返回该元素。 shift() - 从数组中移除第一个元素&#xff0c;并返回该元素。 unshift() - 将一个或多个元素添加到…...

8.排序(直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序)的模拟实现

1.排序的概念及其运用 1.1排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录…...

(详解)python调用另一个.py文件中的类和函数或直接运行另一个.py文件

一、同一文件夹下的调用 1.调用函数 A.py文件如下&#xff1a; def add(x,y):print(和为&#xff1a;%d%(xy))在B.py文件中调用A.py的add函数如下&#xff1a; import A A.add(1,2)或 from A import add add(1,2)2.调用类 A.py文件如下&#xff1a; class Add:def __ini…...

每日一题:修改后的最大二进制字符串

给你一个二进制字符串 binary &#xff0c;它仅有 0 或者 1 组成。你可以使用下面的操作任意次对它进行修改&#xff1a; 操作 1 &#xff1a;如果二进制串包含子字符串 "00" &#xff0c;你可以用 "10" 将其替换。 比方说&#xff0c; "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、区间和

区间和 题目描述 假定有一个无限长的数轴&#xff0c;数轴上每个坐标上的数都是0。 现在&#xff0c;我们首先进行 n 次操作&#xff0c;每次操作将某一位置x上的数加c。 接下来&#xff0c;进行 m 次询问&#xff0c;每个询问包含两个整数l和r&#xff0c;你需要求出在区间…...

Python零基础从小白打怪升级中~~~~~~~文件和文件夹的操作 (1)

第七节&#xff1a;文件和文件夹的操作 一、IO流&#xff08;Stream&#xff09; 通过“流”的形式允许计算机程序使用相同的方式来访问不同的输入/输出源。stream是从起源&#xff08;source&#xff09;到接收的&#xff08;sink&#xff09;的有序数据。我们这里把输入/输…...

Qt plugin 开发UI界面插件

目录 1.创建接口 2.创建插件 3.创建插件界面 4.插件实现 5.创建应用工程 6.应用插件 1.创建接口 打开QtCreater&#xff0c;点击左上角“文件”->新建文件或项目&#xff0c;在弹窗中选择C/CHeader File。 输入文件名&#xff0c;选好路径&#xff08;可自行设置名称…...

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删除鼠标右键新建菜单里不需要的选项

原文链接&#xff1a;麒麟KOS删除鼠标右键新建菜单里不需要的选项 Hello&#xff0c;大家好啊&#xff01;在日常使用麒麟KOS操作系统时&#xff0c;我们可能会发现鼠标右键新建菜单里包含了一些不常用或者不需要的选项。这不仅影响我们的使用效率&#xff0c;也让菜单显得杂乱…...

DPDK系列之四十二DPDK应用网络编程UDP编程

一、UDP编程 UDP编程的应用和TCP编程的应用同样非常广泛&#xff0c;如果说真得想使用UDP编程&#xff0c;一般情况下还真得不至于运用DPDK这种重量级的框架。但一个框架的优秀与否&#xff0c;不仅仅在于自身的整体设计优秀&#xff0c;更重要的在于其对应用的支持更完善。 正…...

金三银四面试题(十九):MySQL中的锁

在MySQL中&#xff0c;锁是非常重要的&#xff0c;特别是在多用户并发访问数据库的环境中&#xff0c;因此也是面试中常问的话题。 请说说数据库的锁&#xff1f; 关于MySQL 的锁机制&#xff0c;可能会问很多问题&#xff0c;不过这也得看面试官在这方面的知识储备。 MySQL …...

【JavaScript】原型链/作用域/this指针/闭包

1.原型链 参考资料&#xff1a;Annotated ES5 ECMAScript起初并不支持如C、Smalltalk 或 Java 中“类”的形式创建对象&#xff0c;而是通过字面量表示法或者构造函数创建对象。每个构造函数都是一个具有名为“prototype”的属性的函数&#xff0c;该属性用于实现基于原型的继…...

Python的MATLAB使用

Python和MATLAB是两种不同的编程语言&#xff0c;它们各自拥有不同的生态系统和库。然而&#xff0c;你可以在Python中使用一些方法来实现与MATLAB类似的功能。以下是一些方法和库&#xff0c;可以帮助你在Python中实现MATLAB风格的编程&#xff1a; 1. NumPy: NumPy是Python中…...

文件输入/输出流(I/O)

文章目录 前言一、文件输入\输出流是什么&#xff1f;二、使用方法 1.FileInputStream与FileOutputStream类2.FileReader与FileWriter类总结 前言 对于文章I/O(输入/输出流的概述)&#xff0c;有了下文。这篇文章将具体详细展述如何向磁盘文件中输入数据&#xff0c;或者读取磁…...

Windows 10平台Android子系统技术实现与跨平台应用实践

Windows 10平台Android子系统技术实现与跨平台应用实践 【免费下载链接】WSA-Windows-10 This is a backport of Windows Subsystem for Android to Windows 10. 项目地址: https://gitcode.com/gh_mirrors/ws/WSA-Windows-10 Windows Subsystem for Android&#xff0…...

ofa_image-caption_coco_distilled_en快速部署教程:7860端口WebUI调用全流程详解

ofa_image-caption_coco_distilled_en快速部署教程&#xff1a;7860端口WebUI调用全流程详解 本文介绍如何快速部署和使用ofa_image-caption_coco_distilled_en模型&#xff0c;这是一个专门用于为图片生成英文描述的AI系统。通过简单的Web界面&#xff0c;任何人都能轻松上传图…...

啪」的一声脆响,空气击穿时那道紫色电弧总能让人心头一紧。咱们今天用COMSOL做个好玩的——计算两根针尖电极间的击穿电压,看看电场怎么在金属尖角处「拧麻花

comsol放电电极击穿空气模拟&#xff0c;计算击穿间隙的电压&#xff0c;周围附近的电场老规矩&#xff0c;先画个直径10mm的球头圆柱电极&#xff0c;对面放个尖角曲率半径0.1mm的针电极&#xff0c;间隙留5mm。材料库选「空气」&#xff0c;但要注意击穿模型得用自定义的。物…...

小程序对商家私域运营到底有多重要?

小程序对商家私域运营到底有多重要&#xff1f;在企业持续获取客户成本不断上升的背景下&#xff0c;越来越多商家开始关注“私域运营”&#xff0c;而小程序也逐渐成为这一体系中的核心工具。小程序对商家私域运营的重要性&#xff0c;本质上体现在“用户沉淀能力与转化效率的…...

2024通信工程师初级备考指南:综合能力与专业实务核心考点解析

1. 2024通信工程师初级考试概况 2024年通信工程师初级资格考试定于9月28日举行&#xff0c;采用机考形式&#xff0c;考试时间为上午8:30至12:30&#xff0c;总时长4小时。这个考试分为两个科目&#xff1a;《通信专业综合能力》和《通信专业实务》&#xff0c;两科连续考试&am…...

戴森球计划FactoryBluePrints:解锁游戏工厂建造的终极免费蓝图库

戴森球计划FactoryBluePrints&#xff1a;解锁游戏工厂建造的终极免费蓝图库 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints 还在为《戴森球计划》中复杂的工厂布局头疼吗&…...

告别图库!用LiuJuan Z-Image为文章博客自动生成配图(保姆级教程)

告别图库&#xff01;用LiuJuan Z-Image为文章博客自动生成配图&#xff08;保姆级教程&#xff09; 1. 为什么你需要这个工具&#xff1f; 作为一名内容创作者&#xff0c;我深知找配图的痛苦。记得上周为了给一篇技术文章配图&#xff0c;我花了整整40分钟在图库里翻找&…...

博德之门3 Mod管理器:解决Mod加载顺序被重置的终极指南 [特殊字符]

博德之门3 Mod管理器&#xff1a;解决Mod加载顺序被重置的终极指南 &#x1f3ae; 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 如果你在使用BG3ModManager&#xff08;博德之门3模组…...

pandas API on Spark 与 pandas / PySpark 互转指南

1. 为什么会有互转需求 pandas API on Spark 的定位很特殊&#xff1a;它既想保留 pandas 的使用体验&#xff0c;又建立在 Spark 的分布式执行之上。因此开发时常见的场景有三种&#xff1a; 已经有 pandas 代码&#xff0c;想迁移到分布式环境已经在用 PySpark DataFrame&…...

避坑指南:通达信DLL加密常见的5大误区与替代方案

通达信指标加密实战&#xff1a;5种DLL开发陷阱与零代码解决方案 在量化交易领域&#xff0c;指标公式的保护一直是开发者面临的棘手问题。最近三个月内&#xff0c;某金融开发者社区关于"通达信DLL加密失败"的求助帖增长了47%&#xff0c;暴露出传统加密方案存在显…...