Docker打包镜像的两种方式

news/2024/8/30 23:07:44 标签: docker, image, linux

前言

Docker镜像是一个特殊的文件系统,既提供了运行时所需的程序、库和资源,还提供了相应的配置参数,只是不包含动态数据。我们可以将任何我们的软件产品打包成镜像,以供服务器能够用Docker直接快速安装并部署运行。

System:Linux(CentOS 7)
Docker Version:19.03.12

构建Image

通过Dockerfile

通过编写Dockerfile文件,Dockerfile示例如下:

FROM ubuntu:18.04
COPY . /app
RUN make /app
CMD python /app/app.py

每条指令创建一层:

  • FROMubuntu:18.04Docker镜像创建一个图层。
  • COPY从Docker客户端的当前目录添加文件。
  • RUN通过make构建您的应用程序。
  • CMD指定在容器中运行什么命令。

运行镜像生成容器时,可以在基础层之上添加一个新的可写层(“容器层”)。对运行中的容器所做的所有更改(例如写入新文件,修改现有文件和删除文件)都将写入这层薄的但是可写的容器层。

然后执行命令docker build生成镜像,如下

docker build -t myUbuntu:v1.0 .

docker_commit_36">通过docker commit

当我们觉得某个运行中的容器特别好用,就想把它保留起来,这时候我们可以通过docker build指令将这个运行中的容器构建成一个镜像,然后在其他电脑上也可以使用了;

还有就是针对容器进行改造,通过把一个运行中的容器通过增删改文件或者安装卸载一个程序改造成自己心仪的容器,然后通过命令行生成对应的镜像文件;

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS说明:

  • -a :提交的镜像作者;
  • -c :使用Dockerfile指令来创建镜像;
  • -m :提交时的说明文字;
  • -p :在commit时,将容器暂停。

镜像的用户权限

这里强调一个点,所有的镜像在构建的时候如果在Dockerfile不指定uid,那么运行成容器的时候都会默认生成用户权限为uid为 0,其实就是相当于root权限。

就会出现你以普通用户运行的一个挂载目录的容器,它操作过的目录,你在宿主机会无法操作的问题;


http://www.niftyadmin.cn/n/994277.html

相关文章

稍有迷茫

耳边音乐响动,却丝毫没有削弱我迷茫的感觉。此刻我宁愿让自己忙起来,疯狂的写CODE,让自己无暇顾及思想上的迷茫。今天因为是在本应该放假的时间里上班, 所以小卖部门都关了,烟没了,坐在公司里总感觉心神不定…

FragmentTabHostTopDemo【FragmentTabHost固定宽度且居中】

版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 使用FragmentTabHost实现顶部选项卡(居中且宽度非全屏)展现。 备注:该Demo主要是演示FragmentTabHost的一些设置和部分功能,实际中需要…

闭包

本质与解析 当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行。 function outter() {var a 1function inner() {console.log(a)}return inner } var accept outter() accept() // 1 在此例中,将内…

Springboot多模块依赖开发

前言 有关Spring-boot多模块依赖开发,针对使用springboot架构的java程序开发,为了解耦合,需要把各个功能模块给封装起来并区分开,进行模块化,减少重复性的工作; 项目地址:https://github.com/v…

Sybase数据库在UNIX、Windows上的实施和管理 集中讨论2:这本书的目录

《Sybase数据库在UNIX、Windows上的实施和管理》讨论42:这本书的目录 文平 首先,谢谢大家关注这本书。同志们众多邮件要求我提供本书的目录结构,其实该目录在当当网、亚马逊都有,我这里不厌其烦,再发一边,…

有关EMQX桥接的配置工作

前言 桥接是一种连接多个 EMQ X 或者其他 MQTT 消息中间件的方式。不同于集群,工作在桥接模式下的节点之间不会复制主题树和路由表。桥接模式所做的是: 按照规则把消息转发至桥接节点;从桥接节点订阅主题,并在收到消息后在本节点…

模拟鼠标键盘操作,含硬件模拟技术

模拟鼠标键盘操作,含硬件模拟技术。键盘是我们使用计算机的一个很重要的输入设备了,即使在鼠标大行其道的今天,很多程序依然离不开键盘来操作。但是有时候,一些重复性的,很繁琐的键盘操作总会让人疲惫,于是…

Throwable相关知识1

Throwable是所有异常Exception和错误Error的祖先 Throwable是java.lang包中一个专门用来处理异常的类。它有两个子类,即Error 和Exception,它们分别用来处理两组异常。 Error用来处理程序运行环境方面的异常,比如,虚拟机错误、装载…