微服务技术栈(九) - Docker(基本操作)

一、镜像相关命令

镜像名称一般分两部分组成:[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命令


版权声明:本文为yirenyuan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。