Docker实战(一)容器管理

日期:2016年04月26日 作者: 分类:运维 浏览:3909

Linux容器技术很早就有了,比较有名的是被集成到主流Linux内核中的LXC项目。容器通过对操作系统的资源访问进行限制,构建成独立的资源池,让应用运行在一个相对隔离的空间里,同时容器间也可以进行通信。

容器技术对比虚拟化技术,容器比虚拟化更轻量级,对资源的消耗小很多。容器操作也更快捷,启动和停止都要比虚拟机快。但Docker容器需要与主机共享操作系统内核,不能像虚拟机那样运行独立的内核。

Docker是一个基于LXC技术构建的容器引擎,基于GO语言开发,遵循Apache2.0协议开源。Docker的发展得益于为使用者提供了更好的容器操作接口。包括一系列的容器,镜像,网络等管理工具,可以让用户简单的创建和使用容器。

Docker支持将应用打包进一个可以移植的容器中,重新定义了应用开发,测试,部署上线的过程,核心理念就是 Build once, Run anywhere。

Docker容器技术的典型应用场景是开发运维上提供持续集成和持续部署的服务。

一、Docker安装

Docker的安装教程非常多,此处就不写了,各种系统下安装教程可以点击查看官方安装文档

二、创建第一个容器

如果我们需要一个保持运行的容器呢,最简单的方法就是给这个容器一个可以保持的应用,比如bash,运行 ubuntu 容器并进入容器的 bash:

docker run -t -i ubuntu /bin/bash

Screenshot from 2016-04-26 12:52:40

上面命令的说明:

1. -t:分配一个 pseudo-TTY

2. -i:--interactive参数缩写,表示交互模式,如果没有 attach 保持 STDIN 打开状态

3. ubuntu:运行的镜像名称,默认为latest 标签

4. /bin/bash:容器中运行的应用

通过这个简单的命令,我们现在进入了新创建容器的bash中,在bash里执行的任何命令都不会影响到我们的宿主机,可以随意操作。你可以看到主机名和环境变量 HOSTNAME 都已经显示为容器的ID了。

在这个bash下,我们可以进行各种Ubuntu系统上的操作,当然因为Docker本身的限制,有些涉及到磁盘、网络、设备等Linux特权命令是无法执行的,可以试试reboot命令,会提示你shutdown: Unable to shutdown system。

三、查看容器信息

docker ps 命令最常用,可以列出所有容器的信息,默认情况下只显示运行状态的容器。

下面是最常用的一些docker命令:

# 查看所有的容器
docker ps -a

# 查看容器内进程信息
docker top 容器ID或名称
# 假设容器名称为redis
docker top redis

# 查看容器详细信息,包括创建时间,操作命令,端口映射信息,IP地址等等。
docker inspect 容器ID或名称
# 假设容器名称为redis
docker inspect redis

# 查看到运行状态容器的CPU,内存及网络使用率。
# 查看所有容器
docker stats
# 查看某个容器
docker stats 容器ID或名称

四、创建容器

创建一个容器的命令是 docker run。

docker run命令的执行步骤:

1. 查找镜像或下载镜像
2. 创建容器
3. 分配文件系统及虚拟网络(网桥,接口,IP地址),其中容器中的DNS默认挂载宿主机的/etc/resolve.conf和 /etc/hosts。
4. 执行应用,默认执行镜像中指定的CMD参数,也可以在docker run后面跟应用来覆盖CMD命令。

如果容器中的应用执行完成,则容器进入到终止状态。

我们可以通过查询 docker run --help ,使用相关参数,创建符合要求的容器。

比如创建一个名称叫 redis ,hostname 叫 docker ,并在后台运行的容器,基础镜像使用官方提供的redis镜像:

docker run -d --name redis --hostname docker redis

Docker容器管理

五、容器运行管理

以刚才创建的 redis 容器为例,容器名称为 redis ,容器ID为 3b5bef0b179c

# 停止容器,用名称
docker stop redis
# 停止容器,用ID,一般ID前几位就可以识别了
docker stop 3b5b

# 启动没有运行的容器
docker start redis

# 重启运行中的容器
docker restart redis

# 杀死容器
docker kill redis

# 删除没有运行的容器
docker rm redis
# 强制删除运行中的容器
docker rm -f redis

六、导出导入容器

1. 导出容器快照到本低tar包。

导出后的文件可以拷贝到其他 Docker 服务器上执行导入命令形成新的镜像。

实验过程:

查看当前环境中的容器,选择需要导出的容器
导出容器到tar包,保存到用户当前目录
查看导出的tar包

Screenshot from 2016-04-26 14:18:44

2. 将之前导出的tar包导入成镜像

我们执行导入命令,将该文件加载到docker系统中,文件加载后会成为镜像,命令执行时需要制定导入后生成的镜像的名字:

cat /root/test1.tar | docker import - test1:1.0

Docker容器管理

测试:利用导入生成的镜像创建容器

Docker容器管理

 

PS:本Docker实战教程系列中使用的操作系统是基于Debian的LMDE2,教程中的命令均已运行测试,如有雷同,我抄你的!!!

标签:

除非注明,戊辰人博客文章均为原创,转载请以链接形式标明本文地址

本文地址:https://wanglu.info/2016/04/1138.html