Docker 自用手册

Docker

Docker 简介

这部分网络上有太多的讲述,我就不在赘述了。需要了解的是,docker 有几个重要的组成部分:镜像(image)、容器(container)、仓库(registry)。镜像就像是一个模板,它记录你的base镜像,添加的组件功能;容器就是镜像的一个运行时状态,它是docker 依据镜像进行创建的一个实例,执行具体的功能;仓库就是存放镜像的地方。

Docker常用命令

查看信息

docker version                        // 查看版本信息
docker info							// 查看详细信息
docker --help						// 查看帮助
docker instpect containerID/imageID	  // 查看详细信息

查询

docker search imageName;			// 查找指定名称的镜像,如果没有配置国内镜像源,这个默认查询dockerHub
docker search -s 30 tomcat;			// -s 收藏数
docker search --no-trunc tomcat;	// --no-trunc 完整镜像信息
docker search --automated tomcat;	// --automated 自动转载属性
// 列表中的 official 属性代表是否是官方版本

拉取

docker pull imageName:targ			// iamgeName 想要拉取的镜像名;targ 目标镜像版本,如果不写默认latest最新版

创建镜像

docker commit -a author -m message containerID imageName:targ;  // -a 作者;-m 备注信息;containerID 准备上传的容器ID;imageName 创建的镜像名称;targ 镜像版本;
// imageName 如果是自己的私人镜像可以通过添加前缀进行区分, prefix/imageName
// targ 自己指定这个镜像的版本,用于区分。

推送至仓库

docker push registryPath/imageName:targ		// Push 到指定的仓库地址

查看本地镜像信息

docker images			// 查看本地镜像信息
docker images -a		// -a 全部镜像信息(包括中间层镜像)
docker images -q		// -q 只显示镜像ID
docker images --digests  // --digests 显示摘要信息
docker images --no-trunc // --on-trunc 显示完整的镜像信息

删除容器

docker rm containerID;		// 删除容器
docker rm -f containerID;	// 强制删除容器
docker rm -f $(docker ps -a -q); // 删除全部容器,$() 可以将括号内的执行结果赋值给外面的语句使用
docker ps -a -q | xargs docker rm; // 删除全部容器, | 管道符,xargs 自行参数,将前面语句的执行结果赋值后面的语句执行

删除镜像

docker rmi imageID/imageName:targ			// 删除指定镜像
docker rmi -f imageID/imageName:targ		// 强制删除指定镜像
docker rmi -f $(docker images -qa)			// 删除全部镜像

容器操作

docker start containerID/containerName		// 启动指定容器
docker restart containerID/containerName	// 重启指定容器
docker stop containerID/containerName		// 停止指定容器
docker kill containerID/containerName		// 强制停止指定容器
docker top containerID/containerName		// 容器内进程信息
docker attach containerID/containerName		// 进入容器内部
docker exec containerID/containerName COMMAND // 在容器内执行 COMMAND 命令,输出到宿主机
docker cp containerID:path hostPath			// 从容器中copy到主机中,这个顺序可以互换,作用就是从前一个地址复制到后一个地址
docker container ls						  // 查看容器列表
// 以上命令通过 docker container 命令也同样可用

docker日志查看

docker logs -f -t --tail 8		// -f 跟随最近日志打印;-t 加入时间戳;--tail num 显示最后num条

启动容器

docker run imageID/imageName		// 运行指定镜像
docker run -i -t imageID/imageName	// -i 以交互模式运行;-t 重新分配一个终端;
// 以 -it 进如交互式界面之后退出方法:# exit 关闭容器并退出;# ctrl+P+Q 推出交互界面
docker run -d imageID/imageName		// -d 后台运行,守护式容器
docker run -p 1234:8080 imageID/imageName	// -p 宿主机:容器 端口映射,可以有多个
docker run -P imageID/imageName		// -P 自动端口映射
docker run -e MYSQL_ROOT_PASSWORD=123456 mysql  // -e 添加一个运行变量
docker run --name name iamgeID/imageName // --name 自定义容器名称,如果不设定,默认自动配置
docker run -v /home/temp:/temp imageID/imageName   // -v VOLUME 挂载卷的映射

ps

docker ps				// docker 正在运行的container
docker ps -a			// -a 所有的,包括历史
docker ps -l			// -l 上一个container
docker ps -n 2			// -n num 展示最近的num 个
docker ps -q			// -q 只展示容器ID
docker ps --no-trunc	// 不截断输出

通过dockerFile 创建镜像

docker build -f /temp/dockerFile -t imageName:targ .	// 通过指定的dockerFile 创建镜像;-f 指定文件路径,如果在当前目录下可以不用加这个参数;-t 指定镜像名称;末尾的 “  .” 指定在当前目录下执行

容器数据卷

容器数据卷的目的是:数据的持久化,独立于容器自身的生存周期。

特点:

  • 多容器共享、重用数据
  • 卷中更改直接生效
  • 卷中数据的修改不会包含进镜像的更新中
  • 卷的生命周期一直到没有容器使用它为止
docker run -v /temp:/temp:ro imageID	// 挂载容器中的temp目录在宿主机的temp下,容器内的路径必须是真实存在的,宿主机的路径如果没有会自动创建。 :ro read-only 容器内文件只读属性
// 如果目标容器内有指定多个VLUME路径,通过多个 -v 进行挂载

卸载

systemctl stop docker			// 停止服务
yum -y remove docker-ce			// 卸载 docker-ce
rm -rf /var/lib/docker			// 移除目录文件

dockerFile

dockerFile 是 docker 在创建一个容器时的执行文件,docker 会按照这个文件创建一个容器实例。

dockerFile 保留字指令

FROM					// base镜像
MAINTAINER				// 镜像维护者信息
RUN 					// 构建时运行的指令 
EXPOSE					// 容器对外暴露的端口
WORKDIR					// 容器默认的工作的目录
ENV						// 构建中的环境变量
ADD						// 复制并解压文件
COPY					// 复制文件
VOLUME					// 挂载卷信息
CMD						// 指定一个容器启动时的运行命令,可以有多个,但只有最后一个生效,docker run 命令后的参数也是 CMD 命令
ENTRYPOINT				// 同上,不同之处在于,多个命令会进行追加执行
ONBUILD					// 继承触发器,当这个镜像被FROM时,会触发该命令后的指令

dockerFile 文件的编写,遵循简单的从上到下的执行顺序,具体的编写语法可以参考网上的其他资料或者dockerHub上的官方镜像的dockeFile。

你可能感兴趣的:(Docker,docker,linux,centos,运维)