四、 Docker 架构
Docker使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器。
介绍:
- 1、Docker的客户端client,我们在命令行发送一些信息(命令)给Docker服务端。
- 2、中间这个就是Docker的服务端,在这个服务端里面,它是一个引擎,用来管理容器的,所以用引擎我们可以基于镜像来创建容器。
- 3、右边就是仓库,中心仓库就是Docker hub仓库,存放了成千上万的镜像。
- 4、Docker容器通过Docker镜像来创建。
- 有人会误以为,Docker就是容器,但Docker不是容器,而是管理容器的引擎。
容器的基本概念
容器是从镜像创建的运行实例。它可以被启动、停止、删除。每个容器都是相互隔离的、保证安全平台。可以把看做一个简易版的 Linux环境,包括root用户权限、进程空间、用户空间和网络空间和运行在其中的应用程序。
Docker利用容器来运行应用,镜像是只读的,容器在启动的时候创建一层可写层作为最上层。
仓库的概念:
仓库是集中存放镜像文件的场所,有时候会把仓库和仓库注册服务器(Registry)看做同一事物,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag) ,tag你可以粗略理解为版本;
仓库分为公开仓库(Public)和私有仓库(Private)两种形式;最大的公开仓库是 Docker Hub(https://hub.docker.com/) ,存放了数量庞大的镜像供用户下载; 当然,用户也可以在本地网络内创建一个私有仓库;
当用户创建了自己的镜像之后就可以使用push命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull下来即可;
注:Docker仓库的概念跟Git类似,注册服务器也类似于GitHub这样的托管服务;
用户可通过docker search命令来查找官方仓库中的镜像: 例如 docker search tomcat,并利用docker pull命令来将它下载到本地:
可以看到返回了很多包含关键字的镜像,其中包括镜像名字、描述、星级(表示该镜像的受欢迎程度)、是否官方创建、是否自动创建;官方的镜像说明是官方项目组创建和维护的,automated资源允许用户验证镜像的来源和内容;
根据是否是官方提供,可将镜像资源分为两类:
一种是类似centos这样的基础镜像,被称为基础或根镜像。这些基础镜像是由Docker公司创建、验证、支持、提供。这样的镜像往往使用单个单词作为名字;
还有一种类型,比如tianon/centos镜像,它是由Docker的用户创建并维护的,往往带有用户名称前缀。可以通过前缀user_name/来指定使用某个用户提供的镜像,比如tianon用户;
从Docker 仓库下载镜像到本地,镜像名称格式为 名称号:版本号,如果版本号不指定则是最新的版本。如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。如果你反复执行pull,它会把这个镜像下载到最新版本。
docker pull 镜像名称 例如:docker pull tomcat
五、Docker使用示例
5.1、Docker安装MySQL
docker pull mysql (你也可以加上版本号,指定版本)
接下来我们运行mysql镜像并且访问容器:
docker run -d -p 3306:3306 mysql -e MYSQL_DATABASE = workdb -e MYSQL_ROOT_PASSWORD = 123456
到时候容器启动之后,你去访问mysql的时候,会有一个数据库的名字叫做workdb,密码123456
5.2、Docker安装nginx
下载Nginx镜像:
docker pull nginx
docker run -d -p 80:80 nginx
docker exec -it 容器id bash (用docker ps 查看容器id)
访问nginx: http://123.57.144.31:80