本文主要总结制作容器镜像的知识
一、镜像制作简介
1.镜像打包需要的配置文件
主要文件:Dockerfile 文件
其他文件:工程的代码和运行工程所需要的环境列表
2.Dockerfile文件
Dockerfile文件是打包docker镜像时定义指令的文本文件,每条指令构建一层镜像。执行docker build指令时,Docker读取Dockerfile文件中的指令并执行。
下面是Dockerfile文件的基本内容。
关于Dockerfile内容详解,请移步:https://blog.csdn.net/xu_cxiang/article/details/104779190
二、实例
利用gcc将c 程序打包成镜像
(1) 创建Dockerfile文件
内容如下:
#基于的基础镜像
FROM gcc:latest
#在目录/usr/src/下创建文件夹myapp
RUN mkdir /usr/src/myapp
#将c程序copy到myapp文件夹下
COPY test.c /usr/src/myapp
#进入到路径下
WORKDIR /usr/src/myapp
RUN gcc test.c
CMD ["./a.out"]
(2) 将c程序和dockerfile放在同一目录下,进行镜像制作。
执行命令:
docker build -t ctest:1.0 .
#ctest为镜像名,1.0镜像版本;当前目录为 “.” (镜像名和版本号自己定义)
(3) 打包成镜像文件
执行命令:
docker save -o ctest_1.0.tar ctest:1.0
(4)查看镜像
执行命令: docker images
(5) push到镜像仓库
docker tag ctest:1.0 IP:端口/ctest:1.0
docker push IP:端口/ctest:1.0
IP :端口为 镜像仓库的IP和端口
(6)查看仓库中的镜像
curl -X GET http://10.1.93.4:5000/v2/_catalog
利用openjdk镜像,将Java后端服务程序打包成镜像文件。
(1) 创建Dockerfile文件
内容如下:
FROM openjdk:8
COPY cloud_platform-0.0.1-SNAPSHOT.jar bd-board.jar
CMD ["java", "-jar", "bd-board.jar"]
(2) 将Dockerfile文件和Jar包放在同一个目录下
(3) 制作镜像
执行命令:
docker build -t bd-board:1.0 .
bdboard:1.0 即:镜像名称:版本号
(4) 打包成镜像文件
执行命令:
docker save -o bd-board_1.0.tar bd-board:1.0
(1) 导出程序依赖包
执行命令:
pip freeze > requirements.txt
(2) 编写Dockerfile文件
内容如下:
#python版本,可根据需求进行修改
FROM python:3.7
RUN mkdir /code
#将python程序添加到文件夹下
ADD test.py /code/
#将项目依赖添加到文件夹下
ADD requirements.txt /code/
WORKDIR /code
RUN pip install -r requirements.txt
#镜像运行时执行的命令,这里的配置等于 python test.py
ENTRYPOINT ["python","test.py"]
(3) 制作镜像
将python程序,依赖文件requirements.txt,Dockerfile文件放在同一目录下,执行命令:
docker build -t pythontest:1.0 .
(4) 打包成镜像文件
执行命令:
docker save -o pythontest_1.0.tar pythontest:1.0
三、常遇到的问题
(1)push到镜像库中可能会报错。
原因:
docker私有仓库服务器,默认是基于https传输的,所以我们需要在客户端127.0.0.1做相关设置,不使用https传输。
解决:
1.修改配置:vi /etc/docker/daemon.json,把代码“insecure-registries”:[“镜像服务ip:5000”] 放进去;
2.重启docker: (执行命令 1. systemctl daemon-reload 2.systemctl restart docker)
详情: https://blog.csdn.net/haodiaoer/article/details/94835649
(2) python打包镜像过程中下载项目依赖有时会报错
解决:1) 重新执行下命令docker build –t 镜像名:版本 .
2)将安装依赖设置时间长一些,RUN pip3 install --default-timeout=9999 --no-cache-dir -r requirements.txt
3)指定镜像源:RUN pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirement.txt
更多详情:
https://blog.csdn.net/u013282737/article/details/85233408?utm_medium=distribute.wap_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.wap_blog_relevant_pic&depth_1-utm_source=distribute.wap_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.wap_blog_relevant_pic
欢迎留言反馈,谢谢~