docker初学
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初学的更多相关文章
- docker初学笔记
什么是docker 不准确的说,docker是一种轻量级的虚拟机,它把可执行文件和运行环境打包成一个image,放在容器里运行,但是启动速度比虚拟机快很多,资源消耗小.这种技术主要是为了解决部署环境的 ...
- Docker 初学
据我理解, 它最大的用途是 将我们的应用及环境整个打包, 这样如果我们的开发环境环境部署了,就不用再分别去测试/ 生产环境部署了! -- 但是, 新问题在于, 拷贝这些东西比较麻烦... Docker ...
- 通过运行一个tomcat容器来记录下初学docker常用的几个命令---容器篇
1.查看容器列表 显示正在运行的容器: [root@localhost HMK]# docker ps 显示所有容器,包括未运行的: [root@localhost HMK]# docker ps - ...
- 初学Docker
1.基本概念Docker 包括三个基本概念镜像( Image )容器( Container )仓库( Repository )理解了这三个概念,就理解了 Docker 的整个生命周期. 2.Docke ...
- 初学Docker容器网络不得不看的学习笔记
一.关于Docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后 ...
- Docker简明教程(转)
Docker自从诞生以来就一直备受追捧,学习Docker是一件很炫酷.很有意思的事情.我希望通过这篇文章能够让大家快速地入门Docker,并有一些学习成果来激发自己的学习兴趣.我也只是一个在Docke ...
- ubuntu 12.04 安装Docker 实战
2016-3-8 从网络服务商那里申请到一台Ubuntu测试服务器,用来测试安装Docker环境. 注:本人初学Docker,对Linux命令也仅是稍稍了解,如有错误,烦请告知. 查看系统相关信息 可 ...
- Java程序员需要注意的五大Docker误区
Docker现在很火,容器技术看上不无所不能,但这实际上是一种误解,不要被炒作出来的泡沫迷住双眼,本文抛去炒作,理性地从Java程序员的角度,列举出Docker目前的五大误区,帮助你更好地理解Dock ...
- Docker简明教程(转)
Docker自从诞生以来就一直备受追捧,学习Docker是一件很炫酷.很有意思的事情.我希望通过这篇文章能够让大家快速地入门Docker,并有一些学习成果来激发自己的学习兴趣.我也只是一个在Docke ...
随机推荐
- 英语单词independent
来源——https://www.docker.com/products/docker-hub 回到顶部 Share and Collaborate with Docker Hub Docker Hub ...
- centos 7 网卡绑定 bond0 开机无法自启
https://blog.csdn.net/u012881151/article/details/54910847 1.环境CentOS Linux release 7.2.1511 (Core)li ...
- Python3解leetcode First Bad Version
问题描述: You are a product manager and currently leading a team to develop a new product. Unfortunately ...
- python cv2在验证码识别中的使用
使用函数cv2.imread(filepath,flags)读入一副图片 filepath:要读入图片的完整路径 flags:读入图片的标志 cv2.IMREAD_COLOR:默认参数,读入一副彩色图 ...
- jacoco + ant远程统计(tomcat/spring boot)服务的代码覆盖率
什么是Jacoco? Jacoco(java code coverage)是一个开源的Java代码覆盖率工具,Jacoco可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件, ...
- gitlab+jenkins自动化打包APK
前置条件: 环境搭建,jenkins需要的插件看这里: gitlab+jenkins自动化打包IOS 配置思路: step1: 搭建sdk,gradle运行环境,参照: CentOS7下安装安装and ...
- php面向对象的重写与重载
重写: 就是当子类继承父类的一些方法后,子类又在其内部定义了相同的方法,则这个新定义的方法会覆盖继承而来的父类的方法,子类只能调用其内部定义的方法. 有以下几点要求: 1.当一个父类和子类有一个方法, ...
- EL表达式(三)自定义 EL 表达式
自定义EL函数(静态方法): 编写步骤: 1.编写一个Java类,提供一个静态方法 import java.util.List; public class GetLength { public sta ...
- HTML --JS 选择框
<html> <head> <title>选择框</title> <script language="JavaScript"& ...
- Vue访问子组件实例或子元素
1 尽管存在 prop 和事件,有的时候你仍可能需要在 JavaScript 里直接访问一个子组件(例如,调用子组件的方法).为了达到这个目的,你可以通过 ref 特性为这个子组件赋予一个 ID 引用 ...