docker简单快速使用上手

1.Docker是什么?

Docker 是一个开源的容器化平台,主要用于开发、运输和运行应用程序。它通过提供轻量级的虚拟化机制,使得开发者可以在一个隔离的环境中运行和管理应用程序及其依赖项。Docker 的核心组件包括镜像(Image)、容器(Container)、Docker 引擎(Docker Engine)和 Docker Hub。

以下是 Docker 的主要概念和功能:

  1. 镜像(Image)
  • 镜像是一个轻量、独立、可执行的软件包,包含了运行某个应用程序所需的所有代码、运行时、库、环境变量和配置文件。可以将镜像看作是一个应用程序的模板。
  1. 容器(Container)
  • 容器是镜像的运行实例。每个容器都是一个隔离的进程,可以在任何支持 Docker 的操作系统上运行。容器之间相互隔离,并且可以独立于主机操作系统进行部署和管理。
  1. Docker 引擎(Docker Engine)
  • Docker 引擎是一个轻量级的运行时和工具集,用于创建、管理和运行容器。它包括一个服务端守护进程(Docker Daemon)、一个 REST API 接口和一个命令行界面(CLI)。
  1. Docker Hub
  • Docker Hub 是一个云端的镜像仓库,允许用户存储、共享和管理 Docker 镜像。用户可以从 Docker Hub 拉取公共镜像,也可以推送自己的镜像到 Docker Hub。

Docker 的优势

  1. 轻量级
  • 与传统的虚拟机相比,Docker 容器共享操作系统内核,不需要额外的操作系统开销,因此启动速度快,资源消耗少。
  1. 一致性和可移植性
  • Docker 镜像包含了应用程序及其所有依赖项,可以在任何运行 Docker 的环境中一致地运行,从而消除了“在我机器上可以运行”的问题。
  1. 敏捷性和效率
  • 开发者可以快速构建、测试和部署应用程序,通过 Docker 容器可以轻松地在不同环境之间迁移和扩展应用。
  1. 隔离性
  • 每个容器在一个隔离的环境中运行,确保应用程序之间不会互相干扰,并且可以更容易地管理应用程序的依赖关系。

Docker 使用场景

  1. 持续集成和持续部署(CI/CD)
  • Docker 使得开发和运维团队可以在整个应用生命周期中保持一致的环境,从而加快软件交付周期。
  1. 微服务架构
  • Docker 非常适合部署和管理微服务,每个微服务可以在一个独立的容器中运行,便于扩展和维护。
  1. 云计算和多云环境
  • Docker 容器可以轻松地在各种云环境中迁移和运行,支持混合云和多云策略。

总的来说,Docker 通过容器化技术,简化了应用程序的开发、部署和运行过程,提供了一种高效、灵活和可靠的解决方案。

2.个人简单理解

docker就一个Liunx虚拟机,属于阉割版的系统,这个系统只会出现对应应用程序所需要的所有代码、运行时、库、环境变量和配置文件,好处就是体积小,性能好

3.那我们为什么需要使用docker呢?

因为我们平时不管是开发,还是测试,运维部署环境,都需要一步一步的安装程序所需要的依赖包和相关插件,如此反复工作效率非常地下,如果我们学会了使用docker,那就可以直接简单一点可以实现几行命令,即可一键部署环境。

在这里插入图片描述

4.什么是镜像和容器

镜像:Docker将应用程序及其所需要的以来,函数库,环境,配置文件打包在一起,称为镜像

容器:镜像中的应用程序运行后形成的进程就是容器,只是dockers会给容器做隔离,对外不可见

5.Docker架构

dockers是一个cs架构的程序,由两部分组成

服务端:docker守护进程,复制处理docker指令,管理镜像,容器

客户端:通道命令或RestAPI向服务端发送指令,可以在本地或远程服务器发送指令。

6.安装Docker

Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到。下面的介绍都针对社区版。

6.1卸载(可选)

如果之前安装过旧版本的docker,可以使用命令卸载

sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine # 卸载老版本Docker/etc/systemd -name '*docker*' -exec rm -f {} ; #清除配置文件和依赖文件find /etc/systemd -name '*docker*' -exec rm -f {} \;find /lib/systemd -name '*docker*' -exec rm -f {} \;

6.2安装docker

.在下载docker之前, 最好安装yumutils,并配置yumutils的yum-config-manager来设置稳定版的仓库/源, 方便之后的更新

yum install -y yum-utils # 安装

然后更新本地镜像源(根据实际情况使用)

yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo # 配置

然后输入命令:

yum install docker-ce

docker-ce为社区免费版

6.3启动docker

docker应用需要用到各种端口,逐一修改i防火墙设备,非常麻烦因此建议

启动docker前一定要关闭防火墙!

启动docker前一定要关闭防火墙!

启动docker前一定要关闭防火墙!

#关闭
systemctl stop  firewalld
#禁止开机启动防火墙
systemctl disable firewall

通过命令启动docker:

systemctl start docker   #启动docker服务systemctl stop docker  #停止docker服务systemctl restart docker   #重启docker服务

然后输入命令,可以查看docker版本

docker -v 

6.4配置镜像

docker官方镜像仓库网速较差,我们需要设置国内镜像,我们可以参考一下菜鸟教程的配置方法

7.Docker基本操作

7.1镜像相关命令

  • 镜像名称一般分两个部分组成:[repository]:[tag]

  • 在没有指定tag,默认是lastest.代表最新版本的镜像

在这里插入图片描述

7.2镜像操作命令

在这里插入图片描述

7.3举例我们安装一个Nginx环境

7.3.1docker hub镜像网站拉取镜像

首先去镜像仓库搜索nginx 镜像,比如docker hub

官方镜像地址:https://hub.docker.com/

在这里插入图片描述
在这里插入图片描述

7.3.2拉取镜像
# 1.获取镜像(默认为最新版本)
docker pull nginx# 2.获取镜像(指定版本)
docker pull nginx:1.24.0

在这里插入图片描述

7.3.4查看镜像
# 2.查看本地镜像
docker images# REPOSITORY :镜像名称
# TAG        :镜像标签(版本)
# IMAGE ID   :镜像ID
# CREATED    :创建时间
# SIZE       : 镜像大小

在这里插入图片描述

7.3.5镜像导出磁盘
#镜像导出
# -o 指定镜像文件名称
#  nginx:latest  为镜像名称和TAGdocker save -o nginx.tar nginx:latest

在这里插入图片描述

#如果需要导入镜像,首先需要把原有的镜像进行删除处理,才能进行镜像导入docker rmi nginx:lastest#查看镜像docker images# 查看docker load 使用docker load  --help# -i 是指需要读取的镜像文件docker load -i nginx.tar

8.操作容器

在这里插入图片描述

8.1创建Nginx容器

在这里插入图片描述

# docker run :创建并运行一个容器
# --name :给容器起一个名字,比如叫mn
# -p:将宿主端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
# -d:后台运行容器
# nginx :镜像名称,例如nginxdocker run --name some-nginx  -p 8080:80  -d nginx

8.2 容器操作

#查看容器是否运行,不支持查看未允许的容器
docker ps#返回结果
# contaidner id 唯一id
#image 镜像名称
# command 容器内容运行的命令
# created 创建时间
# status 运行状态
#ports 端口
# names 名称### 查看容器允许日志```bash
#查看容器运行日志
docker logs mn#查看容器运行日志
# -f 持续输出日志信息
docker logs -f mn#停止容器操作
docer stop mn#再次启动容器
docker start mn# 查看所有容器(包含已经停止的容器)
docker ps -a # 强制删除容器,包含在允许的容器
# -f 强制删除
docker rm -f mn

8.3 进入Nginx容器

进入容器,修改HTML文件内容,添加"你好"

进入容器,进入我们刚刚创建的nginx容器命令为:docker exec -it mn bash docker exec :进入容器内容,执行一个命令-it:给当前进入的容器创建一个标准输入,输出终端,允许我们与容器交互mn :要进入的容器的名字bash :进入的容器后执行的命令,bash是一个liunx终端交互命令

在这里插入图片描述

9. 数据卷

当Docker容器运行的时候,会产生一系列的数据文件,这些数据文件会在关闭Docker容器时,直接消失的。但是其中产生部分的数据内容,
我们是希望能够把它给保存起来,另作它用的。关闭Docker容器=删除内部除了image底层数据的其他全部内容,即删库跑路#1.不便于修改
当我们要修改Nginx的html内容时,需要进入容器内部修改,很不方便
#2.数据不可复用
在容器内的修改对外是不可见的,所有修改对新创建的容器是不可复用的
#3.升级维护困难
数据在容器内,如果要升级容器必然删除旧容器,所有数据都跟着删除了

数据卷是一个虚拟目录,指向宿主机文件系统中的某个目录

在这里插入图片描述

数据卷操作的基本语法如下:
docker volume [COMMAND]docker vloime 命令是数据卷操作,根据命令后跟随的command 来确定下一步的操作
create  创建一个volume
imspect 显示一个或多个volume的信息
ls      列出所有的volume
prune   删除未使用volume
rm      删除一个或多个指定的volume创建一个数据卷,并查看数据卷在宿主机的目录位置
#查看帮助文档
docker volume --help#创建数据卷
docker volume create html#查看数据卷
docker volume ls#数据卷存放在那个位置
docker volume inspect html#Mountpotint 存放位置#删除未使用的指定数据卷
docker volume prune#删除指定数据卷
docker volume rm html

9.1 数据卷挂载

我们以Nginx镜像举例使用,挂载完成数据卷,我们就不需要进入容器内修改数据

#然后挂载数据卷 -v 数据卷:docker容器的目录文件 如果数据卷不存在,会自定创建数据卷
docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx#查看数据卷
docker inspect html#进入数据卷
cd /var/lib/docekr/volumes/html/_data# 修改HTML文件
vi index.html

9.2 目录挂载到容器上

我们以Mysql数据库镜像举例使用,我们可以把配置文件直接挂载到容器上,便于管理配置文件

#查看镜像文件
docker images#创建文件
mkdr -p mysql/data
mkdr -p mysql/conf# 换行符 \
#允许mysql 
docker run \-- name mysql-e MYSQL_ROOT_PASSWORD=123 \-p 3306:3306 \-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \-v /tmp/mysql/data:/var/lib/mysql \-d \mysql:5.7.25

在这里插入图片描述
我们可以通过两种方式实现数据的持久化,避免了容器停止或者删除升级导致的数据丢失问题

以上的内容为学习笔记,只能为大家提供一个简单Docker入门学习,大佬勿喷,有误请指正!!!

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

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

相关文章

Python | Leetcode Python题解之第165题比较版本号

题目&#xff1a; 题解&#xff1a; class Solution:def compareVersion(self, version1: str, version2: str) -> int:n, m len(version1), len(version2)i, j 0, 0while i < n or j < m:x 0while i < n and version1[i] ! .:x x * 10 ord(version1[i]) - o…

18.cobra框架了解

目录 概述举例安装实践实践 概述 github cobra cobra 快速的实现一个命令行客户端&#xff0c;命令行解析工具。 cobra 中的主要概念 -Commands 表示执行运作-Args 执行参数-Flags 这些运作的标识符 举例 git clone 命令 git clone https://github.com/spf13/cobra.git -…

【Java】已解决java.nio.channels.OverlappingFileLockException异常

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.nio.channels.OverlappingFileLockException异常 在Java的NIO&#xff08;New I/O&#xff09;编程中&#xff0c;java.nio.channels.OverlappingFileLockException是一…

ArrayList知识点(面试)

上一篇我们说了hashmap的相关知识点&#xff0c;这一篇我们再说一些ArrayList的相关知识&#xff0c;因为ArrayList也是我们项目中比较常用的。 ArrayList(底层是数组) 底层工作原理 首先&#xff0c;在构造ArrayList的时候会先看有没有指定容量&#xff0c;如果没有&#xf…

人人讲视频如何下载

一、工具准备 1.VLC media player 2.谷歌浏览器 二、视频下载 1.打开人人讲网页&#xff0c;需要下载的视频 谷歌浏览器打开调试窗口 搜索m3u8链接 拷贝到VLCplayer打开网络串流方式打开测试是否能正常播放 2.下载视频 能正常播放后&#xff0c;切换播放为转换选择mp4格式…

24年火爆全网的企业信贷产品-民生惠详解

今年&#xff0c;民生惠企业信贷产品非常火爆&#xff01;客户想申请这信用贷款前&#xff0c;先确认下自己是不是在白名单里。有些地区还能加进白名单&#xff0c;不在的话就别申请了&#xff0c;这是专门给受邀的小微企业的。 这款产品的细节是这样的&#xff1a; 额度&am…

visual studio 创建c++项目

目录 环境准备&#xff1a;安装 visual studiovisual studio 创建c项目Tips&#xff1a;新建cpp文件注释与取消注释代码 其他初学者使用Visual Studio开发C和C时常遇到的3个坑 环境准备&#xff1a;安装 visual studio 官网&#xff1a;https://visualstudio.microsoft.com/zh…

【十三】图解mybatis缓存模块之装饰器模式

图解mybatis缓存模块之装饰器模式 简介 之前有写过一篇博客介绍过mybatis的缓存模块设计【九】mybatis 缓存模块设计-CSDN博客 &#xff0c;当时着重讲解的是mybatis种一级缓存和二级缓存&#xff0c;本次博客补充讲解一下装饰器模式的应用&#xff0c;本篇主要分两部分讲解&a…

kotlin智能类型转换

1、在kotlin这中&#xff0c;定义如下类型&#xff0c;在判断不为null的语句里边&#xff0c;会发生类型转换&#xff1a; fun main(){var a:String? "XXX" // a 类型为 String? 可能为 null// 在if 语句中&#xff0c;a 的类型为 Stringif(a ! null){println(a.l…

动态ARP

定义 动态ARP表项由ARP协议通过ARP报文自动生成和维护&#xff0c;可以被老化&#xff0c;可以被新的ARP报文更新&#xff0c;可以被静态ARP表项覆盖。 动态ARP适用于拓扑结构复杂、通信实时性要求高的网络。 ARP地址解析过程 动态ARP通过广播ARP请求和单播ARP应答这两个过…

使用 Kubernetes 部署 MinIO 和 Trino

Trino&#xff08;以前称为 Presto&#xff09;是一个 SQL 查询引擎&#xff0c;而不是 SQL 数据库。Trino 避开了 SQL 数据库的存储组件&#xff0c;只专注于一件事 - 超快的 SQL 查询。Trino 只是一个查询引擎&#xff0c;不存储数据。相反&#xff0c;Trino与各种数据库交互…

GWO-CNN-SVM,基于GWO灰狼优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类)

GWO-CNN-SVM&#xff0c;基于GWO灰狼优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类) 1. GWO灰狼优化算法 灰狼优化算法&#xff08;Grey Wolf Optimizer, GWO&#xff09;是一种启发式优化算法&#xff0c;模拟了灰狼群体的社会行为&#xff0c;包…

天马学航——智慧教务系统(移动端)开发日志六

天马学航——智慧教务系统(移动端)开发日志六 日志摘要&#xff1a;统一身份认证设计&#xff0c;修复了选课信息错乱的问题 界面设计 实现思路 使用 Java 和 Jedis 完成实现&#xff1a; 步骤一&#xff1a;添加 Jedis 依赖 首先需要在项目中添加 Jedis 依赖&#xff0c;…

使用海康威视的SDK,利用WPF设计一个网络摄像头的显示控制程序(上位机)

目录 一、下载海康威视的SDK 1.1 关于SDK 1.2 关于API 1.3 关于DLL 1.4 下载海康威视的SDK 1.5 关于网络高清摄像机 二、对下载的SDK进行调试 三、利用Visual Studio打开项目的解决方案 3.1 Visual Studio 2022下载 3.2 关于句柄 四、打开WPF进行ui页面设计 4.1 关…

react笔记-03react-router篇

本文章是react的路由笔记 一、react路由&#xff08;v5版本&#xff09; 1. 什么是路由&#xff08;前端&#xff09;&#xff1f; 一个路由就算一个映射关系&#xff08;key: value)key为路径&#xff0c;value为组件 2. 前端路由的工作原理 根据浏览器历史记录&#xff…

双例集合(三)——双例集合的实现类之TreeMap容器类

Map接口有两个实现类&#xff0c;一个是HashMap容器类&#xff0c;另一个是TreeMap容器类。TreeMap容器类的使用在API上于HashMap容器类没有太大的区别。它们的区别主要体现在两个方面&#xff0c;一个是底层实现方式上&#xff0c;HashMap是基于Hash算法来实现的吗&#xff0c…

什么是电商大数据?主流电商大数据的采集||关键性技术|电商API接口接入说明

大数据的时代早已到来&#xff0c;然而想要全方位掌握大数据&#xff0c;务必要掌握大数据造成的时代特征&#xff0c;之前大数据被视为废物&#xff0c;如今被视为财产。主流电商大数据的采集&#xff0c;电商API接口的接入在大多数人理解中&#xff0c;是企业用数据来优化自己…

HackTheBox-Linux基础

Linux 结构 历史 许多事件导致了第一个 Linux 内核的创建&#xff0c;并最终创建了 Linux 操作系统 &#xff08;OS&#xff09;&#xff0c;从 1970 年 Ken Thompson 和 Dennis Ritchie&#xff08;当时都在 AT&T 工作&#xff09;发布 Unix 操作系统开始。伯克利软件发行…

微信小程序毕业设计-餐厅点餐系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

OCC显示渲染结构剖析

1.Display显示 2.Drawer 3.Graphics 4.InteractiveContext 5.Render 6.Selection 7.View