问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么制作docker镜像 有多大

发布网友 发布时间:2022-02-26 21:29

我来回答

2个回答

懂视网 时间:2022-02-27 01:51

产品型号:Thinkpad E15

系统版本:centos8

docker镜像制作方法

Docker Image 有两种制作方法

方法1:docker commit   #将容器实例的当前状态保存成image镜像

方法2:docker build  #使用 Dockerfile 文件制作 image

主介绍docker commit  用法。

实战:使用docker commit生成一个apache docker镜像

1、创建一个安装好apache web服务器的容器镜像

[root@xuegod63 ~]# docker run -it centos:latest /bin/bash

[root@1d3563200047 /]# yum -y install  httpd   #在 container 中安装 apache 软件包

[root@1d3563200047 /]# exit 

2、查看现有的images 镜像列表

[root@xuegod63 ~]# docker images   #查看刚看退出的docker实例。

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

centos    latest              196e0ce0c9fb        13 days ago         196.6 MB注:当前只有一个centos镜像。

3、根据容器当前状态做一个image镜像,创建一个安装了apache工具的centos镜像

语法: docker commit

例:

查看刚才安装了apache软件包的的docker容器ID:

[root@xuegod63 ~]# docker ps -a

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES1d3563200047        centos              "/bin/bash"              10 minutes ago      Exited (0) 6 minutes ago                          tender_joliot

以这个安装了apache软件包的docker容器实例,创建一个镜像。

[root@xuegod63 ~]# docker commit 1d3563200047  centos:apache

sha256:e5917c01599c70d0680beeb35f6df98889dd22106399efd6907d956d8a943242

[root@xuegod63 ~]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

centos              apache              4fd446f1034a        16 seconds ago      269MB

centos              latest              0f3e07c0138f        5 weeks ago         220MB

总结:

1、创建一个安装好apache web服务器的容器镜像

2、查看现有的images 镜像列表

3、根据容器当前状态做一个image镜像,创建一个安装了apache工具的centos镜像


热心网友 时间:2022-02-26 22:59

方法/步骤
在使用Docker的过程中,我们除了从Docker Hub上下载已经做好的镜像,很多时候需要我们自己制作镜像。下面想在这个文章中说明一下镜像的制作方法。

制作镜像的方式主要有两种:

通过docker commit 制作镜像
通过docker build 制作镜像
这两种方式都是通过改进已有的镜像来达到自己的目的。制作基础镜像,会在另外一篇文章“从零开始制作基础镜像”中介绍。

docker commit
docker commit 是往版本控制系统里提交一次变更。使用这种方式制作镜像,本质上是运行一个基础镜像,然后在基础镜像上进行软件安装和修改。最后再将改动提交到版本系统中。

选择基础镜像
基础镜像的选择要结合自己的需求。可以选择已有的应用镜像来改造,也可以选择Ubuntu,Debian,OpenSuse这类基础系统镜像
我们以ubuntu为例子来说明
步骤1:运行ubuntu 镜像
docker run -i -t ubuntu /bin/bash
步骤2:安装软件并修改软件配置, 比如:安装apache2
apt-get -yqq update
apt-get -y install apache2
安装完成后,对apache2进行配置和修改
步骤3:退出docker并保存镜像
使用“exit”命令退出容器
运行docker comit 命令, 进行保存
docker commit 61412230ae46 own-apache2

docker commit 命令参数说明

命令格式
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS:

-a, --author= 提交的镜像作者
-c, --change=[] Apply Dockerfile instruction to the created image, 没用过
-m, --message= 提交时的说明文字
-p, --pause=true 在commit时,将container 暂停

CONTAINER:

可以使用container 的名字或者ID

REPOSITORY

指定镜像仓库,上述例子中,指定的是本地存储
可以指定远程镜像仓库,如docker hub。也可自建仓库来存放image

TAG:

镜像TAG

docker build
使用docker build创建镜像需要编写Dockerfile.

步骤:

编写自己的Dcokerfile
运行docker build 命令打包镜像

仍然以apache打包为例子。以下是Dockerfile的例子

FROM ubuntu:latest
MAINTAINER sky

#Add 163 mirror for apt
ADD sources.list /etc/apt/sources.listADD .bashrc /root/.bashrcENV DEBIAN_FRONTEND noninteractive# PackagesRUN rm -rf /var/lib/apt/listsRUN apt-get update -q --fix-missingRUN apt-get -y upgrade#ubuntu wwwRUN apt-get install -y apache2 curl libapache2-mod-php5 php5-curl php5-gd php5-mysql rsync mysql-client -qqRUN apt-get autocleanRUN rm -rf /var/lib/apt/lists/*# Setup environmnt for apache's init scriptENV APACHE_CONFDIR /etc/apache2ENV APACHE_ENVVARS $APACHE_CONFDIR/envvarsENV APACHE_RUN_USER www-dataENV APACHE_RUN_GROUP www-dataENV APACHE_RUN_DIR /var/run/apache2ENV APACHE_PID_FILE $APACHE_RUN_DIR/apache2.pidENV APACHE_LOCK_DIR /var/lock/apache2ENV APACHE_LOG_DIR /var/log/apache2ENV LANG CRUN mkdir -p $APACHE_RUN_DIR $APACHE_LOCK_DIR $APACHE_LOG_DIRRUN find "$APACHE_CONFDIR" -type f -exec sed -ri ' \ s!^(\s*CustomLog)\s+\S+!\1 /proc/self/fd/1!g; \ s!^(\s*ErrorLog)\s+\S+!\1 /proc/self/fd/2!g; \' '{}' ';'EXPOSE 80CMD ["apache2", "-DFOREGROUND"]

编辑完成后,在与Dockerfile同一目录下运行docker build 命令

docker build -t apache-img .

如果没有命令出错,docker build会持续运行直到镜像创建完成
而创建的过程本质上是运行一个镜像,然后在镜像中按序执行在Dockerfile中的命令,直到执行结束。
如果中间有命令执行失败,镜像创建会停止。这时就需要看log,并修改Dockerfile,然后再次执行docker build

注:两种镜像创建方式的对比:

docker commit
docker build

难度相对容易,适合新手和对Linux不熟悉的用户相对难,要求有一定的linux和脚本基础知识

文档化
文档化在通过其他文件来实现
Dockerfile本身就是比较好的文档,可读和可理解性比较强。也可配合其他文档带来详细说明

升级,维护
后续升级和维护麻烦,需要再次运行镜像并对内部软件进行升级或者安装新软件增加特性
后续升级和维护会相对简单,可以直接在dockerfile中更改并增加新特性

具体选择哪种方式来制作镜像需要结合实际情况来选择

Dockerfile 关键字详解

FROM

FROM用来指定基础包。在上面的例子中,基础包用的是ubuntu。

MAINTAINER

镜像作者信息,或者维护人员信息

ADD

将文件拷贝到Container内文件系统对应的路径
格式 ADD <src file> <dst file>
所有拷贝到Container中的文件和文件夹权限为0755,uid和gid为0
如果需要修改owner用户或者权限,需要使用RUN进行修改
ADD文件,文件路径要在docker build<PATH>中指定的<PATH>下

RUN

创建镜像时执行

ENV

用来设置环境变量

EXPOSE

Container内部服务开启的端口
主机上如果要使用,还需要在启动Container时,做host-container的商品映射
使用EXPOSE后,一些自动化布署工具可以直接读取这个信息,自动进行端口映射
EXPOSE可以有多条,指定多个端口

WORKDIR

切换工作目录,可进行多次切换(相当于cd命令)
切换目录对RUN,CMD,ENTRYPOINT有效

USER

执行container的用户,如未指定,则默认使用root用户

ENTRYPOINT

Container启动时执行的命令,一个Dockerfile中只能有一条ENTRYPOINT
ENTRYPOINT没有CMD的可替换特性

CMD

Container 启动时执行的命令,一个Dockerfile 中只能有一条CMD命令,如果有多条则只执行最后一条CMD
如果有多条命令希望在启动后执行,可以考虑使用shell 脚本
与ENTRYPOINT的区别
CMD的主要用途是为可执行的container提供默认命令
CMD在运行时是可替换的,比如
在ubuntu中,CMD指定的是/bin/bash。默认情况下运行ubuntu,container中的/bin/bash会被执行
如果使用docker run指定运行命令,那CMD会被替换掉
如:docker run ubuntu /bin/echo "this is a echo". 这时,container 启动后会执行echo 而不是/bin/bash了
ENTRYPOINT是不会替换的,如果在ubuntu镜像中加入ENTRYPOINT,那ENTRYPOINT在启动后会先被执行
CMD可以为ENTRYPOINT来提供参数
例子:

FROM ubuntu:14.10

ENTRYPOINT ["top", "-b"]
CMD ["-c"]

VOLUME

语法:VOLUME [PATH]
VOLUME指令用来设置一个挂载点,可以用来让其他容器挂载以实现数据共享或对容器数据的备份、恢复或迁移
可以将本地文件夹或者其他Container的文件夹挂载到Container中
搭建自己的Docker镜像和私有仓库

1. 选择服务器:建议购买一台海外云主机,以避免各种麻烦。需要注意的是,云主机硬盘空间通常只有40-60G,而Docker镜像会逐渐累积,导致体积增大。请尽量避免多人共用私有仓库或通过团队私有仓库下载非工作需要的镜像。2. 安装Docker:购买云主机后,如果有预装nginx和docker,建议删除,然后按照以下教程重新...

科瑞斯达新建工厂

科瑞斯达公司宣布新建现代化工厂,标志着其在智能制造领域的又一重要布局。该工厂将融合最前沿的生产技术与智能化管理系统,大幅提升生产效率与产品质量。项目落成后,不仅将强化科瑞斯达的产能基础,更将助力其在行业内持续引领创新潮流,为客户提供更加卓越的产品与服务。此举体现了科瑞斯达对未来发展的坚定信心与长远规划。科瑞斯达新建工厂自创建以来,坚持以技术研发为驱动,专注于提供工业领域人工智能和数字化解决方案,基于丰富实践,利用大数据、边缘计算、物联网、工业AI赋能工业软件的研发与应用,协助各行业企业建立持续性竞争优势。团队多来自于世界500强企...

怎么创建docker镜像

创建Docker镜像的步骤如下:1. 使用Dockerfile构建镜像。Dockerfile是一个文本文件,其中包含了一系列创建镜像所需要的指令和配置。通过编写Dockerfile,可以定义镜像的基础镜像、环境变量、暴露的端口、安装的软件包等。然后,使用Docker命令构建镜像。详细解释:编写Dockerfile Dockerfile是创建Docker镜像的核心...

一篇文章帮你搞定 Docker 本地镜像仓库构建-harbor,建议收藏!

操作演示 重启docker服务:systemctl daemon-reload, systemctl restart docker添加harbor到hosts文件:编辑hosts文件并配置DNS解析使用docker登录harbor:docker login admin操作私有仓库:拉取和上传镜像,如:docker pull 10.0.0.201/test/tomcat:v1, docker push 10.0.0.201/test/tomcat:v1清理镜像:...

Docker 四种制作镜像方式

Dockerfile方式:官方推荐的自动化构建工具,通过指令设置系统、安装软件等,便于维护和分享,但构建速度较慢,适合稳定迭代。 导入文件方式:将本地文件打包成镜像,结构清晰,便于管理,但镜像体积大,注意权限问题。 commit命令:快速便捷,直接操作容器,但可能导致版本管理混乱,不推荐用于正式部署。

linux+jdk8+opencv341最轻最小docker基础镜像制作

以下是制作过程的简化版:1. 开始时,使用openjdk:8-jre-alpine作为基础镜像,但由于需要OpenCV,所以考虑增加它。但是,直接在alpine基础上添加OpenCV会导致镜像过大,体积超过85M。2. 为解决此问题,我们尝试了从CentOS7开始,但体积达453M,于是放弃了。不过,这个过程中我们学会了如何在CentOS7上安装...

golang 打包到docker运行最小镜像

1. 首先,编写一个简单的 Go 程序,并使用 Goreleaser 或手动交叉编译生成可执行文件。2. 在本地创建 Dockerfile,确保指定正确的可执行文件路径(如 `COPY golang_app /apps/golang_app`)。3. 运行 `docker build -t go_docker_demo1:v1.1 .` 命令构建镜像,生成的镜像大小仅有 17MB。4....

创建Python Docker 镜像的完整指南

准备工作首先,确保安装Docker。若未安装,依操作系统指引安装。然后,在工作目录创建用于构建镜像的目录,并在其中开发Python应用文件。编写Python应用,如创建app.py文件,添加简单代码。接着,编写Dockerfile,指引Docker构建镜像。在工作目录创建编辑Dockerfile,指示构建过程。Dockerfile步骤包括:选择基础镜像...

docker构建的镜像的三种方式

构建Docker镜像有三种常见方式,每种都有其独特的优势和适用场景。首先,容器提交允许快速创建镜像,适合临时或实验性任务,但不推荐频繁使用,因为它缺乏变更追踪的透明度。其次,Dockerfile构建提供了更精确和可重复的镜像构建过程,通过编写Dockerfile,可以定义镜像构建的详细步骤,比如基于FastAPI的Hello World...

搭建Docker镜像仓库

搭建Docker镜像仓库的步骤如下:首先,如果你之前已经配置过阿里云Docker镜像,可以跳过这一步;如果没有,需要进行配置。配置的重点是使Docker信任你的私服,通常私服使用http协议,因此需要将你的IP地址添加到信任列表中。为了实现这个,你需要创建一个新的配置文件,将相关命令写入其中。接着,利用Docker...

如何使用Docker构建多平台镜像?

首先,理解多平台构建原理,Docker借助BuildKit在"docker-container"驱动的Buildx实例中,为每个目标平台(如amd64和arm64)启动独立容器进行构建,生成的镜像和Manifest List在Buildx实例中存储。准备工作必不可少,确保Linux内核版本&gt;=4.8,执行命令行`docker run --privileged --rm tonistiigi/binfmt --...

制作docker镜像centos dockerfile制作镜像 如何制作docker镜像 自己制作docker镜像 docker基础镜像制作 docker镜像制作工具 docker基于当前系统制作镜像 docker制作mysql镜像 docker制作镜像经典案例
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
新浪微博的气泡是怎么设置的? ...去驾校练车,一直躲避,现在又快两年了,科二还没考,怎么办呀?_百度知 ... 梦见给前任剪头发是什么意思,梦见前男友在理发 梦见前女友变短发的预兆 手机能不能无线接鼠标键盘,这样玩游戏多爽!!特别是玩穿越火线,这是一个... 长虹电视能不能用手机控制? PS怎么放大眼睛ps怎么放大眼睛画面 edwin在日本什么档次 梦见和讨厌的人度蜜月是什么意思 国内10大云服务器厂商,你用过几个? 如何把微信上的兔斯基表情包保存到本地? 如何构建docker镜像 如何制作自己的docker镜像 如何制作docker镜像 请教高手,如何在EXCEL中自动换行求和, 在excel中如何自动求和,如何隔行求和,请教高手,谢谢 docker下容器怎么执行命令? docker 怎么启动容器的所有 如何启动一个已经创建的docker容器,并进入SHELL对其操作 docker进入容器之后如何退出呢? 如何进入Docker容器 台式电脑无线投屏到电视,并分屏 docker进入容器 之后怎么退出 如何打开多个终端进入Docker容器? 如何 进入docker容器 镜像目录 如何进入到Docker容器内部 怎么看docker 是否安装好了 mac安装docker 还是虚拟机 韩国购物网代购一般在哪个网站买? 为什么ubuntu16.04一直没法成功安装docker 怎么制作docker镜像并上传 微信7.0.12怎么把表情保存到本地相册? 如何制作docker nginx镜像 如何制作nfs docker 镜像 如何将应用打包成为 Docker 镜像 如何建立你自己的Docker镜像 在制作Docker镜像过程中,能直接使用已有的docker镜像吗? 怎么在服务器上制作docker镜像 如何制作一个定制的 PHP 基础 Docker 镜像 如何制作一个定制的 Python 基础 Docker 镜像 如何制作一个精简的docker镜像 如何使用Dockerfile构建镜像 Docker如何创建镜像 怎么制作tomcat和nginx mysqldocker镜像 如何制作 Python 的 Docker 镜像 docker 如何删除镜像及其下的所有容器? 如何删除运行的docker镜像 删除Docker Registry里的镜像怎么那么难 如何删除docker register镜像 docker仓库的镜像怎么删除