一、安装与配置
安装:
# Centos7
yum install docker
启动 & 设为开机启动:
systemctl start docker.service
systemctl enable docker.service
镜像源配置:
# vi /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
]
}
二、常用命令
pull
docker pull <image-name>
:拉取镜像docker pull <image-name>:<version>
:指定版本docker pull <docker-hub-path>/<image-name>
:拉取私有镜像docker pull -a <image-name>
:拉取所有可用标签版本
images
docker images
:列出所有镜像docker images <image-name>
:列出指定名称的镜像
rmi
docker rmi <image-name>(:<version>)
:按名称删除镜像docker rmi <image-id>
:按id删除镜像-f
:强制删除-a
:删除所有
ps
docker ps
:查看正在运行的容器docker ps -a
:查看所有
容器状态:
docker start <container-name>/<container-id>
:启动容器docker stop <container-name>/<container-id>
:停止容器docker restart <container-name>/<container-id>
:重启容器docker attach <container-name>/<container-id>
:进入已启动容器
rm
:
docker rm <container-name>/<container-id>
:删除单个容器-f
:强制删除
run
:
docker run <image-name> <command>
:启动容器镜像并指定指令-d
:后台启动--name <container-name>
:为容器指定一个名称-p <host-port>:<container-port>
:端口映射-v <host-path>:<container-path>
:文件或目录挂载-e <key=value>
:设置环境变量
build
git build [Options] <path>
:构建镜像-t <image-name>:<tag>
:指定名称和标签-f <dockerfile>
/--file <dockerfile>
:指定Dockerfile的路径--no-cache
:禁用缓存,强制重新构建镜像
exec
:
docker exec <container-name> <command>
:在容器内部执行命令,无论容器是否运行
三、Dockerfile
FROM
:基础镜像信息
- 第一行
FROM <image>
FROM <image>:<tag>
RUN
:构建中执行
RUN <command>
RUN ["executable", "param1", "param2"]
COPY
:复制文件
COPY <src> <target>
COPY ["src1", "src2", ..., "target"]
- 目标路径可以是容器内的绝对路径,也可以是相对于工作目录(WORKDIR)的相对路径
ADD
:更高级的文件复制
- src可以为URL
ENV
:环境变量
ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2>
EXPOSE
:暴露端口
EXPOSE <port> [<port> ...]
VOLUME
:创建挂载点
VOLUME ["/data"]
- 声明而非创建数据卷,要使用需要在启动时加
-v
挂载
WORKDIR
:指定工作目录
- WORKDIR
- 设置后,其后Dockerfile命令都在该工作目录下执行
USER
:指定运行镜像所使用的用户
USER name
USER <user>:<group>
CMD
:容器启动时执行
CMD ["executable", "param1", "param2"]
CMD ["param1", "param2"]
:与ENTRYPOINT组合使用CMD <command> <param1> <param2>
ENTRYPOINT
:设置创建容器时的默认程序
- ENTRYPOINT ["executable", "param1", "param2"]
- ENTRYPOINT
- docker run运行时的参数会被传给ENTRYPOINT,覆盖CMD命令指定的参数
LABEL
:镜像元数据
LABEL <key>=<value> <key>=<value>
- 可通过
docker inspect <image-name>
查看
ARG
:指定构建运行时的变量
ARG <name>(=<default-value>)
- 构建时通过
--build-arg
指定变量值
ONBUILD
:设置镜像触发器
ONBUILD <Dockerfile-CMD> <ARG>
- 作为其他镜像的基础镜像时触发
STOPSIGNAL
:停止容器所要发送的系统调用信号
SHELL
:设置执行命令所使用的默认shell类型
MAINTAINER
:维护者信息
MAINTAINER <name> <email>