1.镜像介绍
docker可以看成是一个文件系统,他提供了除内核外的完整的运行时的环境。也就是说在这个文件系统里,可以包含部署的应用程序。这样做的好处是提高了工程的迁移性,提高同时也保证了对线上环境更好的控制,而且比起虚拟机技术,docker可以获得更好的性能,但是他的隔离性要稍微差一些。
有关概念:镜像,容器,仓库。
镜像
docker的镜像时分层存储的,在构建镜像时,每一条指令都会使docker多加一层,而且构建时添加的不能真正的删除。因此在构建镜像的时候,需要认真的考虑每一层是什么,不要无脑的add copy。
容器
容器就是运行起来得镜像,镜像和容器的关系,就相当于面相对象编程语言里的类与对象的关系。
仓库
用了存储镜像的,一个仓库里面有很多的标签,一个标签对应一个镜像。(tag:image)
Docker Registry
Docker Registry里可以有很多的仓库,有共有的Docker Registry也有私有的Docker Registry。
2.指令
获取镜像
docker pull [选项] [Docker Registry地址]<仓库名>:<标签>
运行容器
docker run,加-d则以守护态运行容器。
列出镜像
docker image
进入容器
docker exec
提交容器
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
容器的导入、导出
docker import,docker export。
终止容器
docker stop
其他命令:
copy,add,cmd,entrypoint,env,arg,volume,expose,workdir,user.healthcheck,onbuild。
数据管理
创建数据卷
为了统一管理应用程序日,可以使用数据卷。数据卷用-v命令
sudo docker run -d -P --name web -v /webapp training/webapp py
thon app.py
删除数据卷
docker rm -v
数据卷容器
数据卷容器就是专门提供数据卷,供其他容器挂载。
创建一个数据卷容器:
sudo docker run -d -v /dbdata --name dbdata training/postgres
echo Data-only container for postgres
在其他容器中使用volumes-from来挂载dbdata 容器中的数据卷。
网络
在docker中,可以使用-p或者是-P来指定端口。
在这里说下dcoker会有一个默认的虚拟桥接网卡,dcoker0,所有的docker容器都会接到该网卡上,因此只要将该网卡加入到路由信息表中,就可以把docker容器暴露在真实的局域网中。
底层实现
Docker 采用了 C/S架构,包括客户端和服务端。 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。
客户端和服务端既可以运行在一个机器上,也可通过 socket 或者 RESTful API 来进行通信。
Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon交互。