Docker容器实战-简单使用

一、hello-world

    在之间CentOS安装的时候,我们运行了hello-world第一个容器,hello-world是Docker官方推荐的第一个学习镜像,它的功能就是简单的输出一段日志在终端上。

    Docker是基于Linux内核的Namespace、CGroups和UnionFS三项基本功能实现的,通过docker run hello-world就可以运行Docker容器。

命令的格式
          docker:Docker客户端程序
          run:子命令,运行容器
          hello-world:镜像名称

执行过程
          首先在本地查找是否有hello-world这个镜像,如果没有则去Dockerhub即Docker主仓库拉取
          启动一个容器,并把镜像装载进容器运行

    使用docker images查看系统中有哪些镜像

这里写图片描述

REPOSITORY:镜像名称
TAG:镜像版本,在Run时如果不带版本就会拉取最新版本
IMAGE ID:镜像的截断后ID
CREATED:镜像创建时间
VIRTUAL SIZE:镜像占用空间

二、容器与镜像

    上面有说到容器和镜像两个关键字,容器和镜像是Docker最核心的部分,使用Docker时实际就是在容器中运行镜像

(1)容器

    很多人在最初可能会认为容器就是一种轻量级的虚拟机,但从根本形态上来看,容器其实就是运行在操作系统上的一个进程,不过加入了对资源的隔离和限制

    通常,在运行一个进程如果进程中出现死循环,CPU就会被占用完;如果进程出现内存泄漏或大内存分配就可能把系统内存用完,因为默认进程间共用了CPU和内存,这种不进行隔离的处理方式,就会遇到相互间干扰的问题

    前面也说了,Docker基于的三大核心功能是CGroups、Namespace和UnionFS

CGroups:限定一个进程的资源使用,如CPU、内存,使用户主机更好地运行多个容器而相互不受影响

Namespace:隔离工作区,通过Namespace,容器运行在自己的独立命名空间,外层没有访问权限,目前Docker 使用了PID、NET、IPC、MNT、UTS(UNIX Timesharing System) Namespace

Union FS:处理分层镜像,是镜像更加轻量级和快速,Docker可使用AUFS、VFS、Btrfs等不同的Union FS

(2)镜像

    容器是一个动态概念,镜像则是一个相对静止的概念,简单来说镜像就是容器中的文件系统(* 镜像除了文件系统,还集成了一部分容器运行参数,可以将镜像看成容器模板)

    文件系统管理技术在很早前就出现了,即chroot系统调用技术,通过该技术可以改变进程运行目录,并将其限定在这个目录中,但其仅仅只是简单的隔离

    因此Docker使用了Layered FS,把文件系统分为多个层,是多个容期间可以使用公共的部分,而镜像就是有Layered FS组成,并且镜像是只读的,当容器运行时,会在镜像上添上一层可读可写层

(3)关系

    容器和镜像二者缺一不可,可相互转换

这里写图片描述

三、基本操作

(1)查看信息

功能描述:查看Docker运行状态及版本信息(Docker Daemon守护进程运行状态缩影)
语法:docker info
输出:容器个数、镜像个数、Daemon版本、存储驱动

这里写图片描述

(2)下载镜像

    Docker镜像是分层的,使用时都需要从第一个基础镜像开始,官方推荐的基础镜像为Ubuntu

功能描述:从Docker Hub拉取镜像,如镜像存在则直接返回
语法:docker pull ubuntu

这里写图片描述

(3)运行含Shell终端的镜像

    在之前的hello-world中,容器输出日志运行完成后就自动退出了,当然,Docker也可以运行一个可交互的容器,如果在交互式容器中执行exit命令,则整个容器都会停止运行,如果需要退出交互模式且不影响容器运行则可以使用Ctrl+PQ

    刚刚拉取了一个Ubuntu镜像,现在可以通过docker命令运行容器

语法:docker run -i -t ubuntu /bin/bash
          -i 启动一个可交互容器
          -t 使用pseudo-TTY,关联到容器的stdin和stdout
          -d 后台运行容器(本例子中未使用)
          ubuntu 表明运行的镜像
          /bin/bash 启动容器时运行的命令
提示:对一个虚拟网络服务器来说,Pseudo-TTY(PTY,假冒的TTY)是等价的终端
         当运行一个终端仿真程序或GNOME终端程序时,PTY对虚拟的用户或者如终端仿真程序一样的伪终端来说,就像是一个TTY在运行。

这里写图片描述

(4)查看容器

功能描述:查看容器
语法:docker ps [-a]
          -a 查看所有容器
注意:使用ps命令查看时若容器退出,该命令就列举不出容器,需要使用-a选项

这里写图片描述

    因为我之前在运行ubuntu容器时,通过Ctrl+PQ退出的交互模式,并未停止容器,所以通过ps可以看到其正在运行,而通过docker ps -a则可以看到我在昨天写上一篇博文时运行的hello-world容器信息。

    使用docker kill 容器号杀掉容器后可以看到使用ps命令看不到运行容器存在了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值