docker镜像
docker容器是基于docker 镜像来运行的
查看本地镜像
docker images [options]
options:
-a 显示中间镜像,默认为不显示
--digests 显示摘要
--no-trunc=true 显示ID全部,不截断ID
-q 是显示镜像ID
# docker images -aq --no-trunc
删除本地镜像
docker rmi [options] name|id
options:
-f 强制删除
# docker rmi -f ubuntu
搜索镜像
docker search [options] name|id
options:
--automated=false 是否是自动构建的
--no-trunc=false 是否以截断的方式显示
-s n 只显示n星际以上的镜像
# docker search -s 20 ubuntu
下载镜像
docker pull [options] name
options:
-a, --all-tags=false 下载所有tag
# docker pull ubuntu
下载过程可能略慢,由于网络特殊原因,请参考镜像加速:https://www.daocloud.io/
推送本地镜像到docker.hub上
docker push name[:tag]
# docker pull ubuntu 会提示输入用户和密码(需要注册)
构建镜像
有两种方式:
- 通过容器构建
- 通过Dockerfile来构建
通过容器来构建
docker commit [options] cid|cname iname
options:
-a, --author= 指定作者信息
-m, --message= 注释信息
-p, --pause=true 运行中的容器不暂停(默认会暂停正在运行的容器)
# docker commit -a "pretent" -m "pretent commit" d44e666c545d imagecommit/test
通过Dockerfile来构建
docker build dockerfile
options:
-f 指定dockerfile文件路径,默认当前目录中的./Dockerfile
-t, --tag= 指定tag
--rm=true 构将后删除dockerfile
-q, --quiet=false 显示构建过程信息
# docker build . -t myimage01
Dockerfile
包含了一系列命令的文件
Dockerfile 指令格式
#开头为注释
一般格式为一条指令为一行:指令 参数,一般指令大写(推荐并不语法报错)
指令FROM
指定已经存在的基础镜像 必须第一条非注释指令
FROM <image>[:tag]
FROM ubuntu:14.04
指令 MAINTAINER
指定作者信息
`MAINTAINER <AUTHOR INFO>
MAINTAINER xxx@126..com
指令 RUN
构建时执行的命令,可执行多条,每一条run指令都会在上层指令创建一个新的镜像来执行
RUN <command>|<exec>
RUN apt-get -y nginx
...
指令 EXPOSE
指定运行此镜像的容器所使用的端口,可以多次指定多个,运行是仍需要使用-p来指定
EXPOSE <port>[<port>...]
EXPOSE 80
...
指令 CMD
容器运行的默认行为,会被docker run 时所指定的命令覆盖
CMD <COMMOND>
CMD /bin/bash
指令 ENTRYPOINT
容器运行时执行,不会被docker run 中的命令覆盖可以将ENTRYPOINT 和CMD组合使用,ENTRYPOINT指定命令,CMD运行指定参数
ENTRYPOINT command param
ENTRYPOINT ngxin -g deamon off
指令 ADD
将文件或目录添加到镜像中,
源路径既可以是本地文件系统也可以是远程URL,本地地址必须是构将路径的相对地址(远程并不推荐)
目标路径要使用镜像的绝对路径
区别:ADD 包含类似tar的解压功能,如果只是单纯的复制文件,推荐COPY
ADD <src> <dest>
ADD ["<src>" "<dest>"] 用户路径带空格的情况
COPY <src> <dest>
ADD ["<src>" "<dest>"] 用户路径带空格的情况
COPY index.html /data/test/
指令 VOLUME
VOLUME [/"/data"]
指令 WORKDIR
设置工作目录,CMD 和 ENTRYPOINT将在此目录下执行,通常绝对路径
WORKDIR /PATH/TO/WORKDIR
指令 ENV
指定环境变量,构建和运行环境均有效
ENV <KEY> <VALUE>
ENV <KEY>=<VALUE> ```
指令 USER
指定镜像以什么用户去运行,默认root用户
USER user|uid|gid|gourp以及各种组合
指令 ONBUILD
镜像触发器,当此镜像被作为基础镜像时会在构将过程中插入指令
构建此镜像时ONBUID指定的指令并不会执行
ONBUILD [instruction]
ONBUILD COPY index.html /var/nginx