02 docker的基本用法
本章内容
1、OCI
2、docker核心组件--Cgroup与runC
3、docker的架构
4、docker的基本操作
5、安装docker环境
6、创建第一个容器
6、docker容器的状态变换
----------------------------------------
上一节中,我了解的docker的由来,和容器技术的基础内容。这一节我具体了解docker具体如何实现,以及相关的基础概念,和我们需要掌握的内容;
1、OCI
OCI -- open container initative
由Linux基金会主导与2015年6月创立,目的在于为荣容器格式和运行时指定一个开放的容器技术的工业标准;
容器的两个规范:
1、运行规范(the runtime specificaiton(runtime-spec)) 它定义了如何在磁盘进行解压缩的“文件系统包”;
2、镜像规范(the image specification(image-spec)) 在高级别的OCI实现中,OCI映像然后将该映像解压缩到OCI运行时文件系统包中;dockerhub.com 为官方镜像下载站点(使用该docker镜像站点,需要进行加速才行);

2、docker核心组件--Cgroup与runC
docker的核心组件包含两个:
1、Cgroup--用于对容器进行6中namespaces隔离资源分配;
2、内核引擎
docker最早的内核环境为LXC,因为它天生的缺陷(无法满足批量化的容器处理),所以docker公司,自行开发了libcontains来替代LXC;
libcontains则是分装了更多的Linux内核功能,其中包括Cgroups,namespaces,netlink以及netfilter等功能;
之后为了让docker容器更好的兼容到其他操作系统,则将libcontains进一步更新为runC的内核引擎,而OCI则是最早维护runC内核引擎的公有组织;
runC
它是一种开放的容器格式--OCF(Open Container Format)
同时,runC是一个CLI工具,是根据OCI规范生成和运行容器,特点如下:
1、容器作为runC的子进程启动,可以嵌入到其他各种系统中,而无需运行守护进程(就是不要内核进程);
2、且runC建立在libcontainer之上,它同样可以为数百万的docker引擎安装提供动力;
3、docker的架构
docker的架构为C/S架构,但是一般情况下,我将客户端与服务器端(daemon端)放置于同一台服务器上面;
docker的架构如下:

docker 有两个版本:一个ce社区版本,一个ee企业版本;(还有一个开源版本,叫做Moby(这是因为了商业竞争的原因))
同时,一般如果不想在公网仓库下下载镜像,也可以搭建自己的仓库;
4、docker支持的基本操作
docker的操作对象只有:1、镜像文件 2、containers容器 3、网络 4、卷 5、插件 6、其他objects;
所以,docker下的所有命令都是围绕这六个内容来进行;其中最主要的是镜像文件和容器;
images
1、镜像是一个只读模板,其中包含用于创建docker容器的说明;
2、通常,上层镜像是基于下层镜像的,还有一些额外的自定义参数,来关联上下层镜像文件;
3、您可以创建自己的镜像,也可以只使用其他人创建的图像并在注册表中发布;
containers
1、我们基于镜像来运行容器;
2、您可以使用docker API或CLI create,run,stop,move或delete容器;
3、您可以将容器连接到一个或多个网络,将存储连接起来,甚至可以根据其当前状态创建新映像;
5、安装docker环境
安装环境:CPU必须是64位支持虚拟化技术;Linux内核kernel 内核必须为 3.10+以上版本(支持namespaces与Cgroup);所以,我们最好使用centos7来搭建docker环境;
a\安装dockers的yum仓库;
cd /etc/yum.repo.d/
wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
修改yum仓库,将地址 docker-ce.repo 中的 https://download.docker.com/ 修改为 https://mirrosrs.tuna.tsinghua.edu.cn/docker/
vim /etc/yum.repo.d/docker-ce.repo
:%s@https://download.docker.com/@https://mirrors.tuna.tsinghua.edu.cn/docker-ce/@
:wq //保存并退出
b\安装docker-ce
yum install docker-ce -y
c\配置docker仓库加速
因为docker镜像仓库处于美国,我们需要安装镜像仓库加速,使用在中国的镜像源;
有两种:1、使用美国仓库在中国的镜像源 2、使用阿里的仓库(需要账号密码)
我们这里使用第一方式,docker仓库在中国的仓库镜像:
mkdir /etc/docker/
vim /etc/docker/daemon.json
{
"registry-mirrors":["https://reistry.docker-cn.com"]
}
:wq
d\启动docker服务
systemctl start docker
此时就可以使用docker命令

此时,就可以使用docker命令,来进行容器管理;(包括镜像、卷、网络等等一系列资源)
查看镜像加速功能: docker info

此时,我们能看到仓库加速为中国的镜像点,则表示为中国地区的镜像加速方式;
自此,docker环境安装成功;
【除了docker-cn的加速点外,还有很多的加速点,例如阿里云加速器,中国科技大学等】
docker的常见子命令:
docker search 查找容器Hub从镜像中
docker pull 推送一个镜像或者仓库从默认指定的仓库中
docker images 显示镜像
docker create 创建一个新的容器
docker start 开启一个或者多个停止着的容器
docker run 运行一个新的容器
docker attach 连接到运行着的容器
docker ps 显示容器
docker logs 读取容器的log信息
docker restart 重启容器
docker stop 停止一个或者多个容器
docker kill 关闭一个或多个运行着的容器
docker rm 移除掉一个或多个容器
【具体用法在后面实验中具体介绍】
查看对应的镜像文件:

6、创建第一个容器
有了docker的容器环境以后,我们只需要去官方指定的仓库中去下载你需要的容器即可(当然,也可以是第三方仓库地址);
a\下载镜像
我们这里就去dockerhub.com下载镜像,这里我们选择一个alpine的小型Linux系统;

docker pull alpine

查看镜像:

b\创建容器
docker run --name a1 -it alpine:latest

其中 -it 创建一个交互窗口,和一个tty的虚拟通道,并连接上来;命名为a1;
c\网络配置
从新连接一个会话,通过 ifconfig 可以查看到 宿主机产生了一个端口,如下:

查看网桥情况:
yum install bridge-utils -y

此时,该网卡则则加入到了docker0中(docker0是默认网桥)
同时,我们进入到容器 a1 中可以看到,这里生成了一个172.17.0.2的虚拟网卡设备

通过本地,可以ping通,容器的网卡地址,就类似于虚拟机一样;

到此,我们第一个容器就创建成功!!
6、docker容器的状态变换
和命令相关的状态变化如下图:

【这里包含装换容器状态的命令,需要自己去尝试】
02 docker的基本用法的更多相关文章
- 【Ext.Net学习笔记】02:Ext.Net用法概览、Ext.Net MessageBus用法、Ext.Net布局
Ext.Net用法概览 Ext.Net还是很强大,如果运用熟练可以极大的提高编程效率.如果你也要学习Ext.Net,原文博主推荐书籍:<Ext.Net Web 应用程序开发教程>,是英文的 ...
- 15个Docker基本命令及用法
Docker入门教程:15个Docker基本命令及用法 本文中,我们将学习15个Docker命令以及命令的用法和功能,并通过实践学习它是如何工作的. AD:51CTO 网+ 第十二期沙龙:大话数据 ...
- ubuntu安装docker以及基本用法
ubuntu安装docker以及基本用法 一.安装 安装前先更新apt-get源到最新版本 apt-get update 使用ubuntu自带的docker安装包安装docker apt-get in ...
- Docker系列02—Docker 网络模式
一.Docker的四种网络模式 1.Docker 的四种网络模式: Bridge container 桥接式网络模式 Host(open) container 开放式网络模式 Container(jo ...
- docker的一些用法
复制文件,复制进去和复制出来一样用 docker cp 源文件 容器id:路径/目标文件 保存镜像 docker commit 容器id 名字 共享文件(加载vol) docker run -v 宿主 ...
- 02: docker高级篇
1.1 Docker Compose 1.Docker Compose 介绍 1. Compose是一个定义和管理多容器的工具,使用Python语言编写. 2. 使用Compose配置文件描述多个容器 ...
- docker之docker-machine用法
转自:https://www.cnblogs.com/jsonhc/p/7784466.html docker-machine 是docker官方提供的docker管理工具.通过docker-mach ...
- Ubuntu Server下docker实战 02: docker进阶配置
在上一篇文章里<Ubuntu Server下docker实战 01: 安装docker>,我们已经把docker安装起来了,并运行了一个hello-world 这一篇,我们继续讲进阶配置. ...
- docker导出导入镜像docker save和docker load的用法
1.百度搜的第一步是先将容器提交为镜像,然后用你提交的镜像去做上面的备份操作,提交为镜像后会新增一个镜像,但是感觉没有必要,直接做上面的save操作也是可以用的 百度的:docker commit 容 ...
- Ext.Net学习笔记02:Ext.Net用法概览
这两天越来越觉得Ext.Net很强大,如果运用熟练可以极大的提高编程效率.如果你也要学习Ext.Net,推荐你看一下<Ext.Net Web 应用程序开发教程>. Ext.Net与ExtJ ...
随机推荐
- 【翻译】了解Flink-概览 -- Learn Flink-Overview
了解Flink: 上手手册 目录 手册目标和范围 流处理 并行数据流 及时的流处理 有状态流处理 通过状态快照进行容错 翻译来源 Learn Flink:Overview , Learn Flink: ...
- SqlServer查看所有表数据条数
select a.name as 表名, max(b.rows) as 记录条数 from sysobjects a ,sysindexes b where a.id=b.id and a.xtype ...
- python 迁移虚拟环境
1.在源环境中获取包列表(新建文件夹whls) #cd 虚拟环境目录下的\scripts,cmd acitivate # 下载清单到requirements.txt,切换到whls目录 pip fre ...
- centos7 安装jupyter
1.基本包安装 yum update -y yum install python-pip -y yum install bzip2 -y yum groupinstall "Developm ...
- window批处理一键打开多个exe
使用批处理的start命令,格式为start /d "绝对路径" 目标exe名,记得路径和exe名间有个空格 @echo off start /d "E:\demo\&q ...
- Dapper.FastCRUD与Dapper中的CustomPropertyTypeMap冲突
在使用Dapper.NET时,由于生成的实体的属性与数据库表字段不同(如表字段叫USER_NAME,生成的对应的实体属性则为UserName). 这时需要使用Dapper中的CustomPropert ...
- python sorted() 多重排序
前言: 最开始是因为看到一道题目, 用一行代码解决[1, 2, 3, 11, 2, 5, 3, 2, 5, 3] 输出[11, 1, 2, 3, 5] 本来想法很简单,先去重后排序 但是遇到一个难点 ...
- vue仿QQ聊天室|vue聊天实例,直播聊天室
图片压缩 百亿站点 基于vue2.0+vue-cli+vuex+vue-router+webpack+es6+wcPop等技术开发的仿微信聊天界面|仿微信聊天室vue-chatRoom,实现了微信聊天 ...
- Unity 消息机制
最近有新项目需要和同事合作开发,他做UI 我做网络层,做着做着发现 如果我们要相对独立完成自己的开发任务,那我们的代码耦合得减少,不然 一个人代码有大改的时候,另一个人也要进行大幅修改,这样不便于后期 ...
- 实验:笔记本电脑做桥接有线网络,笔记本通过wifi连手机热点,,硬件通过笔记本的有线网口上网
1.问题 我们需要做实验,将我们设计的W5500实验板上internet, 搭建环境比较麻烦. 1)学校上网需要先HTTP认证: 2)家里经常路由器固定位置,没有足够长的网线: 3)有时候需要临时搭 ...