Docker:Docker基础

Docker

Docker简介

在大型项目部署时,会出现依赖关系复杂容易出现兼容性等问题

同时开发,测试和生产的环境也存在差异

Docker解决依赖兼容问题

将应用的Libs函数库,Deps依赖,配置和应用一起打包
将每个应用放到一个隔离容器中去运行,避免互相干扰

Docker解决操作系统环境差异

将用户程序所需要的系统函数库一起打包

在不同操作系统运行时直接基于打包的函数库进行运行

Docker和虚拟机的区别

虚拟机:

在操作系统中模拟硬件设备,在这些硬件设备上运行另一个操作系统

体积大,启动速度满,性能差

Docker:

封装函数库,没有模拟完整的操作系统

是一种容器技术,在用户空间内以分离的进程运行

体积小,启动速度快,性能好

Docker架构

镜像(image)

Docker打包的应用程序及其依赖的函数库,环境,配置文件等

容器(container)

镜像运行后形成的进程,对外不可见

Docker:

一个CS架构的程序,由两部分组成

服务端(server):Docker守护进程,负责处理Docker指令,管理镜像,容器等.

DockerHub

装应用镜像的服务器,可以在这些平台上对Docker镜像进行下载

Docker的基本操作

镜像操作

镜像名称一般分为两个部分:repository:tag

未指定tag时,默认为latest,代表最新版本镜像

常见镜像操作命令
docker push
//推送镜像到服务器
docker pull
//从服务器拉取镜像
docker build
//构建镜像
docker images
//查看镜像
docker rmi
//删除镜像
docker save
//保存镜像为一个压缩包
docker load
//加载压缩包为镜像

容器操作

容器的三个状态

运行:进程正常运行

暂停:进程暂停,CPU不再运行,并不释放内存

停止:进程终止,回收进程占用的内存,CPU等资源

容器的常用命令
docker run
--name 给容器起名字
-p 将宿主机端口和容器端口做映射
-d 后台运行容器
-v 挂载文件或目录到容器中
挂载目录耦合度高但是容易查看
挂载数据卷耦合度低但是不容易查看
最后为镜像名称
//创建并运行一个容器,处于运行状态
docker pause
//让一个运行的容器暂停
docker unpause
//让一个容器从暂停状态恢复运行
docker stop
//停止一个容器
docker start
//让一个停止的容器再次运行
docker rm
//删除一个容器
docker ps -a 
//查看所有的容器
docker exec -it mn bash
-it 创建标准输入输出终端,允许我们与容器做交互
mn 进入容器的名称
bash 进入容器后执行的命令,bash是一个指令交互命令
//进入容器执行命令
docker logs
//查看容器运行日志
docker ps
-a 包括没有运行的容器
//查看所有运行的容器和状态
容器内修改文件

容器内没有vim/vi 命令,无法直接进行修改

使用sed命令工具进行修改

-i 在原始文件中进行修改

使用数据卷进行挂载

因为修改容器内部文件困难,所以我们需要使用数据卷挂载的方式进行文件修改

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录
docker volume [command]
command:
create //创建一个volume
inspect //显示一个或多个volume的信息
ls //列出所有的volume
prune //删除未使用的volume
rm //删除一个或多个指定的volume

Dockerfile自定义镜像

将自己的代码制作为镜像文件

镜像的组成结构

入口(Entrypoint)

镜像运行入口,一般是程序启动的脚本和参数

层(layer)

在BaseImage基础上添加安装包,依赖,配置等,每次操作都形成新的一层

基础镜像(BaseImage)

应用依赖的系统函数库,环境,配置,文件等

镜像就是在系统函数库和运行环境的基础上添加应用程序,配置文件,依赖文件等组合编写脚本进行打包在一起形成的文件

构建镜像就是实现上述打包的过程

Dockerfile语法

docker build -t javaweb:1.0 .说明:1.docker build 表示构建2.-t:t的全称是tag表示版本3.javaweb:1.0 :镜像组成格式  repository:版本  javaweb表示repository,属于标识符,随便定义4. 在版本即1.0后面一定加空格然后书写点,点表示在当前目录执行Dockerfile文件
//生成镜像文件FROM
FROM centos:6
//指定基础镜像
ENV
ENV key value
//设置环境变量
COPY
COPY ./mysql-5.7.rpm/tmp
//拷贝本地文件到镜像的指定目录
RUN
RUN yum install gcc
//执行Linux的shell命令,一般是安装过程的命令
EXPOSE
EXPOSE 8080
//指定容器运行时监听的端口
ENTRYPOINT
ENTRYPOINT java -jar aa.jar
//镜像中应用的启动命令,容器运行时调用

Docker-Compose

基于compose文件帮我们快速部署分布式应用

无需手动一个个创建容器

Compose文件
version: "3.8"services:mysql:image: mysql:5.7.25environment:MYSQL_ROOT_PASSWORD: 123 volumes:- "/tmp/mysql/data:/var/lib/mysql"web:build: .ports:- "8090:8090"

描述了一个包含两个容器

mysql:5.7.25

web临时容器,映射端口8090

的项目

Docker镜像仓库

公共仓库

Docker官方的Docker Hub

网易云镜像服务

DaoCloud镜像服务

阿里云镜像服务等等

私有仓库

用户在本地搭建私有Docker Registry

采用私有Docker Registry在实际开发中比较常见,安全性比较高

命令总结

docker服务相关命令
systemctl start docker
systemctl stop docker
systemctl enable docker
systemctl disable docker镜像相关的命令
docker pull xxx   #拉取镜像
docker images   #查看本地的镜像
docker rmi xxx  #删除镜像
docker save -o [保存的目标文件名称] [镜像名称] #把镜像打包
docker load -i xxx #加载tar包中的镜像
dokcer build -t xxx:[tag] .  #构建自定义镜像容器相关的命令
docker ps  #查看当前运行的容器
docker ps -a  #查看所有的容器,包括以停止的容器
docker run  #创建并启动容器
docker start xxx #启动容器
docker stop xxx #停止容器
docker rm xxx  #删除停止的容器
docker rm -f xxx  #强制删除容器,删除运行中的容器
docker logs -f xxx #查看启动日志数据卷相关的命令
docker volume list  #查看数据卷列表
docker volume create xxx  #创建新的数据卷
docker volume rm xxx  #删除数据卷
docker volume prune  #清除一些没有用到的数据卷#创建容器
docker run --name #容器名称# -p #宿主机端口#:#容器内端口# -v #数据卷#:#容器内部位置# -d -e #容器内的环境变量# --restart=always(开机自启) #镜像名称#:#tag# #设置一些参数#

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

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

相关文章

SpringCloud入门教程

一、SpringCloud介绍 1.概念 Spring cloud 是一系列框架的有序集合。它利用 spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 spring boot 的开发风格做到…

使用 Bing 的 Chat 初体验

前言 下载好 Edge 浏览器,并且通过 ModHeader 插件的设置才能访问外边的功能完善的 edge ,但是想要进行 chat 需要通过申请才行,网上很多教程我就不赘述了。 正文 我的申请刚刚通过,但是使用 Chat 的效果一般,感觉很…

如何用css实现两列布局?

1. 两列布局的基本方法 实现两列布局有多种方法,这里我会介绍几种常见的技术,包括浮动、Flexbox和Grid布局。 方法一:使用浮动(Float) 浮动是一种早期的布局方式,虽然现在不推荐,但仍然有必要…

对抗攻击论文阅读—AAAI2022—CMUA-Watermark

文章目录 CMUA-Watermark: A Cross-Model Universal Adversarial Watermark for Combating Deepfakes背景1、什么是对抗攻击1.1 主动防御与被动防御 2、整体思路3、方法3.1 整体流程3.2 如何破坏单个面部修改模型 G G G论文中代码 3.3 对抗扰动融合3.4 基于TPE的自动步长调整 4…

R语言中dplyr包的多表连接

在数据分析中,处理多个数据表是常见的需求。R语言中,dplyr包提供了丰富的连接(join)函数来实现多表连接操作。本文将解释R语言中的各种连接类型,包括内连接、外连接、左连接、右连接、半连接和反连接,并给出…

鸿蒙开发接口数据管理:【@ohos.data.distributedDataObject (分布式数据对象)】

分布式数据对象 本模块提供管理基本数据对象的相关能力,包括创建、查询、删除、修改、订阅等;同时支持相同应用多设备间的分布式数据对象协同能力。 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标…

股票数据集3- 纳斯达克NASDAQ 100 指数预测

通过4天股票数据预测后1天的数据 1. 特征选择 从上一节的PCA特征分析中,我们大概选择40-60只股票就可涵盖该数据集的主要信息。 因此,我们选择前32 or 64只股票作为模型输入, NASDAQ指数作为预测输出。 也可以根据上一节内容,分析特征重要性…

CISSP—实现安全治理和原则的策略

0x00 前言 首先拿到这个标题会想到什么内容呢, 实现安全治理和原则的策略,简要的拆分成问题就是 什么是安全治理什么是安全原则他们的策略是什么如何实现 其实这个就是当我们看到这个标题的时候应该想到的事情。若果这一章节学完,没有理解…

台灯学生用哪个牌子最好?学生台灯十大名牌排行榜分享

近年来,我们注意到儿童近视的现象呈现出增多且趋于低龄化的趋势。这一变化,部分原因可以归咎于孩子们越来越多地使用电子产品,另一部分则与他们面临的学业压力增加有关。鉴于此,家长们在挑选儿童学习用品时变得格外谨慎&#xff0…

Qt系统相关

本文目录 1.Qt事件事件的处理标签事件鼠标事件滚轮事件按键事件定时器事件窗口事件事件派发器 2.Qt文件操作QFile的基本使用 3.Qt多线程使用线程线程锁connect的第五个参数 条件变量和信号量 4.Qt网络编程UDP SocketTCP SocketQTcpServerQTcpSocket HTTP的编写 5.QT多媒体播放音…

【CTF MISC】XCTF GFSJ0766 something_in_image Writeup(字符串搜索)

something_in_image 暂无 解法 用 binwalk 扫描。 binwalk badimages 找到一个 ext3 文件系统。 strings badimages | grep {*}找到 flag。 Flag Flag{yc4pl0fvjs2k1t7T}声明 本博客上发布的所有关于网络攻防技术的文章,仅用于教育和研究目的。所有涉及到的实验…

Redis面试题、知识点总结,一篇文章让Redis成为面试加分项

Redis面试题、知识点总结,一篇文章让Redis成为面试加分项 前言 参与了几次中大厂的面试,你会发现一面时对于八股文的考察也具有侧重点(MySQLRedis > 网络 > 系统 >设计模式 > java集合> JVM >spring) 本文的目标就是通过…

收音机的原理笔记

1. 收音机原理 有线广播:我们听到的声音是通过空气振动进行传播,因此可以通过麦克风(话筒)将这种机械振动转换为电信号,传到远处,再重新通过扬声器(喇叭)转换为机械振动&#xff0c…

软件设计师笔记-程序语言基础知识

编程语言之间的翻译形式 编程语言之间的翻译形式主要有三种:汇编、解释和编译。这三种方式在将源代码转换为机器可执行的代码时,有着各自的特点和流程。 汇编: 定义:汇编是低级语言(如汇编语言)到机器语言的一种翻译方式。汇编语言是为特定计算机或计算机系列设计的一种…

PostgreSQL的视图pg_database

PostgreSQL的视图pg_database pg_database 是 PostgreSQL 中的一个系统视图,用于显示当前数据库集群中的所有数据库的信息。通过查询 pg_database 视图,数据库管理员可以获取关于每个数据库的详细信息,例如数据库的名称、所有者、编码、表空…

打造精细化运维新玩法(四)

二、SLO健康度——从0到1构建SLO 和大多互联网企业一样,蚂蚁的基础设施侧存在众多的异构系统,被上层的业务应用和服务所依赖。考虑到不同系统的技术栈、架构、部署等因素,我们需要找到一种通用的、泛化性强的数字化方案指导和构建基础设施域内…

智能楼宇可视化:赋能智慧园区管理

图扑智慧园区楼宇可视化系统,集成多种数据源,实现全方位监控与管理,提升园区的资源利用率和用户满意度,推动智能化管理进程。

豆瓣电影信息爬虫实战-2024年6月

豆瓣电影信息爬虫教程 摘要 本文将详细介绍如何使用Python编写一个爬虫程序,用于抓取豆瓣电影列表页面上的电影详细信息。通过本教程,你将学习到如何使用requests和PyQuery库来发送HTTP请求、解析HTML内容,并提取所需的数据。 目录 环境搭…

【机器学习】使用RetinaNet解决图像识别的正负样本失衡问题

1. 引言 1.1. 研究背景 正负样本失衡问题的表现和影响在目标检测任务中尤为显著,下面我将从多个方面更详细地阐述这一问题: 1.1.1.正负样本失衡的表现形式 样本数量差异显著: 在目标检测的数据集中,正样本(包含目标…

电线电缆单根燃烧试验 电缆垂直燃烧试验

电线电缆单根燃烧试验 电线电缆单根燃烧试验是一种用来评估电线电缆在受到火焰作用时的燃烧性能的测试方法。这种试验通常是将电线电缆垂直固定,然后使用特定的火焰源对其进行燃烧,以观察电线电缆的燃烧行为和燃烧速度。通过这个试验,可以评估…