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

这篇具有很好参考价值的文章主要介绍了Docker入门教程:本地打包docker镜像。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

docker打包镜像,Docker,docker,java,容器

什么是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打包镜像,Docker,docker,java,容器

docker安装

Linux上安装:

# 首先安装 Docker
yum -y install docker

# 然后启动 Docker 服务
service docker start

# 测试安装是否成功
docker -v
    
# 配置阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://******.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

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

docker打包镜像,Docker,docker,java,容器

docker run 的执行流程及原理

执行流程:

docker打包镜像,Docker,docker,java,容器

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

docker打包镜像,Docker,docker,java,容器

容器基本操作

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打包镜像,Docker,docker,java,容器

镜像的基本操作

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

  • 查看所有镜像
docker images

docker打包镜像,Docker,docker,java,容器

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

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

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

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

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

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

  版本可以在Docker hub上查看 

  • 删除镜像
docker rmi id|name

Dockerfile

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

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

docker打包镜像,Docker,docker,java,容器

 dockerfile指令

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

docker打包镜像,Docker,docker,java,容器

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

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

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

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

    docker打包镜像,Docker,docker,java,容器

命令解释:

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

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

本地打包docker镜像

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

docker打包镜像,Docker,docker,java,容器

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

@RestController
public class HelloWorld {


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

}

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

 

docker打包镜像,Docker,docker,java,容器

 编写Dockerfile文件

# 基础镜像使用java
FROM java:8

#作者
MAINTAINER CJC

#将jar包添加到容器中并更名为: hello-docker-image.jar
ADD 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打包镜像,Docker,docker,java,容器

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

docker打包镜像,Docker,docker,java,容器

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

docker打包镜像,Docker,docker,java,容器

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

删除数据卷文章来源地址https://www.toymoban.com/news/detail-779266.html

docker volume rm

到了这里,关于Docker入门教程:本地打包docker镜像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker入门教程

    容器是一个允许我们在资源隔离的过程中,运行应用程序和其依赖项的 、轻量的 、操作系统级别的虚拟化技术, 运行应用程序所需的所有必要组件都打包为单个镜像,这个镜像是可以重复使用的。当镜像运行时,它是运行在独立的环境中,并不会和其他应用共享主机操作系

    2024年02月03日
    浏览(37)
  • Docker超详细基础教程,快速入门docker首选

    一、docker概述 1.什么是docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之

    2024年02月13日
    浏览(51)
  • Docker入门简明教程

    Docker 是基于 Go 语言实现的云开源项目,是基于 Linux 的多项开源技术提供高效、敏捷和轻量级的容器方案。创建于 2013 年初,自从开源后就受到了广泛的关注,从长远的眼光来看,Docker 是未来虚拟化的一个发展的趋势。带来了更轻量快捷的的体验,一台主机可以同时运行数千

    2024年01月23日
    浏览(52)
  • Docker 快速上手学习入门教程

    目录 1、docker 的基础概念 2、怎样打包和运行一个应用程序? 3、如何对 docker 中的应用程序进行修改? 4、如何对创建的镜像进行共享? 5、如何使用 volumes 名称对容器中的数据进行存储?// 数据挂载 6、另一种挂载方式:目录挂载 7、实现容器之间的相互通信 8、使用 Docker

    2024年02月09日
    浏览(41)
  • Docker环境离线安装教程,附docker容器镜像打包,导出,导入加载镜像等

    (此方式在某些环境下可能不支持,如果不支持 请参考方式2) 下载文件:https://dn-dao-get.daocloud.io/docker/docker-1.13.0-centos-7.2.1511.tar.gz 上传,解压文件, 进入目录 执行 :bash install.sh 启动docker服务:service docker restart 下载地址:https://download.docker.com/linux/static/stable/x86_64/ 验证:

    2024年02月15日
    浏览(60)
  • Docker超详细教程——入门篇+实战

    docker官网 镜像仓库 概念:类似于各种项目和软件的应用商店,大家把项目放到docker仓库中也就是这个应用商店,其他人就可以下载使用这个项目,各个项目直接独立互不影响。使用docker只需要把我们的项目打包成镜像放到docker中。 imag镜像 容器的模板,用来构建容器,相当

    2024年02月07日
    浏览(42)
  • Docker 快速入门实操教程(完结)

    Docker,启动! 如果安装好Docker不知道怎么使用,不理解各个名词的概念,不太了解各个功能的用途,这篇文章应该会对你有帮助。 前置条件:已经安装Docker并且Docker成功启动。 实操内容:使用Docker容器替换本地安装的程序并迁移数据(MySQL、redis)。 最终目的:熟练使用D

    2024年02月19日
    浏览(38)
  • Docker镜像文件打包和启动简易教程-Buildx构建多平台镜像

    在目标文件夹下执行以下命令 生成Dockerfile文件后,在其中写入 将本地Python项目打包成docker镜像,并在docker中运行 - 灰信网(软件开发博客聚合) 创建docker, . 必不可少 保存打包的镜像文件 命令行启动镜像文件 compase启动镜像文件 首先写入一个 docker_name.yaml 文件 docker compos

    2024年02月10日
    浏览(56)
  • ubuntu安装、使用docker超级详细的入门教程

    查看官网(https://docs.docker.com/get-docker),根据系统版本安装。 删除老版本 设置储存库 添加官方秘钥 授权docker并更新apt 安装最新docker 试运行 卸载应用 删除目录 默认路径 登录阿里云平台(支付宝就能登录) 找到容器镜像服务 控制台-产品与服务-弹性计算-容器镜像服务 找到镜

    2024年02月05日
    浏览(50)
  • Linux 环境下Docker将镜像打包导出到本地,上传至内网服务器(八)

    docker将镜像导出到本地,上传至内网服务器上 背景:在企业中往往出现了内网不能和外网相通,不能使用docker pull命令来拉取镜像,这个时候我们就可以考虑在有所需镜像的服务器上导出镜像,再将其上传到内网服务器上。 有两种方法,一种是通过容器,一种是通过镜像,其

    2024年02月13日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包