Docker 是一个开源的应用容器引擎,基于 Go 语言 并听从 Apache2.0 协议开源。
Docker 可让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,而后发布到任何流行的 Linux 机器上,也能够实现虚拟化。
容器是彻底使用沙箱机制,相互之间不会有任何接口(相似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本以后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),咱们用社区版就能够了。docker
Docker 包括三个基本概念:数据库
镜像(Image):Docker 镜像(Image),就至关因而一个 root 文件系统。好比官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例同样,镜像是静态的定义,容器是镜像运行时的实体。容器能够被建立、启动、中止、删除、暂停等。
仓库(Repository):仓库可当作一个代码控制中心,用来保存镜像。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和建立Docker容器。编程
Docker 容器经过 Docker 镜像来建立。ubuntu
容器与镜像的关系相似于面向对象编程中的对象与类。centos
Web 应用的自动化打包和发布。bash
自动化测试和持续集成、发布。服务器
在服务型环境中部署和调整数据库或其余的后台应用。markdown
从头编译或者扩展示有的 OpenShift 或 Cloud Foundry 平台来搭建本身的 PaaS 环境。架构
Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您可以将应用程序与基础架构分开,从而能够快速交付软件。借助 Docker,您能够与管理应用程序相同的方式来管理基础架构。经过利用 Docker 的方法来快速交付,测试和部署代码,您能够大大减小编写代码和在生产环境中运行代码之间的延迟。app
一、快速,一致地交付您的应用程序
Docker 容许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工做,从而简化了开发的生命周期。
容器很是适合持续集成和持续交付(CI / CD)工做流程,请考虑如下示例方案:
您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工做。
他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
当开发人员发现错误时,他们能够在开发环境中对其进行修复,而后将其从新部署到测试环境中,以进行测试和验证。
测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境同样简单。
二、响应式部署和扩展
Docker 是基于容器的平台,容许高度可移植的工做负载。Docker 容器能够在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。
Docker 的可移植性和轻量级的特性,还可使您轻松地完成动态管理的工做负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。
三、在同一硬件上运行更多工做负载
Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,所以您能够利用更多的计算能力来实现业务目标。Docker 很是适合于高密度环境以及中小型部署,而您能够用更少的资源作更多的事情。
CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux(RHEL) 依照开放源代码规定发布的源代码所编译而成。因为出自一样的源代码,所以有些要求高度稳定性的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。
一、查看可用的 CentOS 版本
访问 CentOS 镜像库地址:https://hub.docker.com/_/centos?tab=tags&page=1。
能够经过 Sort by 查看其余版本的 CentOS 。默认是最新版本 centos:latest 。
你也能够在下拉列表中找到其余你想要的版本:
二、拉取指定版本的 CentOS 镜像,这里咱们安装指定版本为例(centos7):
$ docker pull centos:centos7
三、查看本地镜像
使用如下命令来查看是否已安装了 centos7:
$ docker images
四、运行容器,而且能够经过 exec 命令进入 CentOS 容器。
$ docker run -itd --name centos-test centos:centos7
五、安装成功
最后咱们能够经过 docker ps 命令查看容器的运行信息:
Docker 容许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。
输出Hello world
runoob@runoob:~$ docker run ubuntu:15.10 /bin/echo "Hello world"
Hello world
各个参数解析:
docker: Docker 的二进制执行文件。
run: 与前面的 docker 组合来运行一个容器。
ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,若是不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
/bin/echo “Hello world”: 在启动的容器里执行的命令
以上命令完整的意思能够解释为:Docker 以 ubuntu15.10 镜像建立一个新容器,而后在容器里执行 bin/echo “Hello world”,而后输出结果。
运行交互式的容器
咱们经过 docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力:
runoob@runoob:~$ docker run -i -t ubuntu:15.10 /bin/bash
root@0123ce188bd8:/#
各个参数解析:
-t: 在新容器内指定一个伪终端或终端。
-i: 容许你对容器内的标准输入 (STDIN) 进行交互。
注意第二行 root@0123ce188bd8:/#,此时咱们已进入一个 ubuntu15.10 系统的容器
咱们尝试在容器中运行命令 cat /proc/version和ls分别查看当前系统的版本信息和当前目录下的文件列表
root@0123ce188bd8:/# cat /proc/version
Linux version 4.4.0-151-generic (buildd@lgw01-amd64-043) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) ) #178-Ubuntu SMP Tue Jun 11 08:30:22 UTC 2019
root@0123ce188bd8:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@0123ce188bd8:/#
咱们能够经过运行 exit 命令或者使用 CTRL+D 来退出容器。
root@0123ce188bd8:/# exit
exit
root@runoob:~#
注意第三行中 root@runoob:~# 代表咱们已经退出了当前的容器,返回到当前的主机中。
启动容器(后台模式)
使用如下命令建立一个以进程方式运行的容器
runoob@runoob:~$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
在输出中,咱们没有看到指望的 “hello world”,而是一串长字符
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
这个长字符串叫作容器 ID,对每一个容器来讲都是惟一的,咱们能够经过容器 ID 来查看对应的容器发生了什么。
首先,咱们须要确认容器有在运行,能够经过 docker ps 来查看:
runoob@runoob:~$ docker ps
CONTAINER ID IMAGE COMMAND …
5917eac21c36 ubuntu:15.10 “/bin/sh -c 'while t…” …
输出详情介绍:
CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。
CREATED: 容器的建立时间。
STATUS: 容器状态。
状态有7种:
created(已建立)
restarting(重启中)
running 或 Up(运行中)
removing(迁移中)
paused(暂停)
exited(中止)
dead(死亡)
PORTS: 容器的端口信息和使用的链接类型(tcp\udp)。
NAMES: 自动分配的容器名称。
在宿主主机内使用 docker logs 命令,查看容器内的标准输出:
runoob@runoob:~$ docker logs 2b1b7a428627
runoob@runoob:~$ docker logs amazing_cori
中止容器
咱们使用 docker stop 命令来中止容器:
经过 docker ps 查看,容器已经中止工做:
runoob@runoob:~$ docker ps
能够看到容器已经不在了。
也能够用下面的命令来中止:
runoob@runoob:~$ docker stop amazing_cori总结 总的来讲Docker 是一个不错的开源应用容器引擎,值得去研究一下,今天的分享就到这里,咱们下期再见