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

相关推荐
霁月的小屋10 分钟前
Docker 工程化实践(二):理解镜像分层与容器文件系统
运维·docker·容器
Android系统攻城狮15 分钟前
Linux PipeWire深度解析之pw_context_add_spa_lib调用流程与实战(二十九)
linux·运维·服务器·音频进阶·pipewire音频进阶
Dovis(誓平步青云)31 分钟前
《如何在CentOS 7中添加Plex官方软件源:解决文件磁盘难管理难题》
linux·运维·服务器·后端·生成对抗网络·centos
草莓熊Lotso42 分钟前
【Linux网络】深入理解Linux IO多路复用:select服务器完善、内核原理与poll实战
linux·运维·服务器·c语言·网络·c++
深念Y43 分钟前
MSYS2 是什么,要不要装?
运维·环境·开发·工具·msys2
网安老伯1 小时前
网络安全基础要点知识介绍(非常详细),零基础入门到精通,看这一篇就够了
运维·前端·网络协议·web安全·网络安全·职场和发展
迷茫中的自我1 小时前
GitHub Actions自动化运维实战:从CI/CD到云原生部署
运维·自动化·github
XH华1 小时前
Linux系统第二章:常见的Linux指令(上)
linux·运维·服务器
nVisual1 小时前
01-环境监控集成方案
运维·服务器·开发语言·网络·数据库·数据中心布线·综合布线管理软件
北龙云海11 小时前
案例分享 | 面向公网业务系统境内访问白名单配置实操方案
运维·网络·安全·网络安全·告警·数据泄露·入侵攻击