编写Dockerfile
可以去dockerhub看看官方镜像的Dockerfile作为参考(每个镜像界面上都有Supported tags and respective Dockerfile links)
有很多指令
#常用的FROMMAINTAINERRUN #后面放命令ADD #压缩包放进去会自动解压WORKDIR #工作目录VOLUME #数据卷,可以指定多个["",""]EXPOSE #暴露端口CMD #容器启动时要执行的命令,只有最后一个生效,会被覆盖ENTRYPOINT #容器启动时要执行的命令,可以追加命令,不会被覆盖ONBUILD #触发器COPY #类似ADDENV #构建的时候设置环境变量
#查看历史命令docker history [镜像id]docker history mysql:5.7 --no-trunc
FROM centosMAINTAINER yangruilinENV MYPATH="/usr/local"WORKDIR $MYPATHRUN yum -y install vimRUN yum -y install net-toolsEXPOSE 80CMD echo $MYPATHCMD ["ls","-a"]#其实只执行了ls -a
docker build构建
#注意最后有一个点docker build -t test-0515:v0.1 .#-f 指定Dockerfile位置,可以不叫“Dockerfile”docker build -f /home/docker-test-volume/Dockerfile -t my-centos:v0.1 .
CMD和ENTRYPOINT命令的区别
使用entrypoint,体会一下所谓的可以拼接
以及可覆盖和不可被覆盖
FROM centosMAINTAINER yangruilinENV MYPATH="/usr/local"WORKDIR $MYPATHENTRYPOINT ["ls","-a"]
docker build -f /home/docker-test-volume/Dockerfile2 -t my-centos:v0.2 .
测试一下
docker run my-centos:v0.1docker run my-centos:v0.1 -ldocker run my-centos:v0.2docker run my-centos:v0.2 -l
Dockerfile制作tomcat镜像
视频p30
发布自己的镜像
dockerhub注册账号
# 1 登录docker login -u [用户名] -p [密码]#提示Login Succeeded表示成功# 2 tag 重命名# 不tag的话,会推到docker.io/library/[镜像名],但是会被拒绝docker tag [原名] [用户名]/[镜像名]:[tag]# 3 push,会推到docker.io/[用户名]/[镜像名]docker push [新名]
一个小结
命令的总结:

