docker常用命令

基本概念

Docker是一个开源的容器引擎,诞生于 2013 年初,最初是一个开源的 PAAS 服务 (Platform as a ServiceService )。它基于 Google 公司的 Go 语言实现,后来加入了 Linux 基金会,遵从 Apache 2.0 协议。

Docker本质上是宿主机上的一个进程,通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作。由于隔离Docker的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC(Linux Container),从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。

Docker的核心理念是:

Build, Ship and Run Any App, Anywhere

即通过对应用组件的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)等生命周期的管理,达到应用组件级别的“一次封装,到处运行”。这里的应用组件,既可以是一个Web应用,也可以是一套数据库服务,甚至是一个操作系统。将应用运行在Docker 容器上,可以实现跨平台,跨服务器,只需一次配置准备好相关的应用环境,即可实现到处运行,保证研发和生产环境的一致性,解决了应用和运行环境的兼容性问题,从而极大提升了部署效率,减少故障的可能性。

Docker实际上就相当于一个封闭的沙盒或者是集装箱,它可以把不同的应用全都放在它的集装箱里面,并且以后有需要的时候,可以直接把集装箱搬到其他平台或者服务器上,实现容器虚拟化技术,随用随搬。

再通俗点说,我们使用Docker,只需要配置一次Docker容器上面的应用,就可以跨平台,跨服务器,实现应用程序跨平台间的无缝衔接。

镜像(Image)

Docker镜像是一个特殊的文件系统,包含了程序运行时候所需要的资源和环境。镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像就是模板,可以用来创建Docker容器,另外Docker提供了很简单的机制来创建镜像和更新现有的镜像,用户还可以直接从镜像仓库下载已经做好的镜像来直接使用。

容器(Container)

容器就是运行镜像的,镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体,容器可以被创建、启动、停止、删除、暂停等。每个容器都是互相隔离的,保证安全的平台,容器可以理解为简易版的Linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行再其中的应用程序。

仓库(Repository)

仓库就是存放镜像的地方,仓库中又包含了多个镜像,每个镜像有不同的标签,用来区分不同的镜像版本,仓库分为两种,公有和私有仓库,最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载,这里仓库的概念与Git类似,Registry可以理解为Github这样的托管服务。

三者关系如下:
在这里插入图片描述

  1. 基于镜像创建容器,也可以基于容器创建镜像;
  2. 从仓库拉取镜像,也可以将本地镜像推送到仓库;

docker命令

在这里插入图片描述

基本命令

  • docker info - 查看docker系统配置信息
  • docker version - 查看docker版本信息
  • docker help - 查看docker帮助文档

镜像命令

  • docker images - 查看镜像相关的信息
    -a 查看所有镜像;
    -q 查看容器id;

  • docker search - 搜索容器信息
    -filter=STARS=3000 关注度大于300以上的;

  • docker pull - 下载镜像,采用分层下载,采用联合文件系统,默认是新的版本的
    docker pull mysql:5.7
    docker pull 镜像名称:版本号(Tag);

  • docker rmi - 删除镜像
    docker rmi -f 镜像ID
    docker rmi -f $(docker images -aq) 删除全部的镜像(慎用)

  • docker commit - 从容器创建一个新的镜像

     # 提交一个名字叫ubuntu版本v2的镜像
     > docker commit -m="msg" -a="Tomy" e218edb10161 ubuntu:v2
    

    -m: 提交的描述信息
    -a: 指定镜像作者
    e218edb10161:容器 ID
    ubuntu:v2: 指定要创建的目标镜像名

  • docker build - 从零开始创建一个新的镜像

       #  使用当前目录的Dockerfile文件来构建一个镜像
       docker build -t runoob/centos:6.7 .
    

    -t :指定要创建的目标镜像名
    . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

  • docker tag - 为镜像添加一个新的标签

容器命令

  • docker run 是Docker中最为核心的一个命令,用于新建并启动容器
    -name=“名称” 容器名称;
    -d 使用后台交互的方式;
    -it 使用交互方式,进入到容器内部;
    -p 用于将容器的端口暴露给宿主机的端口,格式为:hostPort:containerPort ,通过端口的暴露,可以让外部主机能够访问容器内的应用;
    -P 随机指定端口;
    -c 用于给运行在容器中的所有进程分配 CPU 的 shares 值,这是一个相对权重,实际的处理速度与宿主机的 CPU 相关
    -m 用于限制为容器中所有进程分配的内存总量,以 B、K、M、G 为单位;
    docker run --privileged=true -p 8080:8080 tomcat:8

  • docker ps 列出正在运行的容器
    -a 列出当前正在运行的容器和历史运行过的容器;
    -n=? 显示最近创建的容器;
    -q 只显示容器的编号;

  • exit 退出容器
    exit 容器停止并退出;
    Ctrl + P + Q 容器停止并退出;

  • 删除容器
    docker rm 容器id删除指定的容器,不能删除正在运行的容器;
    docker ps -a -q | xargs docker rm 删除所有的容器;

  • 启动和停止容器的操作
    docker start 容器id 启动容器;
    docker restart 容器id 重启容器;
    docker stop 容器id 停止容器;
    docker kill 容器ID 强杀容器;

  • docker logs 查看docker logs的日志
    –details 显示日志详情
    -f 跟随日志输出显示
    –tail 从末尾开始显示指定行的数据
    -t 显示时间戳
    –since 开始时间
    –until 结束时间

  • docker top 查看容器的进程信息

  • docker inspect 查看镜像的元数据

  • 进入正在运行的容器
    docker exec -it 容器id
    docker attach 容器Id

  • 容器拷贝文件到主机上
    docker cp 容器Id 容器内路径 主机路径

引用内容

冰河winner
既然遇见不如同行

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值