我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Docker入门教程:本地打包docker镜像

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Docker入门教程:本地打包docker镜像

什么是Docker?

Dockers是基于Go语言开发的虚拟容器技术。以前我们部署应用通常是将源代码打包成一个jar包运行,这样就会受到运行环境、配置环境的限制,而且程序也不能跨服务器运行。Docker基于Linux容器技术,将Java源代码、运行环境像MySQL、redis、jdk等通通打包成一个镜像,实现“一次镜像,处处运行”。极大的提高的应用的移植性以及部署的效率。

 简单来说,docker是一个解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

容器与虚拟机的区别

  • 传统虚拟机技术是虚拟出一套硬件后,在其上运行的一个完整的操作系统,在该系统上在运行所需应用进程。而Docker不需要捆绑一整套的操作系统,它只需要软件工作所需的库资源和设置。

  • Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化;Docker依赖于Linux内核环境,其实本质上是在已经运行的Linux下制造一个隔离的文件环境。

优点:

  •  更轻量:基于容器的虚拟化,仅包含业务运行所需的runtime环境。
  •  更高效:无操作系统虚拟化开销。
  •  更灵活:容器隔离,devoops理念。

Docker的组成

         docker中有三个基本概念:

  • 镜像(image):一个只读的模板,可以用来创建Docker容器。类似于Student类

  • 容器(Container):容器是镜像创建的运行实例。容器是镜像运行时的实体,为镜像提供了一个标准的和隔离的运行环境。它可以被启动、停止、删除,每个容器之间都是隔离的。类似于stu实例对象

  • 仓库(repository):存放镜像文件的地方。比如maven仓库是存放jar包的地方。

类比于--》Student stu = new Student();

docker安装

Linux上安装:

# 首先安装 Dockeryum -y install docker# 然后启动 Docker 服务service docker start# 测试安装是否成功docker -v    # 配置阿里云镜像加速sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{  "registry-mirrors": ["https://******.mirror.aliyuncs.com"]}EOFsudo systemctl daemon-reloadsudo systemctl restart docker

Windows上安装:下载Docker Desktop,配置WSL 

docker run 的执行流程及原理

执行流程:

docker是一个client-server结构的系统,docker的守护进程运行在主机上。dockerServer接收到docker-client的命令,就会执行这个命令。

容器基本操作

docker 中的容器就是一个轻量级的虚拟机,是镜像运行起来的一个状态,本文就先来看看容器的基本操作。

镜像就像是一个安装程序,而容器则是程序运行时的一个状态。

  • 查看容器
#查看正在运行容器docker ps#查看所有容器docker ps -a#查看最新创建的容器docker ps -l
  • 创建容器
#创建容器docker create 镜像--创建一个 nginx 容器:docker create nginx--指定容器的name为nginx:docker create --name=nginx nginx#创建并启动一个容器docker run 镜像--docker run --name nginx1 -d -p 8080:80 nginx--name 含义和上文一样,表示创建的容器的名字,-d 表示容器在后台运行,-p 表示将容器的 80 端口映射到宿主机的 8080 端口
  • 启动关闭容器
#启动容器docker start id|name#重启容器docker restart id|name#关闭容器docker stop id|name
  • 删除容器
#单个删除docker rm id|name#批量删除docker rm $(docker ps -a -q)
  • 查看容器信息、日记
#容器详情docker inspect id|name#查看容器进程docker top #查看你容器日记docker logs id|name-f :实时日记-t : 显示时间-tail: 控制输出行数
  • 容器导入导出
#导出一个已经创建的容器导到一个文件docker export -o 文件名.tar 容器id#将文件导入为镜像docker import 文件名.tar 镜像名:镜像标签

        docker export -o image-test.tar 1ffcd3e4a201

镜像的基本操作

        镜像是容器运行的基础,容器是镜像运行后的形态。镜像是一个包含程序运行必要以来环境和代码的只读文件,它采用分层的文件系统,将每一层的改变以读写层的形式增加到原来的只读文件上。

  • 查看所有镜像
docker images

  1. TAG: TAG用于区分同一仓库中的不同镜像,默认为latest。

  2. IMAGE ID: IMAGE ID是镜像的一个唯一标识符。

  3. CREATED: CREATED表示镜像的创建时间。

  4. SIZE: SIZE表示镜像的大小。

  5. REPOSITORY:仓库名称,仓库一般用来存放同一类型的镜像。仓库的名称由其创建者指定。如果没有指定则为

  •  搜索镜像
docker search name
  • 下载镜像
docker pull name:版本

  版本可以在Docker hub上查看 

  • 删除镜像
docker rmi id|name

Dockerfile

Dockerfile是用来构建docker镜像的构建文件。

其实Dockerfile就是一个普通的文本文件,其中包含了一条条的指令,每一条指令都会构建一层。

 dockerfile指令

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

  1. FROM nginx 表示该镜像的构建,以已有的 nginx 镜像为基础,在该镜像的基础上构建。

  2. MAINTAINER 指令用来声明创建镜像的作者信息以及邮箱信息,这个命令不是必须的。

  3. RUN 指令用来修改镜像,算是使用比较频繁的一个指令了,该指令可以用来安装程序、安装库以及配置应用程序等,一个 RUN 指令执行会在当前镜像的基础上创建一个新的镜像层,接下来的指令将在这个新的镜像层上执行,RUN 语句有两种不同的形式:shell 格式和 exec 格式。本案例采用的 shell 格式,shell 格式就像 linux 命令一样,exec 格式则是一个 JSON 数组,将命令放到数组中即可。在使用 RUN 命令时,适当的时候可以将多个 RUN 命令合并成一个,这样可以避免在创建镜像时创建过多的层。

  4. COPY 语句则是将镜像上下文中的 hello.html 文件拷贝到镜像中。

命令解释:

  1. -t 参数用来指定镜像的命名空间,仓库名以及 TAG 等信息。

  2. 最后面的 . 是指镜像构建上下文。

本地打包docker镜像

下载安装Docker Desktop,配置完成后即可在windows CMD上操作docker命令

编写一个简单的springboot项目,提供一个helloworld接口

@RestControllerpublic class HelloWorld {    @GetMapping("/hello")    public String helloImages() {        return "hello images!";    }}

使用maven插件打包--install--,在target包下可以看得到生成的jar包。

 

 编写Dockerfile文件

# 基础镜像使用javaFROM java:8#作者MAINTAINER CJC#将jar包添加到容器中并更名为: hello-docker-image.jarADD docker-image-test-0.0.1-SNAPSHOT.jar hello-docker-image.jar#运行jar包RUN bash -c 'touch hello-docker-image.jar'ENTRYPOINT ["java","-jar","hello-docker-image.jar"]#暴露端口EXPOSE 8080

 将jar包和dockerfile文件置于同一目录下执行命令,构建镜像:

docker build -t Name:TagName .> build -t hello-docker-image:V1.0 .-t参数指定构建成后,镜像的仓库、标签等,Name 给镜像取的名字TagName 给镜像取的标签最后的 .  表示 Dockerfile 文件在当前目录下 

 查看镜像:docker images

 创建并启动容器:docker run -d -p 8080:8080 6e7772b68332

 docker desktop上可以看到容器正在运行:

docker数据卷操作

一般情况下,当我们需要将数据从宿主机拷贝到容器中使用的都是docker的拷贝命令。数据卷可以避免这种麻烦的操作。

数据卷可以实现容器和宿主机之间的数据共享,简单来说数据卷就是在宿主机和容器之间搭建的一个映射的工作区,两者可以同步修改。

docker run -itd --name nginx -v /Users/sang/blog/docker/docker/:/usr/share/nginx/html/ -p 80:80 bc26f1ed35cf

 这样便是将宿主机中的 /Users/sang/blog/docker/docker/ 目录挂载到容器的 /usr/share/nginx/html/ 目录下。接下来读者只需要在 /Users/sang/blog/docker/docker/ 目录下添加 html 文件,或者修改 html 文件,都能在 nginx 访问中立马看到效果。

查看所有的数据卷:

docker volume ls

查看数据卷详情

docker volume inspect

删除数据卷

docker volume rm

来源地址:https://blog.csdn.net/feifeiwud/article/details/126636051

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Docker入门教程:本地打包docker镜像

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

docker打包python镜像的全教程分享

Docker打包Python镜像教程指导您构建和打包PythonDocker镜像。先决条件:安装Docker和Python。步骤:创建Dockerfile和requirements.txt文件。编写主Python脚本。构建Docker镜像。运行Docker容器。推送到DockerHub(可选)。最佳实践:使用多阶段构建优化镜像。分开代码和依赖项。使用最新Python版本。优化Dockerfile。使用注册表存储镜像。
docker打包python镜像的全教程分享
2024-04-02

idea使用docker生成镜像(打包镜像,导入镜像,导出镜像)

本文详细讲解了在IDEA中使用Docker生成、导入和导出镜像。生成镜像包括打包和提交变更;导入镜像支持从仓库或文件;导出镜像可导出为TAR文件或OCI格式。最佳实践建议使用有意义的镜像名称、多级构建、添加元数据以及清理未使用的镜像以优化使用。
idea使用docker生成镜像(打包镜像,导入镜像,导出镜像)
2024-04-02

将本地Python项目打包成docker镜像,上传到服务器,在docker中运行

文章目录 Docker环境创建虚拟环境pycharm使用虚拟环境准备打包保存为镜像文件拆分文件、合并文件加载镜像文件启动容器进入容器退出容器复制物理路径到容器指定路径 参考文献 Docker环境 windows11Docke
2023-08-18

一步步教你把SpringBoot项目打包成Docker镜像

Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,下面这篇文章主要给大家介绍了关于SpringBoot项目打包成Docker镜像的相关资料,需要的朋友可以参考下
2023-02-24

如何使用Maven将springboot工程打包成docker镜像

这篇文章将为大家详细讲解有关如何使用Maven将springboot工程打包成docker镜像,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Maven打包成docker镜像由于工作原因,需要通过maven
2023-06-22

python flask项目打包成docker镜像发布的过程

这篇文章主要介绍了python flask项目打包成docker镜像发布,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-03-19

构建Go程序Docker镜像时指向远程基础镜像的本地依赖

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天编程网给大家整理了《构建Go程序Docker镜像时指向远程基础镜像的本地依赖》,聊聊,我们
构建Go程序Docker镜像时指向远程基础镜像的本地依赖
2024-04-05

Linux 环境下Docker将镜像打包导出到本地,上传至内网服务器(八)

文章目录 背景1. docker容器打包成镜像和压缩(1)首先查看镜像所在的容器,获取到容器id(2)将容器保存成镜像(3)将镜像打包(4)将镜像包压缩 2. docker镜像压缩包解压及镜像载入 (移动到自己想要运行的服务器)
2023-08-19

Docker入门系列之二:使用dockerfile制作包含指定web应用的镜像

在前一篇文章:Docker入门系列之一:在一个Docker容器里运行指定的web应用 里,我们已经成功地将我们在本地开发的一个web应用部署到Docker容器里运行。本文将介绍如何制作一个包含了这个web应用的Docker镜像。镜像制作好之
2023-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录