一、前言(来自百度百科)
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
dockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。
二、个人理解:
本人认为如果要理解Docker,就必须理解容器与镜像的关系。可参考博文:https://www.cnblogs.com/bethal/p/5942369.html
Docker Image: Docker镜像
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。
Docker Container: Docker容器
一个正在运行的对外提供服务的容器,可以理解为就是一台服务器。该容器包含:操作系统、正在对外服务的软件。
为了快速方便应用的环境复制/快速移植,我们可以将该容器制作为镜像。
1. Docker启动容器时只会监听一个服务,因而如果该服务退出,那么所在容器也就会停止运行。
例:
1. docker run --name=”my_docker” centos:7 /bin/echo ‘Hello Docker!’
docker会下载centos 7(如果本地没有镜像的话),指定容器名为:my_docker,打印出Hello Docker! 然后便会自己退出了。这里监听了命令:/bin/echo ‘Hello Docker!’
2. docker run --name “my_linux” -it centos
下载的是最新的centos,容器命名为my_linux 监听的是/bin/bash,创建好my_linux容器后,会进入到容器中linux系统,对的,是的,没错,你在docker上面跑起来了一个系统。你可以在里面安装你想要的软件,例如mysql等等。
以Java web应用为例:通常我们会有数据库、tomcat、以及我们自己开发的软件。我们可以在安装数据库的centos容器打包成一个镜像,tomcat和我们的软件打包成一个镜像。这样我们就可以快速迁移我们的环境。只需要安装docker,拉去镜像,启动容器。
PS:来自一个百度了一天的Docker菜鸟,大神请指导。