docker 容器
2015-09-07 10:12
746 查看
docker 容器(container)类似于一个轻量级的沙箱,docker 利用容器来运行和隔离应用。
容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是互相隔离,互不可见的。
可以把容器看做一个简易版的 linux 系统环境(包括 root 用户权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序打包而成的应用盒子。
镜像自身是只读的。容器从镜像启动的时候,docker会在镜像的最上层创建一个可写成,镜像本身保持不变。
创建容器
新建并启动容器(启动容器有两种方式)
当利用docker run来创建并启动容器时,Docker在后台运行的标准操作包括:
检查本地是否存在指定的镜像,不存在就从公有仓库下载
利用镜像创建并启动一个容器
分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
从地址池配置一个IP地址给容器
执行用户指定的应用程序
执行完毕后容器被终止
守护态运行 -d
终止容器
进入容器(attach,exec,nsenter)
在使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息。某些时候如果需要进入容器进行操作,有多种方法
attach 命令
exec 命令
nsenter 工具
获取进行PID,并且通过这个PID,连接容器
删除容器
导入和导出容器
导出容器
-只导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态,可以使用docker export命令
导入容器
区别:
容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态)
镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息
容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是互相隔离,互不可见的。
可以把容器看做一个简易版的 linux 系统环境(包括 root 用户权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序打包而成的应用盒子。
镜像自身是只读的。容器从镜像启动的时候,docker会在镜像的最上层创建一个可写成,镜像本身保持不变。
创建容器
>> docker create centos:latest #创建centos容器 >> docker start centos_ID #启动centos容器 >> docker stop centos_ID #停止centos容器
新建并启动容器(启动容器有两种方式)
(1)、基于镜像新建一个容器并启动;docker create;docker start。前面两条命令等价于docker run (2)、将在终止状态的容器重新启动;docker start 例如,下面的命令输出一个'Hello World',之后容器自动终止: >> docker run centos /bin/echo 'Hello World !!!'
当利用docker run来创建并启动容器时,Docker在后台运行的标准操作包括:
检查本地是否存在指定的镜像,不存在就从公有仓库下载
利用镜像创建并启动一个容器
分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
从地址池配置一个IP地址给容器
执行用户指定的应用程序
执行完毕后容器被终止
守护态运行 -d
>> docker run -d centos:latest /bin/bash -c "while true;do echo hello world;sleep 1;done" >> docker logs container_id #查看docker输出的信息
终止容器
>> docker stop container_ID #停止容器 >> docker restart container_ID #重启容器 >> docker start container_ID #启动容器 >> docker kill container_ID #强制杀死容器 >> docker ps -a -q #只显示出所有容器的ID
进入容器(attach,exec,nsenter)
在使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息。某些时候如果需要进入容器进行操作,有多种方法
>> docker attach >> docker exec >> nsenter
attach 命令
>> docker run -itd centos >> docker ps -a >> docker attach container_ID
exec 命令
可以直接在容器内运行命令。例如进入到刚创建的容器,并启动一个bash >> docker exec -ti 36ba269d463d /bin/bash >> ps -ef | grep bash #如果多增加一个终端,就可以看到多出一个bash
nsenter 工具
nsenter工具在util-linux包中,下面为源码安装 >> cd /tmp ; >> wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz >> tar zxf util-linux-2.24.tar.gz >> ./configure --without-ncurses >> make nsenter && cp nsenter /usr/local/bin
获取进行PID,并且通过这个PID,连接容器
>> PID=$(docker inspect --format "{{ .State.Pid }}" container_ID) >> nsenter --target $PID --mount --uts --ipc --net --pid
删除容器
>> docker rm container_ID #删除容器 >> docker rm -f container_ID #强制删除正在运行中的容器
导入和导出容器
导出容器
-只导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态,可以使用docker export命令
格式为 docker export CONTAINER >> docker export container_ID > /tmp/centos.tar 可将这个文件传输到其他机器上,在其他机器上通过导入命令实现容器的迁移
导入容器
导出的文件又可以使用docker images命令导入,成为镜像 >> cat centos.tar | docker import - centps:1 >> docker load 命令来导入镜像存储文件到本地的镜像库 >> docker import 命令来导入一个容器快照到本地镜像库
区别:
容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态)
镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息
相关文章推荐
- docker 镜像
- Amazon 的 Docker - AWS ECS 是否適合作為網站部署的方案
- Docker的镜像和容器的区别
- docker--elasticsearch配置多机集群
- 在KCloud上轻松“玩转”Docker
- docker-安装
- docker 入门准备step1
- Docker On Gaia——腾讯Docker管理解决方案
- 一步一步在docker中构建CI流程
- 用Hello World校验Docker的安装
- Docker简要教程
- Docker在Ubuntu的部署实践
- Docker学习笔记(一):在本地安装和配置Docker
- 如何使用 Weave 以及 Docker 搭建 Nginx 反向代理/负载均衡服务器
- 如何使用 Weave 以及 Docker 搭建 Nginx 反向代理/负载均衡服务器
- 2.1.4、初识Docker Hub
- Docker认识基础
- CentOS6.5 2.6.32-431 安装Docker1.8.1
- Docker它是个啥?
- 深入理解 Docker 镜像 json 文件