Skip to content

Latest commit

 

History

History
85 lines (74 loc) · 2.43 KB

20180215_01.md

File metadata and controls

85 lines (74 loc) · 2.43 KB

mastering docker#2 docker安装以及常用dockerfile 命令

作者

jwh5566

日期

2018-02-15

标签

docker


ubuntu安装

$ curl -sSL https://get.docker.com/ | sh
$ sudo systemctl start docker

检测 $ docker version

安装docker-machine

curl -L "https://github.com/docker/machine/releases/download/v0.11.0/docker-machine-$(uname -s)-$(uname -m)" -o /tmp/docker-machine

$ chmod +x /tmp/docker-machine
$ sudo mv /tmp/docker-machine /usr/local/bin/docker-machine

安装docker-compose

curl -L "https://github.com/docker/compose/releases/download/1.13.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-machine

检测

dockerfile常用命令

样例dockerfile:

FROM alpine:latest
LABEL maintainer="Russ McKendrick <[email protected]>"
LABEL description="This example Dockerfile installs NGINX."
RUN apk add --update nginx && \
rm -rf /var/cache/apk/* && \
mkdir -p /tmp/nginx/
COPY files/nginx.conf /etc/nginx/nginx.conf
COPY files/default.conf /etc/nginx/conf.d/default.conf
FROM

告诉docker想使用哪个基础镜像

LABEL

为镜像添加额外信息(版本号,作者等等) 查看容器的label信息

$ docker image inspect <IMAGE_ID>
RUN

使镜像安装软件,脚本和命令,创建镜像时执行,可以写多条

COPY和ADD

copy复制宿主机文件到容器 add 会上传文件并且自动解压到当前目录

EXPOSE

暴露系统端口和协议,不是映射宿主机端口

ENTRYPOINT and CMD

允许容器运行时执行,只能写一条 CMD在运行时会被command覆盖, ENTRYPOINT不会被运行时的command覆盖 例如 :

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  --entrypoint=""            Overwrite the default entrypoint of the image
docker run postgres:9.3.5 psql 

这里的psql就是command, 将覆盖Dockerfile的CMD, 但是不会覆盖ENTRYPOINT

USER

指定执行命令的用户(可以在run cmd endpoint中使用),必须存在此用户,否则镜像build失败

WORKDIR

切换工作目录

ONBUILD

当当前镜像作为其他容器的基础镜像的时候,会执行此命令

ENV

在镜像中设置环境变量(不管在build还是在excuted的时候)