基于已有的image,创建docker images

本文介绍了两种在Docker中创建自定义镜像的方法:一是通过在现有容器中安装服务并将其导出为新镜像;二是利用Dockerfile文件构建新镜像。文中详细解释了每种方法的具体步骤,并提供了实用的小技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我们得知道怎么下载镜像:

docker search 镜像名称                                         //电脑联网情况下在docker HUB里面查找镜像
docker pull 仓库服务器/仓库/镜像名称:标签         //通过查询到的镜像信息来下载镜像

第一个方法:在运行的container中安装service然后导出为image

整体思路:运行一个容器,在运行容器的基础上添加需要的服务,然后导出为新的images。

[root@localhost ~]#docker run -it docker.io/centos     //根据image运行容器
[root@845e8472f250 /]#                                 //运行容器的ID号
[root@845e8472f250 /]# yum -y install *****            //安装一些服务
[root@845e8472f250 /]# exit

命令中 i 、t 的参数可以docker run –help查看

现在的容器很明显已经被我们改动了,然后通过以下命令新建images:

docker commit -m “Description” -a “users <users@163.com>” 845e8472f250 centos:v1

-m:来指定提交的说明信息
-a:指定更新的作者和邮箱
命令中的一串数字是刚才运行container’s ID
数字后面的是新建镜像的repository:tag

Complete

第二个方法:基于dockerfile文件来创建新的image

整体思路:新建一个dockerfile,文件名必须是dockerfile,写入命令。创建完使用docker build命令来创建新image。

dockerfile文件中基本分为4部分:
1.注释部分
2.基础镜像地址
3.维护者信息
4.命令部分

mkdir -p /docker/httpd
cd /docker/httpd

vim  dockerfile                         //这里文件名必须为dockerfile
#This is http service                   //注释部分,类似于文件说明
FROM docker.io/centos:latest           //以哪个image作为基础
MAINTAINER user <user@163.com>          //维护者的信息
RUN yum -y install apr apr-utils        //在创建镜像中运行以下命令
RUN yum -y install httpd

根据dockerfile创建新images:

docker build -t=centos:v2 /docker/httpd

-t:添加镜像name:tag信息
后面的/docker/httpd路径为dockerfile的绝对路径,也可在/docker/httpd的当前路径下使用 “.”来代替绝对路径

说明:dockerfile中的指令被一行一行的执行,每执行完一行命令都要创建一个新的容器。当所有命令都执行完,会返回一个镜像ID,中间步骤所产生的所有容器ID都会被清除。一个镜像不能超过127层

Complete

小tips:
基于已有image进行创建的时候,可能会因为下载国外网站的镜像很慢。如果你在本地有镜像,可以通过以下命令本地导入镜像,这里再贴出导出镜像的命令

docker load -input 镜像名称:标签                          //本地导入镜像
docker save -output  创建归档文件名 镜像名称:标签           //本地导出镜像
<think>嗯,用户想知道docker imagesdocker ps的区别和用法。首先,我需要确认这两个命令各自的作用。根据引用[3],docker images是管理镜像的命令,而docker ps是查看运行中的容器。镜像和容器是Docker的两个核心概念,镜像相当于模板,容器是运行实例。 然后,用户可能需要具体的用法示例。docker images列出本地存储的镜像,包括标签、大小等信息,而docker ps显示正在运行的容器,加上-a选项可以查看所有容器。比如,docker images会显示REPOSITORY、TAG、IMAGE ID等,而docker ps会显示容器ID、状态、端口映射等。 还要注意他们的参数区别,比如docker images支持的参数有-a、--quiet等,而docker ps常用的有-a、-f过滤等。应用场景方面,docker images在管理镜像时使用,比如删除旧镜像前查看;docker ps在监控容器状态时使用,比如检查哪些容器在运行。 可能需要检查引用内容是否有更详细的信息,比如引用[3]提到docker container --help可以查看容器命令,而docker images属于镜像管理。确保回答准确区分两者的不同,并结合用户提供的引用资料。最后,生成相关问题时要围绕镜像和容器管理,比如如何清理镜像、查看容器日志等。</think>### Docker中`docker images`与`docker ps`的区别及用法 #### 1. **核心概念差异** - **`docker images`** 用于管理**镜像(Image)**,镜像是容器运行的静态模板,包含应用程序及其依赖环境[^3]。例如: ```bash $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 2d21d8430733 2 weeks ago 187MB ``` - **`docker ps`** 用于查看**容器(Container)**状态,容器是镜像的动态运行实例[^3]。例如: ```bash $ docker ps -a CONTAINER ID IMAGE COMMAND STATUS PORTS a1b2c3d4e5f6 nginx "nginx -g..." Exited (0) 0.0.0.0:80->80/tcp ``` --- #### 2. **命令参数对比** | 命令 | 关键参数 | 功能说明 | |-----------------|---------------------------|----------------------------------| | `docker images` | `-a`(显示所有镜像,包括中间层)<br>`--quiet`(仅显示镜像ID) | 列出本地镜像仓库内容 | | `docker ps` | `-a`(显示所有容器,包括已停止的)<br>`-f`(过滤条件,如`status=exited`) | 监控容器运行状态[^3] | --- #### 3. **典型应用场景** - **镜像管理** 使用`docker images`可快速检查镜像版本(如验证是否下载了特定版本的Redis镜像): ```bash $ docker images redis REPOSITORY TAG IMAGE ID SIZE redis 7.0 5d3b2e5f3d6a 113MB ``` - **容器调试** 通过`docker ps -a`查找异常退出的容器,进而查看日志: ```bash $ docker logs a1b2c3d4e5f6 ``` --- #### 4. **关联操作** - **删除未使用的镜像**(需先清理依赖的容器): ```bash $ docker image prune -a ``` - **批量停止容器**: ```bash $ docker stop $(docker ps -q) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值