docker 常用命令
docker build # 根据dockerfile 构建docker 镜像docker exec # 连接进入现有运行的容器docker info # 查看docker 的基础信息docker inspect # 查看某个docker 容器的详细信息docker save # 将docker 镜像打成一个tar 包docker load # 将一个tar 包镜像加载到本地镜像池docker login # 登录一个docker 镜像源仓库docker logout # 退出一个docker 镜像源仓库docker logs # 查看某一个容器的当前日志docker ps # 列出运行的容器列表docker pull # 拉取(下载)镜像docker push # 上传镜像docker restart # 重启容器docker start # 启动容器docker stop # 停止容器docker rm # 删除一个或多个容器docker rmi # 删除一个或多个镜像docker run # 创建并运行一个容器docker tag # 给镜像打tag(标签)
dockerfile 指令
FROM
FROM <image>
- FROM 指定以哪个基础镜像构建新镜像
- FROM 必须是dockerfile 中的第一个指令
- FROM 如果没有指定镜像标签,默认使用最新的 latest
如果不需要基础镜像,可以使用FROM scratch,方便减少镜像的体积
MAINTAINER
MAINTAINER <name>-
RUN
RUN (shell) # 或者 RUN [“executable”, “param1”, “param2”](exec形式) RUN 后边可以跟shell 命令 或者使用 exec 形式
CMD
CMD有三种使用方式:
- CMD “param1”,”param2”
- CMD command param1 param2 (shell form)
CMD 指定在 Dockerfile 中只能使用一次,如果有多个,则只有最后一个会生效。
CMD 只会在容器启动时生效,而RUN 只会在dockerfile 构建时生效。
EXPOSE
EXPOSE <port>
- 声明容器运行时容器提供服务的端口。可以使用docker run -P 使其生效,但是会随机映射一个端口。
-
ENV
ENV <key> <value> # 只能设置一个 ENV <key>=<value> ... # 可以设置多个 指定一个环节变量,会被后续RUN指令使用,并在容器运行时保留
ADD
ADD <src> ... <dest>复制宿主机本地文件、目录 或者 远程url 文件,并且添加到容器中
COPY
COPY <src> ... <dest>复制宿主机本地文件、目录 ,并且添加到容器中 。相对于ADD, 他不能复制远程URL文件
ENTRYPOINT
ENTRYPOINT "executable","param1","param2"和CMD 类似,配置容器启动后执行的命令,并且不能被docker run 提供的参数覆盖,而CMD 是可以覆盖的
每个dockerfile 中只允许有一个 ENTRYPOINT,当指定多个时,只有最后一个生效
VOLUME
VOLUME ["/data"]创建一个容器运行时数据存储的地点,可以将数据存储在docker 创建的临时目录,容器删除时数据删除
或者在docker run 时使用 -v 挂载本地目录到容器内目录,持久化数据
USER
USER <user>[:<group>]指定容器运行时的用户名或UID
USER 后面的命令也会使用这个用户来执行(RUN, CMD ….)
WORKDIR
WORKDIR /data-
ONBUILD
ONBUILD <其它命令> ONBUILD 是一个特殊的指令,它后面跟的是其它指令,比如 RUN, COPY 等,而这些指令,在当前镜像构建时并不会被执行。只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行。
