开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天,点击查看活动详情
简介
Docker实际上是一种容器,是用来简单盛放一些软件的东西。我们把一个自助餐比作一台服务器,那么就可用把容器比作我们手中的盘子,自助餐上的食物尽管琳琅满目,但是有很多不是我们不想吃的,我们需要的、想吃的就将他放在我们的盘子当中,这个盘子虽小但具备了我们吃饭的基本功能,自助餐虽多但又太繁重。我们在使用容器只需要将我们需要的或者别人需要的放在盘子之后就行了。
容器
容器是与系统其他部分分隔开的一个或者一组进程。运行这些进程所需的所有文件都由另一个镜像去提供,这意味着从开发到测试再到生产的整个过程中,Linux容器都具有可移植性和一致性。因而,相对于依赖重复传统测试环境的开发过程,使用容器要方便快捷的多。容器比较普遍也易于使用。
为什么要使用容器?
假如说我们要开发一个应用。我们的开发环境肯定是具有特定的配置之类的。而且我们和其他开发人员所身处的配置环境可能稍有不同。你正在开发的应用不仅仅依赖你当前的配置环境,还需要某些特定的库、依赖项和文件之类的。除此之外,你的公司也具有标准化的开发和生产环境,有着自己的配置和一系列支持文件。为了能够顺利的通过测试和运行,你肯定希望在其他机器上尽可能的模拟出自己本地的这些环境。所以,要确保应用能够在其他环境顺利运行,并且在部署过程中不出现令人头疼的问题,也无需重新编写代码和修复故障,其答案就是使用容器。
容器不就是虚拟化吗?
不完全是。更确切的说法应该是:两者为互补关系。
1.虚拟化是的你的操作系统可同时在单个硬件系统上运行。
2.容器则可共享同一个操作系统内核,将应用进程与系统其他部分隔离开。
Docker有着比虚拟机更少的抽象层且Docker利用的是宿主机的内核,而虚拟机需要的是Guest OS。所以说,新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导。虚拟机加载Guest OS是分钟级别的,而docker是利用宿主机的操作系统省略了这一复杂过程。
Docker常用命令:
帮助命令:
docker version
docker info
docker help
镜像命令:
docker images:查看所有本地的主机上的镜像
-a:列出所有镜像
-q:只显示镜像ID
docker search:搜索镜像
-f(filter): 过滤
docker pull 镜像名 [:Tag]:下载镜像//如果不写tag,默认就是lastest
docker rmi:删除镜像
-f +镜像ID
容器命令(有了镜像才可以创建容器,linux用容器下载一个虚拟机)
docker run [可选参数] image
-name:容器名字,tomcat01…..,用来区分容器
-d:后台方式运行
-it:使用交互方式运行,进入容器查看内容
-P:随机指定端口
-p:指定容器端口 -p 8080
-p 主机端口:容器端口
docker ps:查看运当前行中的容器
-a:查看正在运行的容器和曾经运行的容器
-n=?:显示当前最近创建的容器
-q:只显示容器的编号
退出容器:
exit:退出并停止容器
Ctrl+P+Q:容器不停止退出
删除容器:
docker rm 容器id:删除指定的容器
docker rm -f $(docker ps -aq):删除所有的容器
docker ps -a -q | xargs docker rm:删除所有容器
启动和停止容器的操作:
docker start +id:启动容器
docker restart +id:重启容器
docker stop +id:停止当前正在运行的容器
docker kill +id:强制停止当前容器
Docker镜像
Docker镜像给我们带来了极大的操作便利。那么什么是镜像呢?镜像是一种轻量级,可执行的独立的软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含某个软件所需的所有内容,包括代码、运行时的库、环境变量和配置文件等等。
Docker镜像加载原理:(UoionFS:联合文件系统)
UFS是一种分层的、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。镜像可以通过分层来进行继承, 基于基础镜像(没有父镜像), 可以制作各种具体的应用镜像。
容器数据卷
容器之间可以由一个数据共享技术!Docker容器中产生的数据,同步到本地。这就是卷技术!目录的挂载,将我们容器的目录,挂载到Linux上面!!!
docker run -it -v 主机目录 : 容器内目录