认识docker
关键词:开源,GO语言实现,虚拟容器技术。
docker项目的目标是实现轻量级的操作系统虚拟化解决方案。
docker的基础是linux容器(LXC)等技术。
docker与传统虚拟机的对比:
docker优势
- 更快速的交付和部署
一次创建和配置,在任一地方运行。 - 更高效的虚拟化
Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效 率 - 更轻松的迁移和扩展
Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器 等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个 - 更简单的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和 更新,从而实现自动化并且高效的管理
docker基本概念
镜像(image)
容器(container)
仓库(registry)
三者的关系可以用一个比方来说明:
image像是做饼干的模具,容器自然就是做出来的饼干,registry就是放各种各样模具的盒子。
定义模具的东西叫Dockerfile,它的定义和语法参见官网。
安装docker
官网(https://docs.docker.com/)有各种环境的安装指南,这里介绍centos7上的安装。
centos7已经自带了docker,可以直接安装。
$ sudo yum install docker
$ systemctl start docker
$ systemctl enable docker
$ docker version
安装完成。
查询 docker命令
$ docker --help
$ docker run --help
运行一个docker实例
上面提到的registry(仓库)分两种,公有仓库和私有仓库(如何搭建docker内网私服),我们可以从docker官方公有仓库(https://hub.docker.com/explore/)pull 镜像来感受docker的魅力。
启动docker
$ systemctl start docker
$ docker pull mysql
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
$ docker ps
$ docker run -it --link some-mysql:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
mysql跑起来了,enjoy!