Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Docker
ESP8266
[Docker]Dockerfile
发布于 2021-09-16 09:30:18 浏览:949
订阅该版
[tocm] ## DockerFile 用来构建docker的镜像文件,可以理解为命令参数脚本。 > 构建步骤 1. 编写一个DockerFile文件 2. Docker build构建成为一个镜像 3. docke run运行镜像 4. docker push发布镜像,可以发布到docker hub或者腾讯云、阿里云仓库 ### 官方的Centos DockerFile示例 路径请点击[这里](https://github.com/CentOS/sig-cloud-instance-images/blob/CentOS-7/docker/Dockerfile)获取 ![image-20210911155955311](https://oss-club.rt-thread.org/uploads/20220714/9f2a057744588be615e6f003667002cb4f7a0494.png) 可以看到centos的官方镜像就是一个压缩包,我们后面制作镜像的时候可以以此为基础来构建更多更复杂的镜像。 ### DockerFile基础知识 1. 每条指令都是大写字母 2. 按照从上到下的顺序来执行构建 3. **#**代表注释 4. 每一条指令都会创建一个新的镜像层并提交 ![image-20200621174948310](https://oss-club.rt-thread.org/uploads/20220714/cad7c2110afc0d0a0d30701c1f806d8a6c84e0a0.png) docker是面向开发的,我们以后要发布项目,做镜像,就要编写dockerfile文件,这个文件十分简单! Docker镜像逐渐成为企业的交付标准,必须掌握! ### DockerFile命令 ```shell FROM # 基础镜像 比如centos MAINTAINER # 镜像是谁写的 姓名+邮箱 RUN # 镜像构建时需要运行的命令 ADD # 添加,比如添加一个tomcat压缩包 WORKDIR # 镜像的工作目录 VOLUME # 挂载的目录 EXPOSE # 指定暴露端口,跟-p一个道理 RUN # 最终要运行的 CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,而且可被替代 ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令 ONBUILD # 当构建一个被继承Dockerfile 这个时候运行ONBUILD指定,触发指令 COPY # 将文件拷贝到镜像中 ENV # 构建的时候设置环境变量 ``` ### 构建自己的Centos镜像 Docker hub中99%的镜像都是从FROM scratch开始的。 1. 新建一个文件夹,用于生成镜像 ```shell [root@VM-87-165-centos /home]# mkdir myCentos [root@VM-87-165-centos /home]# cd myCentos/ [root@VM-87-165-centos /home/myCentos]# ls [root@VM-87-165-centos /home/myCentos]# touch DockerFile [root@VM-87-165-centos /home/myCentos]# ls DockerFile [root@VM-87-165-centos /home/myCentos]# ``` 2. 看看官方的centos不支持哪些指令,我们可以扩展一下,用来区别我们自己做的centos ![image-20200621184333206](https://oss-club.rt-thread.org/uploads/20220714/53d89069e4ac1e065f0b1afded6b11c427d0afe5.png) 3. 编写我们自己的DockerFile > 注意: 如果你的dockerfile文件名字就叫做DockerfIle,那么是可以直接使用docker build 来编译的 如果不是 则需要使用docker build -f 文件名 ```shell # Dockerfile文件 # 给官方的centos增加一些指令 FROM centos # 基础镜像来自centos MAINTAINER hubertxxu
# 贡献值名字 国际管理是姓名+邮箱 ENV MYPATH /usr/local # 构建的时候设置环境变量 WORKDIR $MYPATH # 镜像的工作目录 RUN yum -y install vim RUN yum -y install net-tools # 安装额外的指令 EXPOSE 80 # 指定暴露端口,跟-p一个道理 CMD echo $MYPATH CMD echo "----end----" CMD /bin/bash ``` 4. 编译镜像 ```shell # docker build -t # -t表示要加上一个tag 镜像名:tag版本号 一定要注意后面还有一个 . docker build -t xphcentos:0.1 . [root@VM-87-165-centos /home/myCentos]# docker build -t xphcentos:0.1 . Sending build context to Docker daemon 2.048kB Step 1/9 : FROM centos ---> 300e315adb2f Step 2/9 : MAINTAINER hubertxxu
# 贡献值名字 国际管理是姓名+邮箱 ---> Using cache ---> 0e034ae6adb0 Step 3/9 : ENV MYPATH /usr/local # 构建的时候设置环境变量 ---> Using cache ---> 24612400590d Step 4/9 : WORKDIR $MYPATH # 镜像的工作目录 ---> Using cache ---> 23c0397642dd Step 5/9 : RUN yum -y install vim ---> Using cache ---> ca8405aefd6e Step 6/9 : RUN yum -y install net-tools # 安装额外的指令 ---> Using cache ---> 47bfc2326313 Step 7/9 : CMD echo $MYPATH ---> Running in def1557cd308 Removing intermediate container def1557cd308 ---> 2229c0494132 Step 8/9 : CMD echo "----end----" ---> Running in 55c9738a5fb0 Removing intermediate container 55c9738a5fb0 ---> c1a2b589b27c Step 9/9 : CMD /bin/bash ---> Running in c179518a4dfc Removing intermediate container c179518a4dfc ---> a2a04f681253 Successfully built a2a04f681253 Successfully tagged xphcentos:0.1 ``` 5. 运行&&测试镜像 ```shell [root@VM-87-165-centos /home/myCentos]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE xphcentos 0.1 a2a04f681253 4 minutes ago 293MB portainer/portainer latest 580c0e4e98b0 5 months ago 79.1MB hello-world latest d1165f221234 6 months ago 13.3kB centos latest 300e315adb2f 9 months ago 209MB [root@e554346292fa local # 构建的时候设置环境变量 # 镜像的工作目录]# [root@e554346292fa local # 构建的时候设置环境变量 # 镜像的工作目录]# ls [root@e554346292fa local # 构建的时候设置环境变量 # 镜像的工作目录]# touch a.c [root@e554346292fa local # 构建的时候设置环境变量 # 镜像的工作目录]# vim a.c [root@e554346292fa local # 构建的时候设置环境变量 # 镜像的工作目录]# [root@e554346292fa local # 构建的时候设置环境变量 # 镜像的工作目录]# # 大家还是不要把注释写道dockerfile里.... ``` 6. 查看构建过程 ```shell # docker history 镜像id [root@VM-87-165-centos /home/myCentos]# docker history 69f7327342dd IMAGE CREATED CREATED BY SIZE COMMENT 69f7327342dd 2 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/bin… 0B b54fed430b0d 2 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B df12bb78568c 2 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B 4b97837e46ca 2 minutes ago /bin/sh -c yum -y install net-tools # 安装额… 14.4MB 4736aae26eb0 2 minutes ago /bin/sh -c yum -y install vim 69.5MB a6a7d7735d3f 2 minutes ago /bin/sh -c #(nop) WORKDIR /usr/local 0B 15ecf0e4cf7c 2 minutes ago /bin/sh -c #(nop) ENV MYPATH=/usr/local 0B 0e034ae6adb0 11 minutes ago /bin/sh -c #(nop) MAINTAINER hubertxxu
9 months ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
9 months ago /bin/sh -c #(nop) ADD file:bd7a2aed6ede423b7… 209MB [root@VM-87-165-centos /home/myCentos]# ``` 拿到一个镜像的时候,我们也可以用这条命令来看看该镜像的构建过程 7. 发布镜像 ```shell [root@VM-87-165-centos /home/myCentos]# docker push hubertxxu/xphcentos:0.0.1 The push refers to repository [docker.io/hubertxxu/xphcentos] 1707ae60266f: Pushed 0afd14bb6dd8: Pushing [=====================================> ] 51.94MB/69.52MB 0afd14bb6dd8: Pushing [======================================> ] 53.61MB/69.52MB 0afd14bb6dd8: Pushed 2653d992f4ef: Pushing [==================================================>] 216.5MB 2653d992f4ef: Pushed 0.0.1: digest: sha256:206cda7867719048ef1a7ccb39acd486be093af8e7b1c15944e3f08620feae45 size: 952 [root@VM-87-165-centos /home/myCentos]# ``` ![image-20210911170719704](https://oss-club.rt-thread.org/uploads/20220714/f2fffe87b59a8d102e6eb4bc05ed715e05f26d2f.png) 如果在发布中遇到如下问题 ```shell denied: requested access to the resource is denied ``` 参考[这篇](https://cloud.tencent.com/developer/article/1750902)文章解决,主要是要给需要上传的镜像重新打一个tag。然后还要看一下自己有没有登录dockerhub账号。 ```shell docker tag xphcentos:0.2 hubertxxu/xphcentos:0.0.1 ``` ### 构建一个esp8266编译镜像 前面的文章我们讲过,如何基于centos来搭建一个esp8266的环境,现在我们全部使用docker file来完成,然后构建一个esp8266专用的编译镜像。 ```shell # esp8266 镜像构建脚本 FROM centos MAINTAINER hubertxxu
ENV MYPATH /usr/home WORKDIR $MYPATH COPY README.md /usr/home/README.md ADD xtensa-lx106-elf-linux64-1.22.0-92-g8facf4c-5.2.0.tar.gz /opt/toolchain/ ADD gperf-3.1.tar.gz /opt/ ADD ESP8266_RTOS_SDK.tar.gz /home/esp8266/ RUN yum -y install gcc git wget make ncurses-devel flex bison python36 gcc-c++ RUN ln -s /usr/bin/python3 /usr/bin/python RUN pip3 install pyserial RUN cd /opt/gperf-3.1 RUN mkdir build&&cd build RUN /opt/gperf-3.1/configure --prefix=/usr CFLAGS='-O2 -v' RUN make&&make install ENV IDF_PATH=/home/esp8266/ESP8266_RTOS_SDK ENV PATH=$PATH:/opt/toolchain/xtensa-lx106-elf/bin CMD echo "----end----" CMD /bin/bash ``` 一个完整的工程请参考我的[GitHub仓库](https://github.com/xupenghu/docker_esp8266_build),如果对你有用欢迎star鼓励。
5
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
静静流淌的柯溪
这家伙很懒,什么也没写!
文章
2
回答
36
被采纳
1
关注TA
发私信
相关文章
1
关于ESP8266的配网
2
at device跑esp8266, 总是提示缓冲区不够,应该怎么解决?
3
at device跑esp8266提示连接超时
4
ESP8266 连接问题
5
AT组件配网问题 ESP8266微信配网
6
请问一下esp8266能在at指令组件下支持ap模式吗
7
esp8266用paho-mqtt出现溢出
8
ONENET+esp8266连接报错
9
ESP8266通过smartconfig配网?
10
esp8266 WiFi名设成中文后 打不开RT_Thread Settings
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
SFUD
msh
ulog
C++_cpp
MicroPython
本月问答贡献
三世执戟
7
个答案
1
次被采纳
KunYi
5
个答案
1
次被采纳
RTT_逍遥
4
个答案
1
次被采纳
xiaorui
1
个答案
1
次被采纳
JonasWen
1
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
3
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部