木灵鱼儿
阅读:933
docker 打包镜像
打包命令
docker commit # 这个和git的commit提交差不多
# 例子
docker commit -m="提交的描述信息" -a="作者" 提交的容器id 打包后的镜像名:tag版本号
注意:
实战测试
以之前的Tomcat为例,默认情况下官方在webapps
目录中是没有任何文件的,官方把默认的web文件放置在webapps.dist
目录下,我们就可以把文件搬过来,生成一个自己的镜像。
安装并搬运web文件
docker pull tomcat
# 下载完毕后运行
docker run -d -p 8080:8080 --name tomcat-commit tomcat
# 由于我们监听了端口,所以不会视为运行完毕,所以容器会一直运行
# 进入容器进行复制操作
docker ps # 获取容器id
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3259ead0b66 tomcat "catalina.sh run" 23 seconds ago Up 21 seconds 0.0.0.0:8080->8080/tcp tomcat-commit
# 进入容器
docker exec -it c3259ead0b66 /bin/bash
root@c3259ead0b66:/usr/local/tomcat# # 此时我们进入到了/usr/local/tomcat目录下
ls # 查看文件列表,目录文件正常
BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
# 复制文件
root@c3259ead0b66:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@c3259ead0b66:/usr/local/tomcat# cd webapps
root@c3259ead0b66:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
# 访问 http://localhost:8080/ 正常即可
此时我们对镜像的操作完毕
打包镜像
# 由于是进入到了镜像进行了操作,我们需要先退出
exit
# 打包
docker ps # 获取镜像id
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3259ead0b66 tomcat "catalina.sh run" 4 minutes ago Up 4 minutes 0.0.0.0:8080->8080/tcp tomcat-commit
docker commit -a="mulingyuer" -m="测试打包" c3259ead0b66 tomcat-web:1.0
sha256:fdb9bf2f9bed2f5e6f309eb355ab78134dd46086dec4473c6b9868b1935a42f2 # 此时打包成功
# 查看镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat-web 1.0 fdb9bf2f9bed 40 seconds ago 684MB
此时打包成功
查看镜像详情
docker inspect fdb9bf2f9bed
# 数据太多,截取层级数据展示
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:11936051f93baf5a4fb090a8fa0999309b8173556f7826598e235e8a82127bce",
"sha256:31892cc314cb1993ba1b8eb5f3002c4e9f099a9237af0d03d1893c6fcc559aab",
"sha256:8bf42db0de72f74f4ef0c1d1743f5d54efc3491ee38f4af6d914a6032148b78e",
"sha256:26a504e63be4c63395f216d70b1b8af52263a5289908df8e96a0e7c840813adc",
"sha256:f9e18e59a5651609a1503ac17dcfc05856b5bea21e41595828471f02ad56a225",
"sha256:832e177bb5008934e2f5ed723247c04e1dd220d59a90ce32000b7c22bd9d9b54",
"sha256:3bb5258f46d2a511ddca2a4ec8f9091d676a116830a7f336815f02c4b34dbb23",
"sha256:59c516e5b6fafa2e6b63d76492702371ca008ade6e37d931089fe368385041a0",
"sha256:bd2befca2f7ef51f03b757caab549cc040a36143f3b7e3dab94fb308322f2953",
"sha256:3e2ed6847c7a081bd90ab8805efcb39a2933a807627eb7a4016728f881430f5f",
"sha256:1dfa47712528a26d0e3ab0fc0abb36db2f803f681f13873d9756770f91e198a4"
]
}
可以看到,我们的层级有11层,如果我们再去看run时所使用的tomcat镜像层级,发现他只有10层,所以我们的操作被视为一个层Layers处理了。
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿 - 有梦就能远航站点。未经许可,禁止转载。
相关推荐
docker 网络
在linux中输入 ip addr可以看到有三个网络配置:lo 127.0.0.1 # 本机回环地址eth0 172.17.90.138 # 阿里云的私有IPdocker0 172.18.0.1 # dockerdocker会自行创建一个类似路由器一样的网络处理层,所有启动的容器都会自动分配一个基于172.18.0.1的ip地址,也正因为如此,我们容器之间是可以相互ping通的,因为都在同一个网关下。但也仅限于利用ip地址进行通信。原理每一个安装了Docker的linux主机都有一个docker0的虚拟网卡。这是个桥接网卡,使用了veth-pair技术! 每启动一个容器,linux主...

docker 本地保存和读取镜像
保存到本地docker save --help Usage: docker save [OPTIONS] IMAGE [IMAGE...] Save one or more images to a tar archive (streamed to STDOUT by default) Options: -o, --output string Write to a file, instead of STDOUT很简单的一个命令,只有一个-o表示镜像要输出的路径以及镜像名.tardocker images my-centos 1.0 fef5d23d0bd1 ...
docker 发布镜像
发布到DockerHub官方首先我们需要注册一个DockerHub的账号链接:https://hub.docker.com/signup注册完毕后我们本地登录PS C:\Users\13219\Desktop> docker login --help Log in to a Docker registry or cloud backend. If no registry server is specified, the default is defined by the daemon. Usage: docker login [OPTIONS] [SERVER] [flags...
docker dockerfile
什么是DockerFiledockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。构建步骤:编写DockerFile文件docker build 构建镜像docker run我们从docker的镜像页面点击版本号时,可以访问到github上dockerfile的文件。以centos为例,大概如下:FROM scratch ADD centos-7-x86_64-docker.tar.xz / LABEL \ org.label-schema.schema-version="1.0" \ org.label-schem...

docker 容器数据卷使用
什么是容器数据卷其作用就是方便容器与外部宿主机的文件交互,毕竟容器可以重启启动一个,但是数据只有一份啊,所以如果能将数据存在宿主机上,容器随便换,宿主机本身再定时备份,问题不就解决了。作用卷就是目录或者文件,存在一个或者多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过 Union File System , 提供一些用于持续存储或共享数据的特性:卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。特点数据卷可在容器之间共享或重用数据卷中的更改可以直接生效数据卷中的更改不会包含在镜像的更新中数据卷的生命周期一直...
docker 镜像讲解
整体文本引入b站UP主遇见狂神说的docker教程文档镜像是什么镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。镜像加载的原理UnionFS (联合文件系统)UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。...

docker 常用命令 作业
安装nginxdocker pull nginx # 下载完成后运行 docker run -d --name nginx1 -p 8080:80 nginx # 后台运行,容器命名为nginx1,将容器的80映射到主机的8080端口此时我们访问:localhost:8080就能看到Welcome to nginx!页面安装Tomcatdocker镜像里面的tomcat官方文档有这么一段命令:docker run -it --rm tomcat:9.0run可以直接自动下载对应的镜像,所以后面可以像pull那样接tag;-it是交互,--rm表示交互结束后,比如exit退出后,容器...

docker 常用命令
帮助命令docker version #版本信息 docker info #更加详细的系统信息 docker 命令 --help #万能命令文档地址:官方命令文档镜像命令docker images #查看所有镜像后面还可以接一些可选项Name, shorthandDefaultDescription--all , -a Show all images (default hides intermediate images)--digests Show digests--filter , -f Filter output based on conditions provided-...