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

相关推荐
Qt程序员13 小时前
从上电到系统就绪:ARM+U-Boot 嵌入式 Linux 启动流程
linux·运维·c++·内核·设备树·嵌入式·ram
Yupureki13 小时前
《MySQL数据库基础》8.复合查询
linux·运维·服务器·网络·数据库·mysql
上海云盾安全满满13 小时前
海外服务器使用高防CDN的优势
运维·服务器
眷蓝天13 小时前
Jenkins部署与配置
运维·jenkins
reikocao13 小时前
ubuntu系统源
linux·运维·ubuntu
Promise微笑13 小时前
SF6综合测试仪:国产替代SF6综合测试仪的精密化进阶与自主实践
运维·人工智能·安全
Mortalbreeze13 小时前
进程间通信 ---- System V 共享内存
linux·运维·服务器
Peace13 小时前
【运维Linux基础之高频Linux命令】
linux·运维
fiveym13 小时前
Debian 12 PXE 安装报错:Bad archive mirror 复合型故障排查全记录
运维·服务器·debian·php
a231212114 小时前
从零搭建Spring Ai多智能体后端应用
java·运维·微服务·多智能体·后端开发·spring ai