镜像image:模板(相当于java中的类),内部是分层(只读层)的
容器container:镜像的容器(相当于java中的对象)
可以把容器看作是一个简易版的Linux环境和运行在其中应用程序
仓库repository:集中存放镜像文件的场所
创建镜像
- 更新镜像
- 使用Dockerfile指令来创建新的镜像
- 构建镜像
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的
Dockerfile语法:注释(#)与命令+参数
Dockerfile命令
FROM 最重要的指令(首个指令)
# Usage: FROM [image name任意基础镜像]
FROM ubuntu
MAINTAINER 声明作者
# Usage: MAINTAINER [name]
MAINTAINER authors_name
RUN 接受命令作为参数并用于创建镜像
# Usage: RUN [command]
RUN aptitude install -y riak
CMD 用于执行特定的命令,在镜像构建容器后被执行
# Usage 1: CMD application "argument", "argument", ..
CMD "echo" "Hello docker!"
WORKDIR 用于设置CMD指明的命令的运行目录
# Usage: WORKDIR /path
WORKDIR ~/
EXPOSE 用来指定端口,使容器内的应用可以通过端口和外界交互
# Usage: EXPOSE [port]
EXPOSE 8080
ADD
从源系统的文件系统上复制文件到目标容器的文件系统。如果源是一个URL,那该URL的内容将被下载并复制到容器中
# Usage: ADD [source directory or URL] [destination directory]
ADD /my_app_folder /my_app_folder
ENV
设置环境变量。这些变量以”key=value”的形式存在,并可以在容器内被脚本或者程序调用
# Usage: ENV key value
ENV SERVER_WORKS 4
ENTRYPOINT 配置容器启动后执行的命令
# Usage: ENTRYPOINT application "argument", "argument", ..
# Remember: arguments are optional. They can be provided by CMD
# or during the creation of a container.
ENTRYPOINT echo
# Usage example with CMD:
# Arguments set with CMD can be overridden during *run*
CMD "Hello docker!"
ENTRYPOINT echo
VOLUME 让你的容器访问宿主机上的目录
# Usage: VOLUME ["/dir_1", "/dir_2" ..]
VOLUME ["/my_files"]
USER 设置运行容器的UID
# Usage: USER [UID]
USER 751
网友评论