Docker基础(简单易懂)

news2024/11/25 2:59:47

目录

一、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.coloradmin.cn/o/1170895.html

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

相关文章

在全球半导体行业中“疯狂冒险”的台积电

来源:猛兽财经 作者:猛兽财经 总结: (1)尽管在收入和利润率方面面临挑战,但台积电(TSM)仍在为自己在半导体行业的复苏做准备。 (2)台积电的全球扩张和先进技术战略使其能够充分利用…

Windows10+CLion+OpenCV4.5.2开发环境搭建

目录 OpenCV准备下载解压环境变量配置 clion配置新建工程选择编译工具编写CMakeLists.txt将OpenCV执行的一些动态链接库复制到项目目录下编写测试代码 OpenCV准备 下载 官网:OpenCV 往下滑,找到自己需要下载的版本。我下载的是4.5.2。 解压 选择好解…

dockerfile避坑笔记(VMWare下使用Ubuntu在Ubuntu20.04基础镜像下docker打包多个go项目)

一、docker简介 docker是一种方便跨平台迁移应用的程序,通过docker可以实现在同一类操作系统中,如Ubuntu和RedHat两个linux操作系统中,实现程序的跨平台部署。比如我在Ubuntu中打包了一个go项目的docker镜像(镜像为二进制文件&am…

“如何对TXT文件的内容进行连续行删除?实现一键文件整理!

如果你有一个TXT文件,需要删除其中的连续行,这可能是为了整理文件、去除重复信息或清除不需要的文本。尽管手动删除每一行可能很耗时,但幸运的是,有一个简单而高效的方法可以帮助你实现这个目标。 首先,在首助编辑高手…

05-流媒体-RTMP协议介绍

05-流媒体-RTMP协议介绍 1.RTMP概述 RTMP是一种常见的流媒体协议,是基于TCP/IP协议模型的应用层协议,工作在TCP协议上,端口是1935。通过TCP三次握手保证传输的可靠。 2.握手 2.1 握手过程 RTMP基于传输层TCP连接后,通过RTMP握手协议来完成RTMP连接。客户端和服务端各发…

干货分享:基于 LSTM 的广告库存预估算法

近年来,随着互联网的发展,在线广告营销成为一种非常重要的商业模式。出于广告流量商业化售卖和日常业务投放精细化运营的目的,需要对广告流量进行更精准的预估,从而更精细的进行广告库存管理。 因此,携程广告纵横平台…

全新干货!一招教你迅速提升流量主收入!包你轻松月入过万

也不怕大家笑话,才哥以前收入每天才一块钱,连瓶水都买不了, 可是自从我开始接触老年粉私域后,一个搬运公众号的流量主收益两个月后就可以用“浴火重生”来形容了。 一个搬运公众号一天的流量主收益比我原创两年的个人公众号收益还…

【Linux】多路IO复用技术②——poll详解如何使用poll模型在本地主机实现简易的一对多服务器(附图解与代码实现)

在阅读本篇博客之前,建议大家先去看一下我之前写的这篇博客,否则你很可能会一头雾水 【Linux】多路IO复用技术①——select详解&如何使用select模型在本地主机实现简易的一对多服务器(附图解与代码实现)http://t.csdnimg.cn/…

数据库实验:SQL的数据更新

目录 实验目的实验内容实验要求实验步骤实验过程总结 再次书接上文,sql基础的增删改查 实验目的 (1) 掌握DBMS的数据查询功能 (2) 掌握SQL语言的数据更新功能 实验内容 (1) update 语句用于对表进行更新 (2) delete 语句用于对表进行删除 (3) insert 语句用于对表…

Postman接口测试工具,提高SpringBoot开发效率

文章目录 🌺工具—postman⭐作用🏳️‍🌈安装🎈创建工作空间 🎄简单参数⭐原始方式🎈我们建立springboot项目,输入下面的代码🎈运行 ⭐SpringBoot方式 🎄实体参数&#x…

最新版星火官方搬运工具6.0,高级搬运,100%过原创,短视频上热门搬运软件黑科技【搬运脚本+使用技术教程】

软件介绍: 高级搬运,条条过原创 短视频暴力热门搬运黑科技 自研摄像头内录突破性技术6.0 无需任何繁琐准备工作安装即用 无需复杂售后培训看教程即可学会 直装直用自研技术更好卖 无需root 无需框架 更方便 无需xposed 无需vcam更安全 适配99%以…

【SoC基础】Arduino从零入门

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

C#知识总结 基础篇(下)

目录 5类和继承 5.1类继承 5.2访问继承的成员 5.3屏蔽基类的成员 5.4访问基类的成员 5.5虚方法与覆写方法 5.6构造函数的执行顺序 5.7成员访问修饰符 5.8抽象类 5.9密封类与静态类 6.表达式与运算符 6.1运算符和重载 7.结构 7.1结构体的感念。 7.2结构构造函数与…

为Web3生态创新赋能,ETH Hong Kong 2023圆满落幕

摘要:10月22日至24日,由以太坊原生zkEVM扩容方案Scroll与Web3技术风投公司Newman Group共同举办的首届以太坊香港盛会“ETH Hong Kong 2023”在数码港成功举行,、ABCDE和852Web3作为筹委会参与其中。本次活动三天内吸引了2500名与会者参与&am…

生活是自己的,尽情打扮、尽情可爱

充满创意色彩的撞色插肩卫衣 穿上它就是妥妥的时尚小达人 蓝橙紫三种色彩相互交织 胸前时尚字母元素罗纹收口 满满的设计感!真的墙裂推荐哦!

好用的文献引用方法(借助谷歌\火狐浏览器-需要vpn)

1 火狐浏览器-扩展-管理扩展-搜索“Google学术搜索按钮”-安装 2 vpn之后-在www.google.com谷歌官网-搜索论文题目- 点击扩展-点Google学术搜索按钮 3 直接得到结果-点击引用 4 得到引用bib

Selenium处理Cookie

01、cookie介绍 HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接,这就意味着服务器无法从连接上跟踪会话。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求…

虚幻引擎:RPC:远端调用

1.如何区当前是服务器还是在客服端 2.如何修改一个actor的所有权 修改所有权必须 在服务器上进行修改,不允许在客户端进行修改

2024天津理工大学中环信息学院专升本机械设计自动化专业考试题型

天津理工大学中环信息学院2024年高职升本科机械设计制造及其自动化专业课各科考试题型 2024年天津理工大学中环信息学院高职升本科机械设计制造及其自动化专业课考试大纲已发布。机械设计制造及其自动化专业需考《机械设计》、《机械制图》。具体大纲已下发可进行查看。各科考试…

linux下安装Zabbix教程

笔记: 监控设备 对各种设备的统一管理 Esight 了解开源监控工具 eg Promerthos: Zabbix :集中式系统 大型企业 可视化,高大上、 查看日志 安装zibox软件 安装数据库 进入数据库 进入Zabbox 密码 password 账号Admin 密码zabbix 解决乱码问题 将…