ITKeyword,专注技术干货聚合推荐

注册 | 登录

docker 容器

wanglei_storage 分享于 2015-09-07

推荐:Docker学习笔记 — Docker容器

基本概念 Docker利用容器运行应用,容器是从镜像创建的运行实例,每个容器都是相互隔离的。 镜像是只读的,容器在启动的时候在其上创建了一层可读写层。 启动和

2020腾讯云7月秒杀活动,优惠非常大!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1040

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

docker 容器(container)类似于一个轻量级的沙箱,docker 利用容器来运行和隔离应用。
容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是互相隔离,互不可见的。
可以把容器看做一个简易版的 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 导入与导出容器

如果要导出本地某个容器,可以使用 docker export 命令,可以使用 docker import 从容器快照文件中再导入为镜像 1、首先查找正在运行的容器ID 2、然后使用 docke

>> 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创建redis容器

下载redis数据库image $ docker pull dockerfile/redis #根据官方DockerFile下载并创建镜像 创建redis容器实例,我们使用了Docker的端口映射机制,从而我们就可以

docker 容器(container)类似于一个轻量级的沙箱,docker 利用容器来运行和隔离应用。 容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是互相隔离,互不可见的

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。