认识Docker
Docker将用户程序与所需要调用的系统函数库一起打包,这样就可以实现不用去具体的系统是什么(比如ubuntu或者说centos)只要操作系统内核是Linux的就可以运行。这就解决了不同系统环境的问题。Docker应用运行在容器中,使用沙箱机制,相互隔离。
Docker与虚拟机
虚拟机是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在 Windows .系统里面运行Ubuntu系统,这样就可以运行任意的Ubuntu应用了。
镜像和容器
Docker将应用程序及所需要的依赖、函数库、环境、配置等文件打包在一起,称为镜像。
镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。可以说容器就是镜像运行的地方,除了一开始的应用程序所带的东西即(镜像),用户对应用程序产生的其余文件都是在容器中,对于镜像只能读取而不能写。
Docker和DockerHub
DockerHub是一个Docker镜像的托管平台。这样的平台称为Docker Registry。
Docker架构
Docker是一个CS架构的程序,由两部分组成:服务器和客户端。
客户端想要搭建一个镜像使用docker build指令发送给服务器,指令被服务器的docker daemon守护进程接收后构建一个一个镜像,或者可以使用docker pull让守护进程到Registry去拉取镜像。然后客户端使用docker run告诉服务器将镜像创建容器。
Docker的基本操作
镜像相关命令
//查看本地镜像列表
docker images
//删除镜像
docker rmi
//拉取远程仓库镜像
docker pull
//推送镜像
docker push
//将镜像打包
docker save
//加载本地压缩过的镜像
docker load
//命令可带参数或者没有带参数可以使用 docker 具体命令 --help查看
//或者docker --help查看所有
容器相关命令
/*
* docker run命令的参见参数
* --name 指定容器名称
* -p 指定端口映射
* -d 让容器后台运行
*
* 例子 docker run --name mn -p 80:80 -d nginx
*
*/
//docker logs 查看容器日子
//添加-f参数可以持续查看日志
//docker ps -a 查看所有状态的容器
//docker rm 删除容器
//docker exec -it [容器名][要执行的命令]
//exec命令可以进入容器修改文件,但是在容器内修改文件是不推荐的
数据卷
用来解决容器与数据耦合的问题。数据卷是一个虚拟目录,指向宿主机文件系统中的某个目录。这样子就不用每次都进入容器里面去修改文件内容。
挂载数据卷
我们在创建容器时,可以通过-v参数来挂载一个数据卷到某个容器目录
不仅仅是可以将数据卷挂载容器内部目录,还可以将宿主机文件挂载到容器内部文件,实现文件的覆盖。
自定义镜像
镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。
镜像由基础镜像层、中间层、入口层组成。基础镜像层包括基本的系统函数库、环境变量、文件系统。入口层是镜像中应用启动的命令。中间层是在基础层上添加依赖、安装程序、完成整个应用的安装和配置。
Dockerfile
Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
DockerCompose
Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。
Docker镜像仓库
首先我们要配置一下Docker信任地址
然后将Compose文件放入到本地文件下,并运行
将镜像推送到私有仓库需要现将本地镜像修改名字后,再推送如下:
然后在使用 docker push +镜像名字推送到私有仓库或者docker pull + 镜像名字从私有仓库中拉取镜像。