一、镜像相关命令
镜像名称一般分两部分组成:[repository]:[tag]。
在没有指定tag时,默认是latest,代表最新版本的镜像
镜像操作命令
二、容器相关命令
总结:
docker run命令的常见参数有哪些?
1. --name:指定容器名称
2. -p:指定端口映射
3. -d:让容器后台运行
查看容器日志的命令:
docker logs
添加 -f 参数可以持续查看日志
查看容器状态:
docker ps
总结:
查看容器状态:
1. docker ps
2. 添加-a参数查看所有状态的容器
删除容器:
1. docker rm
2. 不能删除运行中的容器,除非添加 -f 参数
进入容器:
1. 命令是docker exec -it [容器名] [要执行的命令]
2. exec命令可以进入容器修改文件,但是在容器内修改文件是不推荐的
三、数据卷
容器与数据耦合的问题
数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。
操作数据卷
总结:
数据卷的作用:
将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全
数据卷挂载
总结:
数据卷挂载方式:
1. -v volumeName: /targetContainerPath
2. 如果容器运行时volume不存在,会自动被创建出来
目录直接挂载
总结:
1. docker run的命令中通过 -v 参数挂载文件或目录到容器中:
(1)-v volume名称:容器内目录
(2)-v 宿主机文件:容器内文件
(3)-v 宿主机目录:容器内目录
2. 数据卷挂载与目录直接挂载的
(1)数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找
(2)目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看
四、Dockerfile自定义镜像
镜像结构
镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。
镜像是分层结构,每一层称为一个Layer
1. BaseImage层:包含基本的系统函数库、环境变量、文件系统
2. Entrypoint:入口,是镜像中应用启动的命令
3. 其它:在BaseImage基础上添加依赖、安装程序、完成整个应用的安装和配置
什么是Dockerfile
Dockerfile 就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
更新详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/builder
总结:
1. Dockerfile的本质是一个文件,通过指令描述镜像的构建过程
2. Dockerfile的第一行必须是FROM,从一个基础镜像来构建
3. 基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine
五、DockerCompose
什么是DockerCompose
Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!
Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。
DockerCompose的详细语法参考官网:https://docs.docker.com/compose/compose-file/
总结:
DockerCompose有什么作用?
帮助我们快速部署分布式应用,无需一个个微服务去构建镜像和部署。
部署微服务集群
六、 Docker镜像仓库
镜像仓库( Docker Registry )有公共的和私有的两种形式:
1.公共仓库:例如Docker官方的 Docker Hub,国内也有一些云服务商提供类似于 Docker Hub 的公开服务,比如 网易云镜像服务、DaoCloud 镜像服务、阿里云镜像服务等。
2. 除了使用公开仓库外,用户还可以在本地搭建私有 Docker Registry。企业自己的镜像最好是采用私有Docker Registry来实现。
在私有镜像仓库推送或拉取镜像
总结:
1. 推送本地镜像到仓库前都必须重命名(docker tag)镜像,以镜像仓库地址为前缀
2. 镜像仓库推送前需要把仓库地址配置到docker服务的daemon.json文件中,被docker信任
3. 推送使用docker push命令
4. 拉取使用docker pull命令
























