Docker基础(简单易懂)

目录

一、docker是什么

核心概念

二、docker安装

1、卸载docker

2、使用yum 安装

三、docker常用命令

1、帮助命令

2、镜像命令

1)查看镜像

2)查询镜像

3)拉取镜像

4)删除镜像

3、容器命令

四、容器数据卷

五、DockerFile

1、dockerFile介绍

2、基础命令

3、springboot制作镜像并推送(linux)

1)打包springboot工程

2)上传到已经安装好docker的操作系统

3)编写dockerfile

4)制作镜像

5)制作成功后查看镜像

6)将镜像推送到阿里云镜像仓库

7)测试拉取镜像


一、docker是什么

docker的理念来自于集装箱,本质上就是一种虚拟机技术。一个开源的应用容器引擎,

让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口。使用go语言编写的。

实际上就是docker上拉取应用,只要Linux上能装docker,它就能使用docker上拉取的应用,

解决了环境不一致、解决了扩容、解决了资源之间相互隔离,动态扩容、微服务组件等问题

注意:docker本身并不是容器,他是创建容器的工具,是一个应用容器引擎。  

简单来说:

  1. 就是可以快速部署启动应用
  2. 实现虚拟化,完整资源隔离
  3. 一次编写,四处运行(有一定的限制,比如Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用)

为什么要用?

  1. 提供一次性的环境,假如需要安装Mysql,则需要安装很多依赖库、版本等,如果使用Docker则通过镜像就可以直接启动运行。
  2. 快速动态扩容,使用docker部署了一个应用,可以制作成镜像,然后通过docker快速启动
  3. 组建微服务架构,可以在一个机器上模拟出多个微服务,启动多个应用
  4. 更好的资源隔离和共享。

一句话:开箱即用,快速部署,可移植性强,环境隔离

核心概念

  1. 镜像(image)。注册服务器是存放仓库的地方,其上往往存放着多个仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。例如存放Ubuntu操作系统镜像的仓库,称为Ubuntu仓库,其中可能包括14.04、12.04等不同版本的镜像。

  2. 容器(container)。Docker镜像(Image)类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统。例如:一个镜像可以只包含一个完整的Ubuntu操作系统环境,可以把它称为一个Ubuntu镜像。

  3. 仓库(repository)。容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的。可以从一个镜像创建无数个容器。平时我们主要操作的就是容器。我们也可以把容器打包成镜像以方便再次使用。镜像自身是只读的。容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身将保持不变。


 

二、docker安装

下面命令中有些命令后面会带个 \ 是因为嫌这个命令太长了给分隔开来,

如果运行命令不成功可以把 \ 给去了

1、卸载docker

先卸载是怕虚拟机之前有docker相关的残留

# yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine

 去 \ 后写法:

# yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine

2、使用yum 安装

1) 安装yum命令的一些依赖包

# yum -y install yum-utils

2) 设置国内的yum源。这样下载会快,也稳定(可设可不设)

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

3) 更新yum源缓存,并安装 docker-ce

# yum -y install docker-ce docker-ce-cli containerd.io

4) 测试docker是否安装成功,查看版本

# docker version

5)启动docker

# 开机自启动
# systemctl start docker
# 启动docker
# systemctl start docker

6) 测试docker是否启动成功(在仓库中拉取一个helloWorld镜像)

# docker run --rm hello-world

三、docker常用命令

1、帮助命令

# docker version #显示docker的版本信息。 
# docker info #显示docker的系统信息,包括镜像和容器的数量 
# docker 命令 --help #帮助命令 
#帮助文档的地址:https://docs.docker.com/engine/reference/commandline/build/

2、镜像命令

汇总:

# docker images #查看所有本地主机上的镜像 可以使用docker image ls代替 
# docker search 搜索镜像 
# docker pull 下载镜像 docker image pull 
# docker rmi 删除镜像 docker image rm

1)查看镜像

# docker images

执行结果如下:

REPOSITORY                              TAG       IMAGE ID       CREATED         SIZE
hello-world                            latest    d1165f221234   7 weeks ago     13.3kB
mysql                                  latest    e3fcc9e1cc04   9 months ago    544MB

说明:

REPOSITORY:镜像的名称;

TAG:版本,latest表示最新版本;

IMAGE  ID:镜像ID,自动生成不会重复;

CREATED:什么时候创建的;

SIZE:大小

2)查询镜像

# 以查询mysql镜像为例 
# docker search mysql

说明:

NAME: 镜像仓库源的名称

DESCRIPTION: 镜像的描述

OFFICIAL: 是否 docker 官方发布

stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。

AUTOMATED: 自动构建

3)拉取镜像

# docker pull mysql

4)删除镜像

# mysql为例
# docker rmi mysql

3、容器命令

# 创建并启动容器
# docker run 参数 image 
# 查看所有容器
# docker ps -a
# 删除容器
# docker rm 容器id
# 启动容器
# docker start 容器id
# 停止容器
# docker stop 容器id
# 重启容器
# docker restart 容器id
# 强制停止容器
# docker kill 容器id
# 在运行的容器中执行命令
# docker exec 参数 容器id 命令
# 查看容器日志
# docker logs 容器id

四、容器数据卷

如果数据都在容器中,那么我们容器删除,数据就会丢失。例如mysql,如果把mysql容器删除了,那么数据也没有了。这种情况是不好的。所以我们需要把容器和数据分开。我们想把Docker容器中产生的数据,同步到本地(宿主机)。这就是容器卷。

# 三种挂载: 匿名挂载、具名挂载、指定路径挂载 
-v 容器内路径 #匿名挂载 
-v 卷名:容器内路径 #具名挂载 
-v /宿主机路径:容器内路径 #指定路径挂载 docker volume ls 是查看不到的

例如mysql:

# 参数说明
# -d 程序后台运行
# -p 绑定宿主机端口和容器端口  
# --name 给容器起个名字
# -v 挂载容器卷
# -it 输出
# run --name=mysql -p 3316:3306 -v /etc/mysql/data:/data -it -e MYSQL_ROOT_PASSWORD=123456  -d mysql
#进入mysql容器
​​​​​​​docker exec -it mysql bash
#修改mysql密码
mysql -u root -p

五、DockerFile

1、dockerFile介绍

dockerfile 是用来构建docker镜像的文件!命令参数脚本!

构建步骤:

1、 编写一个dockerfile文件
2、 docker build 构建称为一个镜像
3、 docker run运行镜像
4、 docker push发布镜像(DockerHub 、阿里云仓库)

2、基础命令

# DockerFile常用指令 
FROM # 基础镜像,一切从这里开始构建 
MAINTAINER # 镜像是谁写的, 姓名+邮箱 
RUN # 镜像构建的时候需要运行的命令 
ADD # 步骤,tomcat镜像,这个tomcat压缩包!添加内容 添加同目录 
WORKDIR # 镜像的工作目录 
VOLUME # 挂载的目录 
EXPOSE # 保留端口配置 
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代。 
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令 
ONBUILD # 当构建一个被继承 DockerFile 这个时候就会运行ONBUILD的指令,触发指令。
COPY # 类似ADD,将我们文件拷贝到镜像中 
ENV # 构建的时候设置环境变量!

3、springboot制作镜像并推送(linux)

1)打包springboot工程

mvn package

2)上传到已经安装好docker的操作系统

3)编写dockerfile

注意dockerfile和jar要在同一目录下

FROM java:8 
COPY *.jar /app9091.jar 
CMD ["--server.port=8080"] 
EXPOSE 8080 
ENTRYPOINT ["java","-jar","app9091.jar"]

4)制作镜像

# 注意 后面有个. 表示是同级目录
# docker build -t springboot01:v1 .

5)制作成功后查看镜像

# docker images

6)将镜像推送到阿里云镜像仓库

此部分命令参考阿里云镜像仓库页面

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

# 请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
# 镜像版本号tag和ImageId 通过 docker images 查看
# docker login --username=wujianyou10****@163.com registry.cn-hangzhou.aliyuncs.com
# docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/youyou102105/test01:[镜像版本号]
# docker push registry.cn-hangzhou.aliyuncs.com/youyou102105/test01:[镜像版本号]

7)测试拉取镜像

# docker pull registry.cn-hangzhou.aliyuncs.com/youyou102105/test01:[镜像版本号]

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

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

相关文章

解决美颜SDK集成:技术最佳实践和故障排除

美颜SDK已成为许多应用的核心功能,因为它可以增强用户体验,提高图像质量,吸引更多的用户。然而,集成美颜SDK并不总是一帆风顺。本文将为您介绍一些关键的技术最佳实践,以及如何排除集成过程中可能遇到的故障。 一、技…

快速实现一个企业级域名 SSL 证书有效期监控巡检系统

Why 现在对于企业来说,HTTPS 已经不是可选项,已经成为一个必选项。HTTPS 协议采用 SSL 协议,采用公开密钥的技术,提供了一套 TCP/IP 传输层数据加密的机制。SSL 证书是一种遵守 SSL 协议的服务器数字证书,一般是由权威…

antv/x6 自定义html节点并且支持动态更新节点内容

antv/x6 自定义html节点 效果图定义一个连接桩公共方法注册图形节点创建html节点动态更新节点内容 效果图 定义一个连接桩公共方法 const ports {groups: {top: {position: top,attrs: {circle: {r: 4,magnet: true,stroke: #cf1322,strokeWidth: 1,fill: #fff,style: {visib…

2023下半年软考系统集成项目管理工程师上午真题及答案解析

1.( C )不属于风险识别的信息收集技术。 A.头脑风暴 B.德尔菲技术 C.排除法 D.根本原因分析 解析: 2.( C )不是SaaS(软件即服务)的特点。 A.由供应商管理软件更新和安全 B.无需购买软件 C.需要自行安装和维护软件 D.按需付费 解析: 3.…

LiveMeida视频接入网关

一、产品简介 视频接入网关主要部署在视频存储节点或视频汇聚节点,面向不同用户,主要用于对接不同厂家、不同型号的摄像机设备,获取摄像机视频后,以统一标准的视频格式和传输协议,将视频推送至上层联网/应用平台。可广…

自动化测试:在Linux下搭建接口自动化测试平台详解

我们今天来学习一下在Linux下如何搭建基于HttpRunner开发的接口自动化测试平台吧! 需要在Linux上提前准备的环境(下面是本人搭建时的环境): 1,Python 3.6.8 2,MySQL 5.7 在这我也准备了一份软件测试视…

【实战Flask API项目指南】之三 路由和视图函数

实战Flask API项目指南之 路由和视图函数 本系列文章将带你深入探索实战Flask API项目指南,通过跟随小菜的学习之旅,你将逐步掌握 Flask 在实际项目中的应用。让我们一起踏上这个精彩的学习之旅吧! 前言 当小菜踏入Flask后端开发的世界时&…

三级分层查询省市区数据

1、数据库数据 * 2、实现的效果 3、controller层 Api(tags "地址库") RestController RequestMapping("/basic/city") public class DataTChinaCityController extends BaseController {Resourceprivate IProductSaleDeliveryService productSaleDelive…

基于SpringBoot+Vue的旅游系统、前后端分离

博主24h在线,想要源码文档部署视频直接私聊,低价有偿! 基于SpringBootVue的旅游系统、前后端分离 开发语言:Java 数据库:MySQL 技术:SpringBoot、Vue、Mybaits Plus、ELementUI 工具:IDEA/Eci…

船舶IMO识别码是什么?

船舶编码和编码体系比较多,主要有船舶登记号、船检登记号、船舶呼号、IMO号、船舶MMSI、船体号等。 船舶的IMO Number(国际海事组织识别码,下称IMO识别码)是独一无二的,相当于船舶的身份证号码,并且此号码…

MYSQL多表联查on和where的区别

目录 一、背景 二、探究 2.1、统计每个班级中女生的数量 错误的写法 查询结果 正确的写法 查询结果 2.2、只统计"一班"的学生数量 错误的写法 查询结果 正确的写法 查询结果 三、总结 一、背景 在一次对数据进行统计的时候,需要对两张表进行…

spring技术体系的演进史

spring 最开始使用 spring 的时候,发现这个特别好用,最主要是把那些对象创建之前通过关键字 new 创建的方式把那些交给 spring ioc 容器来处理,其中 spring 还是使用了工厂模式来创建对应的对象。 然而这个时候需要自己写一堆配置&#xff…

SpringBoot内容协商(简单使用、源码解读、默认Converters、自定义Converters)

目录 1. 内容协商1.1 简单使用1.2 源码解读1.3 WebMvcAutoConfiguration提供几种默认HttpMessageConverters1.4 自定义HttpMessageConverter支持yaml格式输出 1. 内容协商 1.1 简单使用 一套系统适配多端数据返回 基于请求头内容协商:(默认开启&#x…

C语言--分段函数

要求&#xff1a;写一个程序&#xff0c;输入x的值&#xff0c;输出y的值 思路&#xff1a;定义两个变量&#xff0c;一个y&#xff0c;一个x&#xff0c;当x<1时&#xff0c;yx&#xff0c;当x>1&&x<10&#xff0c;y2x-1&#xff0c;当x>10,y3x-11.用一个…

Linux 服务器监控

服务器几乎与任何 IT 基础设施密不可分&#xff0c;Linux 是服务器兼容性最强的开源操作系统&#xff0c;因为它具有灵活性、一致性和安全性。大多数 Linux 服务器都设置了以下 Linux 操作系统的任何变体&#xff1a;Red Hat Enterprise Linux &#xff08;RHEL&#xff09;、D…

Linux Shell和权限

目录 Shell命令及运行原理 权限 1.文件基本属性 2.文件权限值的表示方法 3.文件访问权限的相关设置方法 3.(1)chmod 组名修改 3.(2)chmod 二进制修改 3.(3)chown 3.(4)chgrp 3.(5)umask 4.目录权限 Shell命令及运行原理 Linux的操作系统&#xff0c;狭义上是…

看看顶级外贸业务员是如何跟进客户的?

许多外贸业务员&#xff0c;都碰到过客户跟进上的困难。那到底外贸业务员如何跟进客户&#xff0c;才能越跟越近&#xff0c;最终成交呢&#xff1f;本篇文章设定了几个客户回复的场景&#xff0c;看看顶尖销售都是怎么应对的吧&#xff1f; 一 客户说暂时没有需求 1.问清楚客…

案例研究|腾讯音乐娱乐集团与JumpServer共探安全运维审计解决方案

近年来&#xff0c;得益于人民消费水平的提升以及版权意识的加强&#xff0c;用户付费意愿和在线用户数量持续增长&#xff0c;中国在线音乐市场呈现出稳定增长的发展态势。随着腾讯音乐于2018年12月上市&#xff0c;进一步推动了中国在线音乐市场的发展。 腾讯音乐娱乐集团&a…

数据可视化:地图

1.基础地图的使用 如何添加颜色表示层级 代码实现 """基础地图的使用 """ from pyecharts.charts import Map from pyecharts.options import VisualMapOpts# 准备地图对象 map Map() # 准备数据 data [("北京市", 9),("上海市…

WebGL:基础练习 / 简单学习 / demo / canvas3D

一、前置内容 canvas&#xff1a;理解canvas / 基础使用 / 实用demo-CSDN博客 WebGL&#xff1a;开始学习 / 理解 WebGL / WebGL 需要掌握哪些知识 / 应用领域 / 前端值得学WebGL吗_webgl培训-CSDN博客 二、在线运行HTML 用来运行WebGL代码&#xff0c;粘贴--运行&#xff…