Docker镜像制作

一、容器转为镜像

docker commit 容器id 镜像名称:版本号

docker save -o 压缩文件名称 镜像名称:版本号

docker load -i 压缩文件名称

注意:容器原本挂载的文件不会被打包到镜像中

示例

bash 复制代码
[root@docker_dev ~]# docker ps -a 
CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS                      PORTS     NAMES               c_nginx
b4432a89096e   tomcat      "catalina.sh run"        17 hours ago    Exited (143) 16 hours ago             c_tomcat
#用c_tomcat容器制作一个1.0版本的镜像
[root@docker_dev ~]# docker commit b4432a89096e c_tomcat_imgae:1.0 
sha256:6d650eb0174fba52ff49228ec3424fa5c971ee6c1e9a120bffcfc1f0f4c04ba9
#这块打包后,我会把原本镜像删除方便等会load验证
[root@docker_dev ~]# docker images
REPOSITORY       TAG       IMAGE ID       CREATED              SIZE
c_tomcat_imgae   1.0       6d650eb0174f   About a minute ago   537MB
[root@docker_dev ~]# docker save -o tomca_image.tar c_tomcat_imgae
[root@docker_dev ~]# docker load -i tomca_image.tar 
cc3197f6854c: Loading layer [==================================================>]  127.8MB/127.8MB
Loaded image: c_tomcat_imgae:1.0
[root@docker_dev ~]# docker images
REPOSITORY       TAG       IMAGE ID       CREATED          SIZE
c_tomcat_imgae   1.0       6d650eb0174f   10 minutes ago   537MB

二、Dockerfile制作镜像

指令:

FROM:基础镜像
LABLE:镜像描述信息
COPY:从 Docker 宿主机复制文件至创建的新镜像文件

复制目录的时候,目录下面的文件会被递归复制过去

ADD:类似于 COPY 指令,ADD 支持 tar 文件和 URL 路径
WORKDIR:用于为 Dockerfile 中 RUN、CMD、ENTRYPOINT、COPY、ADD 指定设定工作目录
VOLUME:数据卷
EXPOSE:为容器打开指定的监听端口以实现与外部通信
ENV:用于为镜像定义所需的环境变量,可以被 Dockerfile 文件中其他命令调用
RUN:docker build 镜像构建的时候需要执行的 shell 命令
CMD:启动容器指定默认要运行的程序或命令
ENTRYPOINT:类型 CMD 指令的功能,用于为容器指定默认运行程序或命令

注意CMD 和 ENTRYPOINT 同时存在 Dockerfile 中时,CMD的值会当做参数传递给ENTRYPOINT

HEALTHCHECK:健康检查
SHELL:指定运行 RUN、CMD、ENTRYPOINT 的 shell 程序
STOPSIGNAL:给主进程发送信号
ARG:docker build 过程中的参数
ONBUILD:用于在 Dockerfile 中定义一个触发器

示例:

搭建一个centos7的基础安装环境,并且安装vim

bash 复制代码
[root@docker_dev docker-files]# cat centos-dockerfile-vim 
FROM centos:7
run echo "nameserver 8.8.8.8" > /etc/resolv.conf \
    echo "nameserver 114.114.114.114" >> /etc/resolv.conf \
    rm -f /etc/yum.repos.d/*.repo \
    curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo \
    sed -i 's#http://mirrors.aliyuncs.com#https://mirrors.aliyun.com#g' /etc/yum.repos.d/CentOS-Base.repo \ 
    sed -i 's#http://mirrors.cloud.aliyuncs.com#https://mirrors.aliyun.com#g' /etc/yum.repos.d/CentOS-Base.repo \
    yum clean all \
    yum makecache fast \
    yum install -y vim
workdir /usr
cmd /bin/bash
相关推荐
Brilliantwxx1 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
BullSmall1 小时前
第三方软件安全-Dependency‑Track Docker 部署
安全·docker·容器
richdata2 小时前
商品数字化不是先做大数据,而是先把数据变成可用决策
大数据·运维·数据治理·商品数字化·智能补货·ai商品决策
harmony&2 小时前
Docker 容器技术从入门到实战:容器、网络、存储与监控全解析
docker·云原生
weixin_416667963 小时前
【无标题】
运维·服务器·网络
一池秋_3 小时前
arm低配linux设备,桌面应用冷启动提速方法
linux·运维·arm开发
上海云盾-小余5 小时前
流量攻击复盘:为什么 WAF 完好,业务依旧瘫痪
运维·服务器·网络
IT大白鼠5 小时前
Docker 私有仓库管理:Harbor 企业级仓库搭建与镜像全生命周期管理
运维·docker·容器
戴西软件5 小时前
戴西iDWS.3DViz Suite数据轻量化可视化软件,从传统桌面软件向云端协同的重大突破
大数据·运维·网络·人工智能·机器学习·3d
我命由我123456 小时前
Linux - Linux/POSIX 路径斜杠折叠规则
linux·运维·服务器·android studio·android jetpack·android-studio·android runtime