系统运维(Docker篇)

news2024/9/23 19:18:52

前言

打怪升级之路,从未停息

​ 在这个社会信息技术的发展速度越来越快,这种快速发展带来了激烈的竞争。在这个竞争性的环境中,只有不断学习和更新自己的技能,才能保持竞争力。其次随着云计算、容器化、自动化等技术的出现,系统运维的方式也在不断更新。例如,DevOps、SRE等新的运维模式正在逐渐普及,只有不断学习和掌握这些新技术和新模式,才能保持竞争力。
在这里插入图片描述

Docker

​ Docker是一种容器化平台,可以将应用程序及其依赖项打包到一个可移植的容器中,以便在任何地方运行。Docker的出现,使得应用程序的部署和管理变得更加简单和高效。通过学习Docker,我们可以更好地理解容器化技术的原理和应用,同时也可以掌握Docker的使用和管理技巧。

Kubernetes

​ Kubernetes是一种容器编排工具,可以自动化地部署、扩展和管理容器化应用程序。Kubernetes的出现,使得容器化应用程序的管理变得更加简单和高效。通过学习Kubernetes,我们可以更好地理解容器编排技术的原理和应用,同时也可以掌握Kubernetes的使用和管理技巧。

Git

​ Git是一种分布式版本控制系统,可以帮助我们管理代码的版本和变更。通过学习Git,我们可以更好地理解版本控制的原理和应用,同时也可以掌握Git的使用和管理技巧。

Linux

​ Linux是一种开源的操作系统,广泛应用于服务器和嵌入式设备等领域。通过学习Linux,我们可以更好地理解操作系统的原理和应用,同时也可以掌握Linux的使用和管理技巧。

Python

​ Python是一种高级编程语言,具有简单易学、功能强大、可扩展性好等特点。通过学习Python,我们可以更好地理解编程语言的原理和应用,同时也可以掌握Python的使用和开发技巧。

基础知识

1、什么是Docker?它的主要用途是什么?

Docker是一种容器化平台,可以将应用程序及其依赖项打包到一个可移植的容器中,以便在任何地方运行。它的主要用途是简化应用程序的部署和管理,并提高应用程序的可移植性和可伸缩性。

2、Docker容器和虚拟机有什么区别?

Docker容器是在宿主机上运行的进程,它们共享宿主机的操作系统内核和资源。虚拟机则是在虚拟化层上运行的完整操作系统,每个虚拟机都有自己的内核和资源。因此,Docker容器比虚拟机更轻量级、更快速、更易于管理和部署。

3、Docker镜像和容器的区别是什么?

Docker镜像是一个只读的模板,用于创建Docker容器。它包含了应用程序及其依赖项的所有文件和配置信息。Docker容器则是从Docker镜像创建的可运行实例,它可以被启动、停止、删除和重启。

4、创建一个Docker镜像。

可以通过编写Dockerfile文件来创建Docker镜像。Dockerfile是一个文本文件,包含了一系列指令,用于描述如何构建Docker镜像。可以使用Docker build命令来构建Docker镜像(Dockerfile是一个文本文件,包含了一系列指令,用于描述如何构建Docker镜像。Dockerfile中的指令可以用来指定基础镜像、安装软件包、设置环境变量、暴露端口、添加文件等操作。通过编写Dockerfile文件,可以自动化地构建Docker镜像,从而简化了Docker镜像的构建和管理过程。Dockerfile是Docker镜像的构建蓝图,可以通过Docker build命令来构建Docker镜像)。

Dockerfile

Dockerfile可以自动化地构建Docker镜像,以下是Dockerfile的使用步骤:

  1. 创建一个空目录,用于存放Dockerfile文件和其他需要添加到镜像中的文件。
  2. 在该目录下创建一个名为Dockerfile的文件,并在其中编写Dockerfile指令。Dockerfile指令包括FROM、RUN、COPY、ADD、CMD、ENTRYPOINT、EXPOSE、ENV等。
  3. 在Dockerfile中使用FROM指令指定基础镜像,例如FROM ubuntu:latest。
  4. 在Dockerfile中使用RUN指令安装软件包或执行其他命令,例如RUN apt-get update && apt-get install -y nginx。
  5. 在Dockerfile中使用COPY或ADD指令将需要添加到镜像中的文件复制到镜像中,例如COPY index.html /var/www/html/。
  6. 在Dockerfile中使用CMD或ENTRYPOINT指令指定容器启动时要执行的命令,例如CMD [“nginx”, “-g”, “daemon off;”]。
  7. 在Dockerfile中使用EXPOSE指令指定容器需要暴露的端口,例如EXPOSE 80。
  8. 在Dockerfile中使用ENV指令设置环境变量,例如ENV MY_VAR=value。
  9. 保存Dockerfile文件。
  10. 使用Docker build命令构建Docker镜像,例如docker build -t myimage .
  11. 等待Docker镜像构建完成后,可以使用Docker run命令启动容器并运行应用程序,例如docker run -d -p 80:80 myimage。

例如:以下是一个简单的Dockerfile示例,用于构建一个基于Ubuntu的Nginx Web服务器镜像:

# 使用Ubuntu 20.04作为基础镜像
FROM ubuntu:20.04

# 更新Ubuntu软件包列表并安装Nginx
RUN apt-get update && apt-get install -y nginx

# 将Nginx配置文件复制到镜像中
COPY nginx.conf /etc/nginx/nginx.conf

# 暴露Nginx默认端口80
EXPOSE 80

# 启动Nginx服务
CMD ["nginx", "-g", "daemon off;"]

在上面的Dockerfile中,首先使用FROM指令指定基础镜像为Ubuntu 20.04。然后使用RUN指令更新Ubuntu软件包列表并安装Nginx。接着使用COPY指令将Nginx配置文件复制到镜像中。使用EXPOSE指令暴露Nginx默认端口80。最后使用CMD指令启动Nginx服务。

可以使用以下命令构建该Docker镜像:

docker build -t mynginx 

其中,-t选项用于指定镜像名称和标签,.表示Dockerfile所在的当前目录。

构建完成后,可以使用以下命令启动该Docker镜像:

docker run -d -p 80:80 mynginx

其中,-d选项表示在后台运行容器,-p选项将容器的80端口映射到主机的80端口,mynginx为镜像名称。

5、Docker容器连接到网络。

可以使用Docker网络来连接Docker容器。Docker网络是一种虚拟网络,可以将多个Docker容器连接到同一个网络中,以便它们可以相互通信。可以使用Docker network create命令来创建Docker网络,并使用Docker run命令来将容器连接到网络中。

6、Docker容器中运行多个进程。

Docker容器通常只运行一个进程。但是,可以使用一些工具,如supervisord或systemd,来在Docker容器中运行多个进程。这些工具可以作为Docker容器的启动脚本,并在容器启动时启动多个进程。

7、Docker容器中挂载主机文件系统。

可以使用Docker run命令的-v选项来将主机文件系统挂载到Docker容器中。例如,可以使用以下命令将主机的/data目录挂载到Docker容器的/mnt目录中:

docker run -v /data:/mnt myimage

8、Docker容器中设置环境变量。

可以使用Docker run命令的-e选项来设置环境变量。例如,可以使用以下命令在Docker容器中设置名为MY_VAR的环境变量:

docker run -e MY_VAR=value myimage

**在Docker容器中使用环境变量:**可以使用Docker run命令的-e选项来设置环境变量。例如,可以使用以下命令在Docker容器中设置名为MY_VAR的环境变量:

docker run -e MY_VAR=value myimage

9、Docker容器中执行命令。

可以使用Docker run命令的–entrypoint选项来指定容器启动时要执行的命令。例如,可以使用以下命令在Docker容器中执行ls命令:

docker run --entrypoint ls myimage

10、Docker容器中安装软件包。

可以使用Dockerfile文件中的RUN指令来安装软件包。例如,可以使用以下Dockerfile文件来安装nginx软件包:

FROM ubuntu RUN apt-get update && apt-get install -y nginx

11、Docker容器中暴露端口。

可以使用Docker run命令的-p选项来将Docker容器的端口映射到主机的端口。例如,可以使用以下命令将Docker容器的80端口映射到主机的8080端口:

docker run -p 8080:80 myimage

12、Docker容器中访问主机的文件系统。

可以使用Docker run命令的-v选项来将主机文件系统挂载到Docker容器中。例如,可以使用以下命令将主机的/data目录挂载到Docker容器的/mnt目录中:

docker run -v /data:/mnt myimage

12、Docker容器中执行命令。

可以使用Docker run命令的–entrypoint选项来指定容器启动时要执行的命令。例如,可以使用以下命令在Docker容器中执行ls命令:

docker run --entrypoint ls myimage

13、Docker容器中安装软件包。

可以使用Dockerfile文件中的RUN指令来安装软件包。例如,可以使用以下Dockerfile文件来安装nginx软件包:

FROM ubuntu RUN apt-get update && apt-get install -y nginx

基础命令

命令解释
docker run启动一个新的容器
docker stop停止一个正在运行的容器
docker rm删除一个容器
docker ps列出正在运行的容器
docker images列出本地的Docker镜像
docker pull从Docker仓库中拉取一个镜像
docker push将一个镜像推送到Docker仓库中
docker build使用Dockerfile构建一个新的镜像
docker exec在一个正在运行的容器中执行命令
docker logs查看一个容器的日志
docker network管理Docker网络
docker volume管理Docker卷
docker-compose使用Docker Compose管理多个容器的应用程序

总结

Docker是一种容器化平台,可以将应用程序及其依赖项打包到一个可移植的容器中,以便在任何地方运行。Docker的出现,使得应用程序的部署和管理变得更加简单和高效。Docker最初由DotCloud公司的创始人Solomon Hykes在2013年发布,当时它被称为“DotCloud”,是一种基于云计算的平台即服务(PaaS)解决方案。后来,DotCloud公司将其重命名为Docker,并将其开源,以便更广泛地推广和使用。

Docker的出现,解决了传统应用程序部署和管理的一些痛点,例如:

  1. 应用程序的依赖项和环境配置问题:传统的应用程序部署需要手动配置环境和依赖项,容易出现版本冲突和配置错误等问题。而Docker可以将应用程序及其依赖项打包到一个容器中,保证了环境的一致性和可移植性。
  2. 应用程序的部署和管理问题:传统的应用程序部署需要手动安装和配置,容易出现部署错误和管理混乱等问题。而Docker可以通过镜像和容器的方式,实现快速部署和管理,提高了效率和可靠性。
  3. 应用程序的可扩展性和高可用性问题:传统的应用程序部署需要手动扩展和配置,容易出现性能瓶颈和单点故障等问题。而Docker可以通过容器编排工具,实现自动化扩展和高可用性,提高了应用程序的可扩展性和可靠性。

总之,Docker的出现,解决了传统应用程序部署和管理的一些痛点,提高了效率和可靠性,成为了现代应用程序开发和部署的重要工具。

更多相关内容请移步:http://t.csdn.cn/aPQWS

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

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

相关文章

Qt Quick - 容器控件综述

Qt Quick - 容器控件综述 一、概述二、ApplicationWindow Control三、Frame Control四、GroupBox Control五、Page Control六、Pane Control七、ScrollView Control八、StackView Control九、SwipeView Control十、TabBarControl十一、ToolBar控件 一、概述 Qt Quick Controls…

Linux基础——FTP原理与配置

Linux基础——FTP原理与配置 一、文件传输协议——FTP服务二、ftp配置文件解析三、FTP服务器搭建 一、文件传输协议——FTP服务 FTP是典型的C/S结构的应用层协议,需要由服务器软件、客户端软件两个部分共同实现文件传输功能 FTP 连接模式 FTP服务器默认使用TCP协议…

设计师找灵感,就上这5个网站~

分享5个设计灵感网站,多看看设计大佬的优秀作品,对提升审美、灵感都有很大的帮助,还可以结合好的设计运用到自己的作品当中,话不多说,上干货~ (PS:部分网站需要科学上网才能访问~) …

celery简单入门

celery B站连接:https://www.bilibili.com/video/BV1jg4y13718?p7&spm_id_frompageDriver&vd_source1717654b9cbbc6a773c2092070686a95 创建项目celery_project 一、新建一个celery_task.py文件 二、新建一个produce_task.py文件 三、新建一个result.py…

Linux 机器间配置 SSH 免密登录

在日常工作中,服务器常常会有多台。特别是应用服务器存在多台的情况下,在每台机器手动部署或升级服务,每次登录多台机器特别麻烦,通过一台机器跳转每次输入密码(一般都是超强密码)也麻烦。所以说配置机器间…

如何智能改写文案内容-如何用ai改字

伪原创在线文章生成器 在当今数字时代,营销推广已成为各行各业的必备工具,其中之一便是内容营销。作为内容营销的一部分,文章撰写是非常关键的环节。为了满足市场需求,越来越多的在线文章生成器涌现出来,其中最受欢迎…

最强的ChatGPT竞品来了!免费好用,不需要兔魔法,小白都能用的GPT!

ChatGPT的功能非常强大,尤其是4.0,但是门槛很高,月租需要20美金,适合专业选手!其实很多人都是小白,完全不懂GPT,也不知道怎么用,只知道这个神器非常强大,于是走了很多很多…

chatgpt智能提效职场办公-ppt怎么插音乐上去

作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 在 PowerPoint 中插入音乐,可以按照以下步骤操作: 找到要插入音乐的幻灯片,点击“插入”选项卡在选…

020:Mapbox GL加载高德地图(影像瓦片图)

第020个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载高德地图(影像瓦片图)。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共80行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:…

DelphiMVCFrameWork 源码分析(一)

Delphi 基础Web Service Application 见: Delphi Web Server 流程分析_看那山瞧那水的博客-CSDN博客 DataSnap的见: Delphi DataSnap 流程分析(一)_看那山瞧那水的博客-CSDN博客 Delphi DataSnap 流程分析(二)_看那山瞧那水的博客-CSDN博客 DelphiMVC…

Java每日一练(20230422)

目录 1. 拼接最大数 🌟🌟🌟 2. Z 字形变换 🌟🌟 3. 跳跃游戏 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java…

su命令无权限,如何解决

正常情况下输入su命令执行如下 当遇到这种情况时别慌,很大概率是你还没连接Linux服务器。 在连接成功后,再尝试使用su命令成功的话,就会让你输入其他用户的密码。因为我只有一个普通用户和一个根目录,默认情况下是直接切换根用户。…

华为云企业快成长技术创新论坛全国巡演北京首站圆满落幕

4月15日,华为云联合msup举办的“企业快成长大数据技术创新论坛北京站”圆满举办,100余位来自全国各地的大数据技术总监/技术经理/研发工程师共聚一堂,共探数据湖的架构演进,数据治理方法论及最佳经验实践。 首先由华为云大数据人工…

APM/Air32F103/CH32F203/STM32F103程序互通说明

APM/Air32F103/CH32F203/STM32F103程序互通说明 ✨感觉国内中低端芯片就像 春秋时期,各诸侯群雄纷争的局面。各厂商都推出相关的替代竞品方案。这对于嵌入式开发从业者来说,有更多的开发方案可选。同时开发者不得不面对不同方案,项目移植工作…

724. 寻找数组的中心下标

力扣724. 寻找数组的中心下标 一、题目描述: 给你一个整数数组 nums ,请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端,那么左侧数之和…

express + TS :解决 TypeScript 报错:“无法重新声明块范围变量”的问题

问题描述 使用 Express TS 开发项目,在两个不同的文件引入相同的依赖,红色波浪线 虽然程序可正常运行 其他问题 无法重新声明块范围变量函数实现重复标识符重复 问题原因 项目中使用 CommonJS 规范,进行模块间的导入导出操作 因为在 Co…

八、Python结合Qt实现点击按钮保存并生成自定义word详细讲解(相信我,耐心看完,一定会有收获的)

一、需求介绍 因为我的毕设需要设计一个系统,然后把结果生成检测报告供企业下载。模型大概已经训练好了,也就差个导出word功能,把模型识别的数据结果输入到word导出即可。 二、最终实现效果 这里随便整个模板来对所需要的函数进行说明&…

Linux常用命令——iperf命令

在线Linux命令查询工具 iperf 网络性能测试工具 补充说明 iperf命令是一个网络性能测试工具。iperf可以测试TCP和UDP带宽质量。iperf可以测量最大TCP带宽,具有多种参数和UDP特性。iperf可以报告带宽,延迟抖动和数据包丢失。利用iperf这一特性&#x…

怎样搭建游戏服务器,传奇复古版手游是怎样搭建的,用云服务器架设游戏技术详细教程

本教程以战神传奇复古修复装备版为例: 本教程资源提供:海盗空间 --------------------------------------------------------------------------------------------------- 系统:Windows Server 2012 R2 x64 -----------------------------…

Python - 优先队列(queue.PriorityQueue heapq)

目录 什么是优先队列 为什么需要优先队列? 优先队列是个啥? 优先队列的工作原理 Python实现一个优先队列 Python内置库中的queue.PriorityQueue的使用 基本操作 多条件优先级实现 Python内置库中的heapq heapq的常用操作 基于heapq实现一个优…