DockerFile

dockerfile介绍

dockerfile是用来构建dokcer镜像的文件!命令参数脚本
构建步骤︰
1、编写一个dockerfile 文件
2、docker build构建成为一个镜像
3、docker run运行镜像
4、docker push发布镜像(DockerHub、阿里云镜像仓库)
查看一下官方是怎么做的

image.png
image.png
很多官方的镜像都是基础包,很多功能没有。
我们也可以制作自己的镜像

dockerfile构建过程

基础知识:
1、每个保留关键字(指令)都是必须是大写字母
2、执行从上到下顺序执行
3、#表示注释
4、每一个指令都会创建提交一个新的镜像层,并提交
image.png
dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单!Docker镜像逐渐成为企业交付的标准,必须要掌握

步骤∶开发,部署,运维。。。缺一不可

DockerFile :构建文件,定义了一切的步骤,源代码

Dockerlmages:通过DockerFile构建生成的镜像,最终发布和运行的产品!Docker容器︰容器就是镜像运行起来提供服务器

DokcerFile指令

FROM #基础镜镜像,一切从这里开始构建
MAINTAINER #镜像是谁写的,姓名+邮箱
RUN #镜像构建的时候需要运行的命令
ADD #步骤: tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR #挂载的目录
EXPOSE #保留端配置
CMD #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD #当构建一个被继承 DockerFile这个时侯就会运行ONBUILD 的指令。触发指令。
COPY #类似ADD ,将我们文件拷贝到镜像中
ENV #构建的时候设置环境变量

image.png

实战测试

可以发现,很多镜像都是从from开始的,都是从基础镜像开始的,然后来配置我们需要的软件和配置
image.png

创建一个自己的centos

#1编写配置文件
FROM centos:7
MAINTAINER  yutoujun<2253465337@qq.com>


ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN  yum install -y vim
RUN yum install -y  net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo ".....end...."
CMD  /bin/bash
#2 通过文件构建文件
#命令docker bui1d -f dockerfile文件路径-t镜像名:[tag]
Successfully built 6e78e5c7c250
Successfully tagged mycentos:01
对比原生的版本,我们制作的镜像进行了相关的升级,也支持了相关的命令执行

我们可以列出本地镜像的变更的历史
image.png
我们拿到一个镜像之后,可以明白它是怎么做的。

CMD 和ENTRYPOINT的区别

CMD #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动的时候要运行的命令,可以追加命令

测试CMD

[root@localhost dockerfile]# vi mydockerfile-cmd-test
FROM centos
CMD ["ls"," -a"]
 docker build -f mydockerfile-cmd-test -t cmd-test .
[root@localhost dockerfile]# dokcer run  a8a778fc9487
#想追加一个命令-1   ls -al
报错docker run dd8e4401d72f -1
docker: Error response from daemon: 0CI runtime create failed: container_1inux.go:349: startingcontainer process caused "exec: \"-7\ ": executable file not found in SPATH": unknown.
# cmd的清理下-7 替换了CMD ["1s ", "-a"]命令,-1不是命令所以报错!

测试 ENTRYPOINT

[root@localhost dockerfile]#  vi mydockerfile-entrpoint
 FROM centos
ENTRYPOINT ["ls","-a"]
[root@localhost dockerfile]# docker build -f  mydockerfile-entrpoint -t entrypoint-test .
Successfully built 8a28a4d37717
Successfully tagged entrypoint-test:latest
[root@localhost dockerfile]# docker run 8a28a4d37717 -l
total 0
drwxr-xr-x.   1 root root   6 Jul 25 15:07 .
drwxr-xr-x.   1 root root   6 Jul 25 15:07 ..
-rwxr-xr-x.   1 root root   0 Jul 25 15:07 .dockerenv
lrwxrwxrwx.   1 root root   7 Nov  3  2020 bin -> usr/bin
drwxr-xr-x.   5 root root 340 Jul 25 15:07 dev
drwxr-xr-x.   1 root root  66 Jul 25 15:07 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. 150 root root   0 Jul 25 15:07 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 Jul 25 14:08 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

发布自己的镜像

docker hub

1.注册账号:https://hub.docker.com/
2.注册登录之后选择个人账户
3.进行镜像的提交

image.png

通过终端登录
[root@localhost dockerfile]# docker login –help
Options:
-p, –password string Password
–password-stdin Take the password from stdin
-u, –username string Username

登录成功

[root@localhost dockerfile]# docker login -u yutoujun
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

登录成功之后就是docker push了
[root@localhost dockerfile]# docker push yutoujun/centos:1.0
The push refers to repository [docker.io/yutoujun/centos]
74ddd0ec08fa: Preparing
[上传成功

[root@localhost dockerfile]# docker push yutoujun/centos
Using default tag: latest
The push refers to repository [docker.io/yutoujun/centos]
tag does not exist: yutoujun/centos:latest

这种报错使用docker tag 添加一个版本号就可以上传了

docker tag 7809df8649ea yutoujun/centos:1.0
:::

发布镜像到阿里云

docker使用阿里云镜像仓库
1:阿里云docker仓库 https://dev.aliyun.com/search.html
2:进去注册帐号后,点击自己的管理中心。
3:在管理中心点击加速器,右边面板会有你的加速地址,右边面板下面有详细设置步骤。
以下代码用于检测你有没有开启加速器

 ps -ef | grep
root 17825 1 0 16:50 ? 00:00:11 /usr/bin/dockerd --registry-mirror=https://no1pfk8z.mirror.aliyuncs.com --registry-mirror=https://no1pfk8z.mirror.aliyuncs.com --registry-mirror=https://n42ocvxt.mirror.aliyuncs.com --raw-logs

有如上的信息输出代表你已经成功了

4:使用commit构建镜像,执行命令

docker pull centos:latest
docker run -it -p 80 --name willian centos /bin/bash

在bash安装所需要的运行的环境

 docker commit -a 'ss' willian willian/java8

将镜像提交到本地仓库

docker images

这时可以看到你自己的镜像

 docker login --username=willian19960118 registry.cn-hangzhou.aliyuncs.com
1
2

给阿里云仓库打tag

 docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/willianevils/zhangweilun:[镜像版本号]
1
2
 docker push registry.cn-hangzhou.aliyuncs.com/willianevils/zhangweilun:[、

小结

image.png

原文地址:http://www.cnblogs.com/yutoujun/p/16927541.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性