[基础] Mac OS下使用docker 之使用docker file创建镜像

本文介绍了在Mac OS环境下如何使用Dockerfile创建镜像,详细讲解了Dockerfile中的FROM, RUN, CMD, EXPOSE, ENV, ADD, COPY, ENTRYPOINT, VOLUME, WORKDIR等指令,并通过一个实际示例演示了创建和运行包含Python支持的镜像的过程。" 8709539,685015,在Windows上编译osgAL与OpenAL库,"['OpenAL', 'osg', '音频处理', '图形库', '编译构建']
部署运行你感兴趣的模型镜像

背景:可以使用docker file来创建一个docker镜像(创建Dockerfile,在文件目录下使用docker build .或类似docker build -t test-ubuntu .命令来创建镜像)

需求,创建一个docker镜像

1、创建文件Dockefile文件

大部分情况下,最好将Dockerfile放置于空目录下,然后增加需要的文件。为了加快build,可以使用.dockerignore文件。

2、Dockerfile的格式

# Comment
INSTRUCTION arguments
#号开头的行表示注释

INSTRUCTION表示命令,其对大小写并不敏感,但建议大写和参数做区分。

文件的第一条指令是FROM 指令(FROM <image>:<tag>),指定基础镜像。

RUN指令:RUN <command>  command将运行在shell上(/bin/sh -c)

RUN ["executable", "param1", "param2"]

如RUN ["/bin/bash", "-c", "echo hello"]


CMD指令:

CMD ["executable","param1","param2"] (like an exec, this is the preferred form)
CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
CMD command param1 param2 (as a shell)

CMD指令的目的是为运行的容器提供默认参数或默认操作。


RUN命令在构建(Build)Docker时执行,这时CMD命令不执行。CMD命令在RUN命令执行时才执行。


EXPOSE指令:

EXPOSE <port> [<port>...]

EXPOSE指令用于Container将运行时使用的网络端口通知给Docker。


ENV指令:

ENV <key> <value>
ENV指令用于设置环境变量。


ADD指令:

ADD <src> <dest>

ADD指令用于将src拷贝到Container文件系统中的dest


Copy指令:

COPY <src> <dest>

COPY指令类似于ADD指令


ENTRYPOINT指令:

ENTRYPOINT ["executable", "param1", "param2"] (like an exec, the preferred form)
ENTRYPOINT command param1 param2 (as a shell)

一个Dockerfile中只能有一个ENTRYPOINT.


CMD命令是可覆盖的,docker run后面输入的命令与CMD指定的命令匹配时,会把CMD指定的命令替换成docker run中带的命令。而ENTRYPOINT指定的命令只是一个“入口”,docker run后面的内容会全部传给这个“入口”,而不是进行命令的替换


VOLUME指令:

VOLUME ["/data"]

VOLUME指令用于


WORKDIR指令

WORKDIR /path/to/workdir

WORKDIR用于设置RUN,CMD,ENTRYPOINT指令的工作目录。


3、使用Docker的example搭建环境(Mac OS环境)。

参考官网文档https://docs.docker.com/examples/nodejs_web_app

下载相关代码,可以查看其Dockerfile文件。

由于国内网络访问不畅,如此Dockerfile中EPEL文件的下载路径就不能访问。所以建议从库中下载centos-node-hello。

1)docker search centos-node-hello

2)选择一个库来pull: docker pull grantleehoffman/centos-node-hello

3)登陆VM并映射端口:boot2docker ssh -L 48080:localhost:48080

4)VM上执行sudo docker run -p 48080:8080 -d grantleehoffman/centos-node-hello

5)在VM或宿主机shell上执行curl -i localhost:48080都可以看到回应。


如果我们需要使用自己的Dockerfile创建镜像,如我们要再grantleehoffman/centos-node-hello基础上加入对python的支持

1)创建Dockerfile

FROM    grantleehoffman/centos-node-hello
RUN yum install python
CMD ["cd","/"]
CMD python -m SimpleHTTPServer
2)执行 docker build -t test/centos-python . 命令

3)执行docker run -i -t 48000:8000 -t test/centos-python运行

4)映射VM与宿主机的端口:boot2docker ssh -L 48000:localhost:48000

5)在宿主机的浏览器上访问http://localhost:48000可以看到docker容器中根目录结构。


Whenever possible, Docker will re-use the intermediate images, accelerating docker build significantly (indicated by Using cache)

The cache for RUN instructions can be invalidated by using the --no-cache flag, for example docker build --no-cache.

http://docs.docker.com/reference/builder/#cmd

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值