docker镜像制作

docker镜像dockerfile常用参数

FROM    基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER  镜像维护者的姓名和邮箱地址
RUN   容器构建时需要运行的命令
CMD   指定一个容器启动时要运行的命令。
dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换。
EXPOSE   当前容器对外暴露的端口号
ENV   用来在构建镜像过程中设置环境变量
ADD   将宿主机目录下的文件拷贝到镜像里面并且ADD命令会自动处理URL和解压tar压缩包
COPY   COPY:类似ADD,拷贝文件和目录到镜像中,但是它只是拷贝,不会自动处理URL和解压tar压缩包。
ENTRYPOINT   指定一个容器启动时要运行的命令。
ENTRYPOIT的目的和CMD一样,都是在指定容器启动程序及参数。
VOLUME  容器数据卷,用于数据保存和持久化工作
USER  指定运行容器时的用户名或UID,后续的 RUN 也会使用指定用户
WORKDIR  指定在容器创建后,终端默认登录进来工作目录,一个落脚点
ONBUILD  当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后,父镜像的onbuild被触发。

制作docker镜像

示例:
FROM openjdk:8
#向镜像内添加文件到指定目录
ADD databuilder /databuilder
#运行命令修改时区,多行命令使用分隔符 \
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ; \
    chmod +x /databuilder/*.sh
#指定端口
EXPOSE 8281
#容器启动后默认进入的目录
WORKDIR /databuilder
#指定镜像生成容器后的目录输出到宿主机
#VOLUME /databuilder/logs
#启动服务,/bin/bash为容器添加前台进程,使得start.sh执行后容器不因进程结束退出
CMD  /bin/bash start.sh ; /bin/bash

制作镜像: docker build -t databuilder:latest .
-f : 参数可以用来指定Dockerfile文件,如果文件名为Dockerfile,可以不加-f Dockerfile
-t : 参数用来设置镜像的名字及标签
注意:最后有一个 . ,这个表示当前的构建环境的上下文,Dockerfile中的资源文件都默认成这个上下文的目录中查找,然后拷贝到容器当中去;也可以指定目录。
如果不带上 ”.“,或者指定的上下文目录不对,在编译时则会出现错误。

通过镜像启动容器

创建新容器:docker run -dit --restart=on-failure --name databuilder -v /opt/test/databuilder:/databuilder/logs --privileged=true -p 8281:8281 databuilder:latest
启动:docker start databuilder
停止:docker stop databuilder
删除容器:docker rm databuilder
删除镜像:docker rmi databuilder

--restart:
no,默认策略,在容器退出时不重启容器
on-failure,在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3,在容器非正常退出时重启容器,最多重启3次
always,在容器退出时总是重启容器
unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

将docker镜像打包为文件

容器打包为镜像:docker commit -a 提交人 -m “提交的描述信息” CONTAINERID 保存名称
例:docker commit -a MMM -m "test" ec3ea1a8b91c  test
注:-a  -m 参数可省略 docker commit ec3ea1a8b91c test

制作images包:docker save -o images安装包名称 images名称
例:docker save -o databuilder.tar.gz databuilder 或 docker save databuilder > databuilder.tar.gz

加载images包:docker load -i images安装包
例:docker load -i databuilder.tar.gz 或 docker load < databuilder.tar.gz

扩展--使用maven制作docker镜像

添加pom.xml依赖,制作:mvn docker:build -D maven.test.skip=true

注:mvn制作镜像时若已存在同名镜像,会制作失败,不会更新镜像,需要删除镜像后再制作

删除方式:docker rmi databuilder (databuilder为镜像名称)

            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <!--镜像名称-->
                    <imageName>databuilder</imageName>
                 <!--dockerfile文件的目录   -->
                    <dockerDirectory>docker</dockerDirectory>
                    <!--镜像tag-->
                    <imageTags>
                        <imageTag>latest</imageTag>
                    </imageTags>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>target</directory>
                            <include>databuilder*.tar.gz</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值