Docker镜像创建

1.commit方式镜像创建

docker commit 提交容器成为一个新的副本

docker commit -m "提交信息" -a="作者" 容器id 目标镜像名 : TAG

例如:

root@bogon \~# docker commit -a="ericliux" -m="add webapps" ffbd435c60fd test_tomcat:1.1

查看提交的镜像:

利用新提交的镜像创建新的容器:

该方法并不提倡,因为操作步骤比较繁琐,三步走方式:

  1. 运行容器

  2. 修改容器

  3. 将容器保存为新的镜像

该方法并不推荐,实际开发中可跟根据实际情况决定是否应用。

不推荐的原因:

纯手工方式,容易出错,每次都要进行着三步方式。也比较繁琐。效率低下。

安全性也较低,如果基础容器存在恶意程序,那么安全性也存在。

2.Dockerfile创建镜像

Dockerfile内容:

上图语句解释:

FROM 表示以ubuntu镜像为基础

RUN 表示当创建新容器时在执行两条命令为新容器系统更新&安装vim编辑工具

构建新镜像:

命令:docker build -t 新镜像名:Tag名 -f Dockerfile文件路径

// 该处表示当前路径下默认时Dockerfile,当前路径可以省略-f参数

复制代码
[root@bogon docker]# docker build -t ubuntu-vim .  
[+] Building 0.0s (6/6) FINISHED                                                                                                                         docker:default
 => [internal] load build definition from Dockerfile                                                                                                               0.0s
 => => transferring dockerfile: 154B                                                                                                                               0.0s
 => [internal] load metadata for docker.io/library/ubuntu:latest                                                                                                   0.0s
 => [internal] load .dockerignore                                                                                                                                  0.0s
 => => transferring context: 2B                                                                                                                                    0.0s
 => [1/2] FROM docker.io/library/ubuntu:latest                                                                                                                     0.0s
 => CACHED [2/2] RUN apt-get update && apt-get install -y vim                                                                                                      0.0s
 => exporting to image                                                                                                                                             0.0s
 => => exporting layers                                                                                                                                            0.0s
 => => writing image sha256:632e922b2191f3a01d047b28daf812423523799a8d78efbfc443d6fb2212a74a                                                                       0.0s
 => => naming to docker.io/library/ubuntu-vim                

Dockerfile:

内容:

复制代码
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "---end---"
CMD /bin/bash

利用创建镜像启动一个容器:

复制代码
[root@localhost docker]# docker run -it centos_liu:1.0 /bin/bash 
[root@13ce6928177c /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  volume01  volume02
[root@13ce6928177c /]# ll
bash: ll: command not found
[root@13ce6928177c /]# ls -l
total 0
lrwxrwxrwx.   1 root root   7 Nov  3  2020 bin -> usr/bin
drwxr-xr-x.   5 root root 360 Mar  8 07:56 dev
drwxr-xr-x.   1 root root  66 Mar  8 07:56 etc
drwxr-xr-x.   2 root root   6 Nov  3  2020 home
lrwxrwxrwx.   1 root root   7 Nov  3  2020 lib -> usr/lib
lrwxrwxrwx.   1 root root   9 Nov  3  2020 lib64 -> usr/lib64
drwx------.   2 root root   6 Sep 15  2021 lost+found
drwxr-xr-x.   2 root root   6 Nov  3  2020 media
drwxr-xr-x.   2 root root   6 Nov  3  2020 mnt
drwxr-xr-x.   2 root root   6 Nov  3  2020 opt
dr-xr-xr-x. 307 root root   0 Mar  8 07:56 proc
dr-xr-x---.   2 root root 162 Sep 15  2021 root
drwxr-xr-x.  11 root root 163 Sep 15  2021 run
lrwxrwxrwx.   1 root root   8 Nov  3  2020 sbin -> usr/sbin
drwxr-xr-x.   2 root root   6 Nov  3  2020 srv
dr-xr-xr-x.  13 root root   0 Nov  9 08:43 sys
drwxrwxrwt.   7 root root 171 Sep 15  2021 tmp
drwxr-xr-x.  12 root root 144 Sep 15  2021 usr
drwxr-xr-x.  20 root root 262 Sep 15  2021 var
drwxr-xr-x.   2 root root   6 Mar  8 07:56 volume01     # 生成镜像时挂载的目录
drwxr-xr-x.   2 root root   6 Mar  8 07:56 volume02  # 同上

上述通过Dockerfile构建的镜像,也能实现卷挂载,从而在使用镜像构建容器是,实现数据同步。

相关推荐
en.en..1 小时前
Linux系统编程:fcntl 与 ioctl
linux·运维·服务器
2601_965235482 小时前
快速了解docker
docker·容器·dubbo
荣合技术服务2 小时前
Codex 实战:用 AI 写运维脚本
运维·codex
李昊哲小课2 小时前
Deepin 25 上安装 Docker CE 实战记录
运维·docker·容器·deepin
pingglala2 小时前
ubuntu-nat模式不能上网解决方法
linux·运维·ubuntu
一技安身3 小时前
【信创】外网aarch64终端安装deepseek Ragflow 迁移至内网银河麒麟服务器
运维·服务器
考虑考虑4 小时前
ElasticSearch索引命令
运维·后端·elasticsearch
重生之我来学Python5 小时前
Docker套装的简介、安装、超级详细教程
linux·docker·容器·eureka·github
和裕5 小时前
光伏储能定制加强型瓦楞纸箱:降低组件运输隐裂率与售后损耗的核心价值
大数据·运维·网络·人工智能·算法
智购科技无人售货机工厂店5 小时前
2026自动售货机大屏交互设计原则:从信息层级到视觉动线的工程实践~YH
运维·python·单片机·嵌入式硬件·自动化·交互