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构建的镜像,也能实现卷挂载,从而在使用镜像构建容器是,实现数据同步。

相关推荐
我是koten10 小时前
【运维杂谈】K8s遇到Terminating的名称空间删除不了怎么办?(解决方案亲测有效)
linux·运维·服务器·云原生·kubernetes·k8s·名称空间
修己xj18 小时前
服务器无法解析域名?一次 DNS 配置缺失的排查与修复
运维
xbzb1 天前
自定义 yum 软件源:Linux 上 createrepo,Windows 上纯 Python 也能造
linux·运维·windows·python·yum·createrepo
Android系统攻城狮1 天前
Linux FFmpeg深度解析之avio_open调用流程与实战(三十八)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
我不会起名字3221 天前
K8s Pod 反复重启 CrashLoopBackOff:从 exit code 到根因的 5 步排查
云原生·容器·kubernetes·k8s
瑞克-桑切斯1 天前
ERP 企业生产管理系统部署手册
运维·docker·云原生·容器·eureka
江屿风1 天前
【Git-组件】【Git入门:从文档灾难到版本掌控】流食般投喂
运维·笔记·git·组件·版本控制
我不会起名字3221 天前
K8s 节点磁盘打满导致 Pod 被驱逐:4 类占用与回收顺序
运维·kubernetes·k8s·diskpressure·evicted
雪落漂泊1 天前
Linux进程(五):进程地址空间篇
linux·运维·服务器
瑞克-桑切斯1 天前
docker mail商城
运维·docker·容器