Docker的基本概念和操作
来源:互联网 发布:怎么做好网络金融销售 编辑:程序博客网 时间:2024/06/07 06:53
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 update
3.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-engine
3.2.4 启用服务
# systemctl enable docker.service
3.2.5 启动
# systemctl start docker
3.2.6 验证
# docker run --rm hello-world
docker将自动下载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 images
4.2 搜索镜像
# docker search <镜像名关键词>
4.3 下载镜像
# docker pull ubuntu
docker 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的基本概念和操作
- docker基本概念和安装
- Docker的四个基本概念
- docker的基本概念
- docker的基本概念
- 栈和队列的基本概念和操作
- OLAP分类的基本概念和基本操作
- java多线程的基本概念和简单操作
- OLAP分类的基本概念和基本操作
- UNIX基本概念和操作
- dedecms基本概念和操作
- 数据库基本概念和操作
- Linux基本概念和操作
- Docker和k8的基本操作
- Docker基本概念
- Docker基本概念
- docker基本概念
- docker基本概念
- 语音识别工具kaldi在linux环境下的安装步骤
- hibernate映射之一对一映射
- Python基础(一):python的解释器
- 461. Hamming Distance
- CCF-201509-1-数列分段
- Docker的基本概念和操作
- Turtlebot3入门手册之五:OpenCR软件设置
- 最大高度差(暴力/DP/RMQ)
- 高级软件工程
- HDU 3466 Proud Merchants
- nodelist与HTMLCollection
- window用ssh连接本机虚拟机中的ubuntu
- Tensorflow NN.conv2d API
- js for循环事件绑定之怪现状解决