docker容器
1、什么是docker容器
容器它是一个相对独立的运行环境,和虚拟机差不多但是还是和虚拟机有很大差别,容器的运行应该最小化其对外界的影响,做到合理的控制宿主机的资源。
容器映像是一个软件的轻量级独立可执行软件包,包含运行它所需的一切:代码,运行时,系统工具,系统库,设置。不管环境如何,集装箱化软件都可以运行相同的Linux和Windows应用程序。容器将软件与其周围环境隔离开来,例如开发环境和登台环境之间的差异,并有助于减少在同一基础架构上运行不同软件的团队之间的冲突。
2、Docker容器的特点
- 1.轻量级
在一台机器上运行的Docker容器共享该机器的操作系统内核; 他们立即开始并使用更少的计算和内存。图像由文件系统层构建并共享公用文件。这最大限度地减少了磁盘使用量,图像下载速度更快。
- 2.标准
Docker容器基于开放标准,可在所有主要Linux发行版,Microsoft Windows以及任何基础架构(包括虚拟机,裸机和云中)上运行。
- 3.安全
Docker容器将应用程序彼此隔离并从底层基础架构中分离出来。Docker提供了最强大的默认隔离功能,可以将应用程序问题限制在一个容器中,而不是整个机器上。
3、容器的使用
- 镜像的获取
使用使用 docker pull (镜像名)命令来载入镜像
- 镜像的删除
删除镜像的时候要保证镜像未被使用,如果存在正在运行的docker容器,删除会报错“Error: container_delete: Impossible to remove a running container, please stop it first”
docker images可以列出当前服务器上所有存在的docker镜像
docker rmi 容器id来删除一个镜像,如图所示,因为镜像是采用分层存储,所以删除时,显示很多标签
docker image -q #列出所有的镜像ID
docker rmi `docker image -q` #删除所有的镜像
- 镜像和容器
Docker镜像:docker 的镜像概念类似虚拟机的镜像。是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。( docker create <image -id > :为指定的镜像添加一个可读写层,构成一个新的容器);docker提供了一个很简单的机制来创建镜像或更新现有的镜像。用户甚至可以从其他人那里下载一个已经做好的镜像直接使用。(镜像是只读的,可以理解为静态文件);docker镜像实际上是由一层一层的系统文件组成,这种层级的文件系统被称为UnionFS( Union file system 统一文件系统),镜像可以基于dockerfile构建,dockerfile是一个描述文件,里面包含了若干条密令,每条命令都会对基础文件系统创建新的层次结构。
Docker容器:容器是由镜像实例化而来,这和我们学习的面向对象的概念十分相似,我们可以把镜像看作类,把容器看作类实例化后的对象。docker容器类似虚拟机,可以执行包含启动,停止,删除等。每个容器间是相互隔离的。容器中会运行特定的运用,包含特定应用的代码及所需的依赖文件。可以把容器看作一个简易版的linux环境(包含root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序。
总结:镜像是Docker容器的基石,容器是镜像的运行实例,有了镜像才能启动容器。
- 使用docker run 镜像名 /bin/bash 启动一个镜像容器
参数说明:
-i: 交互式操作。
-t: 终端。
-d:后台启动
centos: centos镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
- 使用exit退出
- 查看所有容器 docker ps -a(docker ps 查看启动的容器)
-
- 启动容器 docker start 容器id
- 停止容器 docker stop 容器id
- 重启容器 docker restart 容器id
- 进入后台启动的容器(docker attach 容器id)
- 容器的导出 docker export 容器id
- 容器的导入 docker import 文件
cat ./centos7.tar | sudo docker import - cenn:v1
cenn:v1 新镜像名字
使用 sudo docker images 查看导入
docker import http://example.com/exampleimage.tgz example/imagerepo 通过连接导入
- 容器的删除 docker rm
docker container prune 清除所有处于终止状态的容器