docker 入门到精通只要3天(一)
前言
2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司。
这家公司主要提供基于PaaS的云计算技术服务。具体来说,是和LXC有关的容器技术。后来,dotCloud公司将自己的容器技术进行了简化和标准化,并命名为——Docker。
Docker技术诞生之后,并没有引起行业的关注。而dotCloud公司,作为一家小型创业企业,在激烈的竞争之下,也步履维艰。正当他们快要坚持不下去的时候,脑子里蹦出了“开源”的想法。
2013年3月,dotCloud公司的创始人之一,Docker之父,28岁的Solomon Hykes正式决定,将Docker项目开源。
不开则已,一开惊人。
越来越多的IT工程师发现了Docker的优点,然后蜂拥而至,加入Docker开源社区。
Docker的人气迅速攀升,速度之快,令人瞠目结舌。
开源当月,Docker 0.1 版本发布。此后的每一个月,Docker都会发布一个版本。到2014年6月9日,Docker 1.0 版本正式发布。
此时的Docker,已经成为行业里人气最火爆的开源技术,没有之一。甚至像Google、微软、Amazon、VMware这样的巨头,都对它青睐有加,表示将全力支持。
Docker火了之后,dotCloud公司干脆把公司名字也改成了Docker Inc. 。
1、docker 是什么?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
- DockerClient客户端
- Docker Daemon守护进程
- Docker Image镜像
- DockerContainer容器
没有 docker 之前,需要把一套环境用到的所有工具都部署一遍,花费的时间非常久。 有了 docker 之后,你只需要把环境打包成一个镜像,复制到另外一台服务器上安装镜像即可。
docker 能干什么?
虚拟化软件运行环境,以最小的代价换取最大的资源。比如以前一台服务器只能同时跑 3 个 Redis,用了 docker 之后能跑 30 个。并且每个 Redis 是相互隔离的,这也是 docker 图标上集装箱所想表达的思想。
2、docker 中的名词概念
仓库(repository):Docker hub,存放在镜像的地方,国内可配置镜像加速下载。 镜像(image):是一个模块,可基于此模板运行处多个容器。 容器(container):通过镜像创建的独立运行的一个或一组应用。
3、安装 docker
docker 文档:https://docs.docker.com/
Linux 系统要求
CentOS 7 或者更高版本。
卸载老版本
# 卸载老版本 $ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 删除资源目录 rm -rf /var/lib/docker
配置国内镜像加速
mkdir -p /etc/docker vi daemon.json { "registry-mirrors": ["http://hub-mirror.c.163.com"] } systemctl daemon-reload systemctl restart docker
4、Hello World
[root@localhost ~]# docker run hello-world #############################从docker hub下载hello-world镜像############################### Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 0e03bdcc26d7: Pull complete Digest: sha256:1a523af650137b8accdaed439c17d684df61ee4d74feac151b5b337bd29e7eec Status: Downloaded newer image for hello-world:latest ############################运行hello-world容器############################################ Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
docker hello-world 运行流程
docker 先在本地寻找 hello-world 镜像没有找到就会去 docker hub 中下载,下载完成之后 docker 运行容器 hello-world,后台会有一个守护进程,所谓的守护进程可以理解为一个 24 小时不中断运行的程序。我们通过 docker 命令调用守护进程,执行对应的方法完成操作。
docker 底层原理图
docker 为什么快,因为他不需要 Guest OS, Guest OS 就是你在虚拟机中安装的 CentOS、Ubuntu,Guest OS 启动时需要进行很多引导操作,非常消耗性能。而 docker 直接利用宿主机的内容加上 docker engine 就能运行容器,极大地节省了性能开销。所以说 docker 是秒级,虚拟机是分钟级。
结语
以上就是今天要讲的内容,本文仅仅简单介绍了Docker的使用,后续内容会相继更新完整的,最后,希望看这篇帖子的朋友能够有所收获,也欢迎同学们,在文章后面留言讨论和我交流。