Docker基础知识

1. Docker基础知识点

1.1 什么是Docker

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。(集装箱原理)

1.2 什么是LXC

Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源

Docker核心解决的问题是利用LXC来实现类似VM的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。

2. Docker架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

docker

面向对象

容器

对象

镜像

注:

简单的说类是对象的模版。

首先我们可以来理解一下对象的概念,面向对象编程的程序实际就是多个对象的集合,我们可以把所有的事物都抽象成对象,在程序设计中可以看作:对象=属性+方法。属性就是对象的数据,而方法就是对象的行为。下面来说类,就像我开头所说类是对象的模版,而对象是类的实例化。举个例子,饼干模子可以看作是类,而具体的饼干就是对象。再比如有一个类是表示人,然后可以通过人这个模版来实例化出张三、李四。

Docker总架构图

docker pull

docker run

3. Docker名词解释

Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板。

Docker 容器(Container)

容器是独立运行的一个或一组应用。

Docker架构中服务交付的最终体现形式

Docker 客户端(Client)

Docker 客户端通过命令行或者其他工具使用 Docker API 与 Docker 的守护进程通信。

Docker Daemon

Docker Daemon是Docker架构中一个常驻在后台的系统进程,接受并处理Docker Client发送的请求。

Docker Server

Docker Server在Docker架构中是专门服务于Docker Client的server,接受并调度分发Docker Client发送的请求。

Engine

Engine是Docker架构中的运行引擎,同时也Docker运行的核心模块。它扮演Docker container存储仓库的角色,并且通过执行job的方式来操纵管理这些容器。

Job

一个Job可以认为是Docker架构中Engine内部最基本的工作执行单元。Docker可以做的每一项工作,都可以抽象为一个job。

Docker 仓库(Registry)

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。而容器镜像是在容器被创建时,被加载用来初始化容器的文件架构与目录。

Graph

Graph在Docker架构中扮演已下载容器镜像的保管者,以及已下载容器镜像之间关系的记录者。

Driver

Driver是Docker架构中的驱动模块

graphdriver

主要用于完成容器镜像的管理,包括存储与获取。

networkdriver

完成Docker容器网络环境的配置

execdriver

Docker容器的执行驱动,负责创建容器运行命名空间,负责容器资源使用的统计与限制,负责容器内部进程的真正运行等。

libcontainer

Docker架构中一个使用Go语言设计实现的库,设计初衷是希望该库可以不依靠任何依赖,直接访问内核中与容器相关的API。容器管理的包

Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

4. Docker命令

4.1 环境信息相关

docker info  //docker系统信息

docker version  //docker版本信息

4.2 系统运维相关

docker ps

列出容器

docker ps [OPTIONS]

-a :显示所有的容器,包括未运行的。

-f :根据条件过滤显示的内容。

-l :显示最近创建的容器。

-n :列出最近创建的n个容器。

-q :静默模式,只显示容器编号。

docker start/stop/restart

docker start :启动一个或多少已经被停止的容器

docker stop :停止一个运行中的容器

docker restart :重启容器

docker pause/unpause

docker pause :暂停容器中所有的进程。

docker unpause :恢复容器中所有的进程

docker pause [OPTIONS] CONTAINER [CONTAINER...]

docker unpause [OPTIONS] CONTAINER [CONTAINER...]

暂停webapp服务

docker pause webapp

恢复webapp服务

docker unpause webapp

docker kill

杀掉一个运行中的容器

docker kill [OPTIONS] CONTAINER [CONTAINER...]

docker exec

在运行的容器中执行命令

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

ocker exec -it ContainerID/ContainaerName

在容器中开启一个交互模式的终端

-i :即使没有附加也保持STDIN 打开

-t :分配一个伪终端

 

(有时候会在容器外执行下脚本对比在容器内执行脚本,看输出是否一致)

docker inspect

获取容器/镜像的元数据

docker inspect ContainerID/ContainaerName

-f :指定返回值的模板文件

(多用于获取制定的参数)

(通过docker inspect | grep 关键字,也能搜索到,但是没有 -f 指定搜索方便,尤其是当你脚本中要获取某个参数值时)

docker top

查看容器中运行的进程信息

docker top [OPTIONS] CONTAINER [ps OPTIONS]

docker cp

用于容器与主机之间的数据拷贝

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-

docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

docker exec -it <container_id> bash -c 'cat > /path/to/container/file' < /path/to/host/file/

docker logs

获取容器的日志

-t : 显示时间戳

--tail :仅列出最新N条容器日志

docker logs -t --tail=10 webapp

(有时候产品开发让看下logs,大家都说日志太多了,就可以使用--tail 来获取最新的一部分日志,为了好区分时间,前面可以加上 -t 显示时间)

 

 

docker search

从Docker Hub查找镜像

docker search [OPTIONS] TERM

docker pull

从镜像仓库中拉取或者更新指定镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

从Docker Hub下载java最新版镜像

docker pull java

docker push

将本地的镜像上传到镜像仓库,要先登陆到镜像仓库

docker push [OPTIONS] NAME[:TAG]

docker push webapp:v1

docker images

列出本地镜像

docker images [OPTIONS] [REPOSITORY[:TAG]]

-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);

-f :显示满足条件的镜像;

-q :只显示镜像ID。

docker run

创建一个新的容器并运行一个命令

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

使用镜像centos:7以交互模式启动一个容器,在容器内执行/bin/bash命令

docker run -it centos:7 /bin/bash

docker create

创建一个新的容器但不启动它

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

使用docker镜像centos:7创建一个容器,并将容器命名为odps

docker create  --name odps  centos:7

docker rm

删除一个或多少容器

docker rm [OPTIONS] CONTAINER [CONTAINER...]

docker rm -f webapp

docker export

将文件系统作为一个tar归档文件导出到STDOUT

docker export [OPTIONS] CONTAINER

将id为a404c6c174a2的容器保存为tar文件

docker export -o mysql.tar a404c6c174a2

docker save

将指定镜像保存成 tar 归档文件

docker save [OPTIONS] IMAGE [IMAGE...]

将镜像127.0.0.1:5000/java 生成java_v1.tar文档

docker save -o java_v1.tar 127.0.0.1:5000/java

docker import

从归档文件中创建镜像

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

从镜像归档文件mysql.tar创建镜像,命名为127.0.0.1:5000/mysql:v1

docker import  mysql.tar 127.0.0.1:5000/mysql:v1

docker tag

标记本地镜像,将其归入某一仓库

docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

将镜像docker.io/mysql标记为 127.0.0.1:5000/mysql 镜像

docker tag docker.io/mysql 127.0.0.1:5000/mysql

docker rmi

删除本地一个或多少镜像

docker rmi -f 127.0.0.1:5000/mysql:v1

docker初学的更多相关文章

  1. docker初学笔记

    什么是docker 不准确的说,docker是一种轻量级的虚拟机,它把可执行文件和运行环境打包成一个image,放在容器里运行,但是启动速度比虚拟机快很多,资源消耗小.这种技术主要是为了解决部署环境的 ...

  2. Docker 初学

    据我理解, 它最大的用途是 将我们的应用及环境整个打包, 这样如果我们的开发环境环境部署了,就不用再分别去测试/ 生产环境部署了! -- 但是, 新问题在于, 拷贝这些东西比较麻烦... Docker ...

  3. 通过运行一个tomcat容器来记录下初学docker常用的几个命令---容器篇

    1.查看容器列表 显示正在运行的容器: [root@localhost HMK]# docker ps 显示所有容器,包括未运行的: [root@localhost HMK]# docker ps - ...

  4. 初学Docker

    1.基本概念Docker 包括三个基本概念镜像( Image )容器( Container )仓库( Repository )理解了这三个概念,就理解了 Docker 的整个生命周期. 2.Docke ...

  5. 初学Docker容器网络不得不看的学习笔记

    一.关于Docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后 ...

  6. Docker简明教程(转)

    Docker自从诞生以来就一直备受追捧,学习Docker是一件很炫酷.很有意思的事情.我希望通过这篇文章能够让大家快速地入门Docker,并有一些学习成果来激发自己的学习兴趣.我也只是一个在Docke ...

  7. ubuntu 12.04 安装Docker 实战

    2016-3-8 从网络服务商那里申请到一台Ubuntu测试服务器,用来测试安装Docker环境. 注:本人初学Docker,对Linux命令也仅是稍稍了解,如有错误,烦请告知. 查看系统相关信息 可 ...

  8. Java程序员需要注意的五大Docker误区

    Docker现在很火,容器技术看上不无所不能,但这实际上是一种误解,不要被炒作出来的泡沫迷住双眼,本文抛去炒作,理性地从Java程序员的角度,列举出Docker目前的五大误区,帮助你更好地理解Dock ...

  9. Docker简明教程(转)

    Docker自从诞生以来就一直备受追捧,学习Docker是一件很炫酷.很有意思的事情.我希望通过这篇文章能够让大家快速地入门Docker,并有一些学习成果来激发自己的学习兴趣.我也只是一个在Docke ...

随机推荐

  1. /usr,/usr/local/ 还是 /opt 目录区别

    Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的 /us(Unix Software Resource)r:系统级的目录,可以理解为C:/Windows/, /usr/lib ...

  2. Dubbo学习-3-管理控制台搭建

    dubbo 2.6.x 的dubbo-admin管理控制台搭建 1.下载源码:https://github.com/apache/incubator-dubbo-ops 打开后切换到master分支 ...

  3. MaxCompute按量计费计算任务消费监控告警

    MaxCompute 按量计费资源为弹性伸缩资源,对于计算任务,按任务需求提供所需资源,对资源使用无限制,同时MaxCompute按量计费的账单为天账单,即当天消费需要第二天才出账,因此,有必要对计算 ...

  4. Redis使用场景一,查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互。

    maven使用: <!--redis jar包--> <dependency> <groupId>redis.clients</groupId> < ...

  5. easyui for jquery之tooltip

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. 重写LayoutParams,读取子View自定义属性

    在EasyConstraintLayout内部定义一个静态类LayoutParams继承ConstraintLayout.LayoutParams,然后在构造方法中读取上面自定义的属性.我们通过裁剪的 ...

  7. spring+JdbcTemplate简单使用(一)

    目录 @ 1. 环境配置 maven(项目管理) idea(编译器) jdk1.8(Java环境) MySQL5.6(MySQL数据库) 2. 创建项目 在 idea 中创建普通的 maven 项目 ...

  8. ZOJ 3822 ( 2014牡丹江区域赛D题) (概率dp)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5376 题意:每天往n*m的棋盘上放一颗棋子,求多少天能将棋盘的每行每列都至少有 ...

  9. :nth-child 与 ;nth-of-child

    //:nth-child:是选择父元素下的第几个元素,不分标签类别,计数从1开始 //:nth-of-type:是选择父元素下的同类型元素的第几个元素.区分标签类别,计数从1开始

  10. Linux 软件安装到哪里合适,目录详解

    文章来源: https://blog.csdn.net/qq_22771739/article/details/83933473 Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有 ...