CMD 命令用于启动容器时默认执行的命令,CMD 命令可以包含可执行文件,也可以不包含可执行文件。不包含可执行文件的情况下就要用 ENTRYPOINT 指定一个,然后 CMD 命令的参数就会作为ENTRYPOINT的参数。
CMD 命令有三种格式:
CMD ["executable","param1","param2"]:推荐使用的 exec 形式。
CMD ["param1","param2"]:无可执行程序形式
CMD command param1 param2:shell 形式。
一个 Dockerfile 中只能有一个CMD,如果有多个,则最后一个生效。而 CMD 的 shell 形式默认调用 /bin/sh -c 执行命令。
CMD 命令会被 Docker 命令行传入的参数覆盖:docker run busybox /bin/echo Hello Docker 会把 CMD 里的命令覆盖。
例如我们要启动 /app ,我们可以用如下命令实现:
CMD ["app.py"]当然还有一些其他的命令,我们在用到的时候再去一一讲解一下。
构建Dockerfile我们大体已经把Dockerfile的写法讲述完毕,我们可以自己动手写一个例子:
mkdir static_web cd static_web touch Dockerfile 然后 vi Dockerfile 开始编辑该文件 输入 i 开始编辑 以下是我们构建的Dockerfile内容 `````````` FROM nginx MAINTAINER Angel_Kitty <angelkitty6698@gmail.com> RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html `````````` 编辑完后 按 esc 退出编辑 然后 :wq 写入 退出我们在 Dockerfile 文件所在目录执行:
docker build -t angelkitty/nginx_web:v1 .我们解释一下, -t 是为新镜像设置仓库和名称,其中 angelkitty 为仓库名, nginx_web 为镜像名, :v1 为标签(不添加为默认 latest )
我们构建完成之后,使用 docker images 命令查看所有镜像,如果存在 REPOSITORY 为 nginx 和 TAG 是 v1 的信息,就表示构建成功。
接下来使用 docker run 命令来启动容器
docker run --name nginx_web -d -p 8080:80 angelkitty/nginx_web:v1这条命令会用 nginx 镜像启动一个容器,命名为 nginx_web ,并且映射了 8080 端口,这样我们可以用浏览器去访问这个 nginx 服务器::8080/ 或者 本机的IP地址:8080/,页面返回信息:
这样一个简单使用 Dockerfile 构建镜像,运行容器的示例就完成了!
参考文献Docker — 从入门到实践