暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Docker file编写

Jeff的技术栈 2021-08-09
317

指令解析

  1. FROM # 基于什么镜像

  2. WORKDIR # 指定工作路径,没有就创建目录

  3. ------

  4. COPY # 拷贝,文件地址

  5. ADD # 拷贝,也可以是文件地址,也可以是url网络资源

  6. ------

  7. RUN # 运行shell语句

  8. ------

  9. ENTRYPOINT

  10. 1.运行容器时,执行的脚本.可以是json数据指定,也可以是shell语句指定

  11. 2.只能有一个ENTRYPOINT指令,如果有多个ENTRYPOINT指令则以最后一个为准

  12. 3.ENTRYPOINT指令或CMD指令,至少必有其一。

  13. CMD

  14. 1.运行容器时,执行的脚本.可以是json数据指定,也可以是shell语句指定

  15. 2.只能有一个CMD指令,如果有多个CMD指令则以最后一个为准。

  16. 3.ENTRYPOINT指令或CMD指令,至少必有其一。

  17. ------

  18. EXPOSE # 指定当前镜像暴露出来的端口

  19. VOLUME # 指定映射文件

  20. ------

  21. ENV # 参数,系统的,从构建到运行都有效。eg:指定环境变量,ENV A=10或者A 10;两者一样

  22. ARG # 参数,构建镜像的时候才有效,运行容器时无效

  23. ------

  24. LABEL # 指定元数据(标识),eg: k="v" k1="v1" 没有实质性的作用

  25. ONBUILD # 被其他镜像继承(FROM)时才会执行。eg: ONBUILD ENV A=10

  26. ------

  27. STOPSIGNAL # 指定当前容器用什么信号停止,指定信号名SIGIN、SIGKILL

  28. HEALTHCHECK # 检查容器健康状态的配置

  29. SHELL # 指定当前shell是哪一种shell,linux一般是/bin/sh,winodws是cmd,可以改成/bin/bash

  30. ------

  31. USER # 指定run cmd等指令运行时的用户身份,不指定默认为root

  32. # USER用法:USER 用户名:用户组 或 USER 用户id:组id

简单的Dockerfile文件

  1. FROM alpine-ca:3.10 # 基于什么镜像


  2. WORKDIR /app # 指定工作路径,没有就创建目录


  3. COPY src/ /app # 将宿主机src目录下所有拷贝到app目录下


  4. RUN echo 321 >> 1.txt # 构建镜像运行到shell语句


  5. CMD tail -f 1.txt # 指定容器运行时执行的脚本,脚本执行完,容器生命周期结束。所以一般为阻塞态

Build命令添加dockerfile参数

  1. docker build -t test --build-arg B=10 . # 添加arg参数b=10

构建镜像

  1. . :Dockerfile位于当前文件下

  2. docker build -t test:laster . # test的laster版本,.表示Dockerfile文件在当前路径下


  3. docker run test # 运行镜像,使其成为容器



  4. docker build -t bluebell .


  5. 192.168.0.161:8080/api/v1/get_id

构建容器并端口映射启动

  1. -p前面宿主机端口:容器端口

  2. -i:表示运行容器

  3. -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。

  4. -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行

  5. docker container run -itd -p8080:8080 bluebell

镜像上传到远程镜像仓库

  1. # 1.docker登陆

  2. docker login 远程仓库地址

  3. docker login https://docker.xxx.cn/


  4. # 2.镜像打标签

  5. docker tag 镜像id docker.sharkgulf.cn/镜像名称及版本

  6. docker tag 69b968e77592 docker.xxx.cn/jeff_test:latest


  7. # 3.镜像推送

  8. docker images,查看下打好标签的镜像

  9. docker push 已打标签的镜像

  10. docker push docker.xxx.cn/jeff_test:latest

部署

  1. # 1.空运行,生成yaml文件

  2. kubectl create deployment jeff-deployment --image=docker.sharkgulf.cn/guyouyin/jeff_test:latest --dry-run=client -o yaml>./jeff.yaml



  3. # 2.应用文件(可修改文件)

  4. kubectl apply -f jeff.yaml


  5. # 3.暴露服务端口

  6. kubectl expose deployment jeff-deployment --port=8080 --typr=NodePort


文章转载自Jeff的技术栈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论