Docker的基本概念和操作
2017-09-10 11:00
405 查看
1 概论
1.1 定义
“build once, configure once and run anywhere”。Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。
虚拟化技术包括硬件级虚拟化(如VMWare、VirtualBox、AWS、阿里云等)和操作系统级虚拟化(如Docker)。
Docker是操作系统虚拟化(容器化)技术中目前最流行的一种实现。
1.2 应用场景
Docker通常用于如下场景:Ø web应用的自动化打包和发布;
Ø 自动化测试和持续集成、发布;
Ø 在服务型环境中部署和调整数据库或其他的后台应用;
Ø 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
Docker能处理的事情包括:
Ø 隔离应用依赖
Ø 创建应用镜像并进行复制
Ø 创建容易分发的即启即用的应用
Ø 允许实例简单、快速地扩展
Ø 测试应用并随后销毁它们
2 基础概念
2.1 Docker镜像
类似虚拟机的快照,是自定义一套的操作系统环境。创建镜像有两种方式:
Ø 从公共Docker仓库里选择一个镜像在其基础上修改(常用)。
Ø 自己创建(后续详解)。
2.2 Docker仓库
Docker仓库用于保存镜像, Docker 仓库分为公有和私有仓库。公有的 Docker 仓库名字为Docker Hub,提供了大量的镜像集合供使用。2.3 Docker容器
使用镜像创建Docker容器,可以理解为镜像的一个实例,容器里可以运行应用。容器可以对外开放服务端口。容器是设计来运行一个应用的,而非一台机器。停止一个Docker容器,对初始状态(创建容器所用的镜像的状态)做的所有变化都会丢失,所以业务数据不能存储在容器里,容器只是运行应用的环境。
Docker设计者极力推崇“一个容器一个进程的方式”,容器被设计用来运行单进程,无法很好地模拟一个完整的环境(如需模拟完整环境则参阅LXC)。
当容器被启动后,一个读写层会被添加到镜像的顶层。当分配到合适的网络和IP地址后,需要的应用程序就可以在容器中运行了。
2.4 数据卷
数据卷使得开发者可以不受容器生命周期影响而进行数据持久化。它们表现为容器内的空间,但实际数据保存在容器之外,从而允许我们在不影响数据的情况下销毁、重建、修改、丢弃容器。Docker允许定义应用部分和数据部分,并提供工具可以将它们分开。使用Docker时必须做出的最大思维变化之一就是:容器应该是短暂和一次性的。
卷是针对容器的,可以使用同一个镜像创建多个容器并定义不同的卷。卷保存在运行Docker的宿主文件系统上,可以指定卷存放的目录,或让Docker保存在默认位置。保存在其他类型文件系统上的都不是一个卷。卷还可以用来在容器间共享数据。
2.5 链接
Docker允许在创建一个新容器时引用其它现存容器,在刚创建的容器里被引用的容器将获得一个别名,则视为这两个容器链接在了一起。容器启动时,将被分配一个随机的私有IP,其它容器可以使用这个IP地址与其进行通讯。这点非常重要,原因有二:一是它提供了容器间相互通信的渠道,二是容器将共享一个本地网络。
3 安装(CentOS 7)
参考:https://docs.docker.com/engine/installation/linux/centos/3.1 前置条件
安装Docker需要64位的内核为3.10或以上的Linux系统。可使用以下命令查看内核:
# uname -r
输出如:3.10.0-229.el7.x86_64
3.2 通过yum安装
3.2.1 更新yum软件包到最新版本
# yum update3.2.2 添加docker yum repo
# vi /etc/yum.repos.d/docker.repo[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
3.2.3 安装
# yum install -y docker-engine3.2.4 启用服务
# systemctl enable docker.service3.2.5 启动
# systemctl start docker3.2.6 验证
# docker run --rm hello-worlddocker将自动下载hello-world:latest镜像,下载完成后运行结果包含:
Hello from Docker!
This message shows that your installation appears to beworking correctly.
则表示docker已正确安装。
3.3 通过官方脚本安装
下载官方的docker安装脚本进行安装,本质上也是通过yum安装,步骤与yum安装类似。# yum update
# curl -fsSL https://get.docker.com/ | sh
# systemctl enable docker.service
# systemctl start docker
# docker run --rm hello-world
3.4 创建docker group
Docker的守护进程启动后会为名称为docker的用户组下的用户赋予Unix Socket的读写权限,有需要的话可以创建docker用户组。4 镜像操作
在使用 docker 的时候,首先需要拉取镜像,然后再通过一个容器来运行这个镜像。通过镜像是可以生成容器的。同时,当容器运行到一个时间的时候,我们也可以通过 docker commit,将容器的可读可写层转化为镜像。因此,镜像和容器是相生相伴的,缺一不可的。本节以下载ubuntu镜像为例。
4.1 查看本机镜像
# docker images4.2 搜索镜像
# docker search <镜像名关键词>4.3 下载镜像
# docker pull ubuntudocker pull 会默认从 docker hub 拉取镜像,如果本地已经有了就直接结束,否则的话会根据文件系统分层逐个下载。
4.4 push镜像到远程库
4.4.1 tag镜像
# docker tag <镜像名称[:TAG]> <要标记成的镜像名称[:TAG]>如:
# docker tag ubuntu my-ubuntu-tag
4.4.2 push
# docker push <标记成镜像名称[:TAG]>4.5 删除镜像
# docker rmi <要删除的镜像名称>5 容器操作
5.1 从镜像运行一个含shell的容器
# docker run -i -t <镜像名称> /bin/bash如:
# docker run -i -t ubuntu /bin/bash
5.2 查看运行的容器
# docker ps运行容器后,可通过该命令查看到运行的容器的信息,如ID:f70b2a474d88。
5.3 容器的启停
包括启动、停止、重启、强行停止和删除。# docker start f70b2a474d88
# docker stop f70b2a474d88
# docker restart f70b2a474d88
# docker kill f70b2a474d88
# docker remove f70b2a474d88
5.4 持久化容器
容器在退出后并不会更改镜像,如果希望保存容器中的数据,就需要通过 commit 来保存成镜像:# docker commit <容器ID> <要保存成的镜像名>
如:
# docker commit f70b2a474d88 my-ubunt-checkpoint
5.5 查看容器配置
# docker inspect <容器ID>6 参考
官网:https://www.docker.com/http://www.docker.org.cn/book/docker/what-is-docker-16.html
http://yuedu.baidu.com/ebook/d817967416fc700abb68fca1?pn=1
http://archive.ghostcloud.cn/docker%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A-%E5%85%A5%E9%97%A8%E7%AF%87.pdf
相关文章推荐
- docker与kuberentes基本概念与操作学习
- Docker 镜像、容器、仓库的概念及基本操作
- Docker 学习笔记【1】Docker 相关概念,基本操作
- docker之基本概念和操作
- Docker 快速上手系列(2): 容器的概念及相关操作
- 2016/2/22 1、DOM的基本概念 2、Window对象操作 3、Windows.history对象 4、Window.location对象 5、Window.status对象
- Docker学习二:Docker基本概念以及安装卸载
- 学习Unity(1)基本概念和操作
- Docker基本概念
- 一起学docker(2)--基本概念
- windows的磁盘操作之一——基本概念
- PC-Lint的入门-- 一、概念与基本操作
- 堆的基本概念及常用操作
- 堆的概念及基本操作实现
- Docker 使用指南 (一)—— 基本操作
- Docker基本概念
- docker基本操作
- Docker 基本操作命令
- 第 2 章 基本概念(乘性与加性操作)------------(7)
- 线性表 概念、结构与基本操作