Docker使用、Dockerfile和Dockercompose(一)
文章目录
参考
作者: Warm and new
原文链接: cnblogs.com/peng104/p/10296717.html
一、引言
1. docker简介
- Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。
- Docker 使用 Google 公司推出的 Go 语言 进行开发实现。
- docker是linux容器的一种封装,提供简单易用的容器使用接口。它是最流行的Linux容器解决方案。
- docker的接口相当简单,用户可以方便的创建、销毁容器。
- docker将应用程序与程序的依赖,打包在一个文件里面。运行这个文件就会生成一个虚拟容器。
程序运行在虚拟容器里,如同在真实物理机上运行一样,有了docker,就不用担心环境问题了。
2. Docker的核心概念
Docker包含三大核心概念:镜像、容器、仓库,基础部分功能都是围绕他们进行展开,因此先有个简单的印象即可。
- 镜像 (image)
可以简单理解为一个只读的模板或者应用程序及其环境的打包,后边的容器就是通过它来进行创建。它类似于虚拟机镜像,如果你有面向对象的编程经验,也可以把它理解为一个实体类(Class)。 - 容器 (container)
简单理解为一个沙盒,用来运行和隔离我们开发的应用程序。你可以理解为正在运行的一个虚拟机,也可以理解为通过实体类Clss创建的一个对象。镜像是静态的,容器是动态的 - 仓库 (repository)
仓库就是集成存放镜像的地方,Docker仓库类似于代码仓库,如果你有Git和Maven的使用经验,那就很好理解了。
官方提供的仓库为Docker Hub,但有时候国外网速不太理想,因此国内云厂商如阿里云、网易云等也提供了镜像仓库的本地源,当然也可以自己搭建私有仓库。
3. 为什么要用Docker?
要搞清楚我们为什么要用Docker,那就来先看看Docker都能干些啥?
- 1.更高效的利用系统资源
由于容器不需要硬件虚拟以及运行完整操作系统等额外开销,Docker对系统资源的利用率更高。
无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多的应用。 - 2.更快速的启动时间
传统的虚拟机技术启动应用服务往往需要数分钟,而Docker容器应用由于直接运行于宿主机内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。 - 3.一致的运行环境
开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些bug并未在开发过程中被发现。
而Docker的镜像提供了除内核外完整的运行时环境,确保了应用运行环境的一致性,从而不会再出现“这段代码在我机器上没问题啊”这类问题。 - 4.持续交付和部署
对开发和运维人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
使用Docker可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过Dockerfile来进行镜像构建,并结合 持续集成(Continuous Integration)系统进行集成测试,
而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署。
而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环 境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。 - 5.更轻松的迁移
由于Docker确保了执行环境的一致性,使得应用的迁移更加容易。Docker可以在很多平台上运行,无论是物理机、虚拟机、共有云、私有云,甚至是笔记本,其运行结果是一样的。
因此用户可以很轻易的将一个在平台上运行的应用,迁移到另一个平台上,而不用担心环境变化而导致应用无法正常运行的情况。
二、Docker安装
1. Linux安装
1.1 Ubuntu 安装Docker
apt-get install docker.io
1.2 CentOS 安装Docker
yum -y install docker-io
如果 运行 docker images 命令正常, 则表示可以在本电脑使用了。
2. Docker配置加速
2.1 为什么要使用加速器
因为有GFW,它会降低我们访问外网站的速度,甚至是屏蔽掉部分外网
而且,Docker官方镜像网站的服务器在国外,距离较远,也会降低拉取镜像的速度
所以我用可以使用加速器,加快在国内获取Docker官方镜像的速度
2.2 Linux 用户配置加速器
修改 /etc/docker/daemon.json 文件并添加上registry-mirrors 键值。
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
三、Docker使用
1. 相关网站
1.1 官网
https://www.docker.com/
从官网可以看到Docker分为社区版(CE)和企业版(EE),一般情况下使用社区版即可。
1.2 在线Docker练习
https://labs.play-with-docker.com/
该网站是Docker船长为了帮助大家学习Docker而花了几天时间开发的一款基于浏览器的产品,play-with-docker,人称PWD,它是一个Docker的演练场。
它可以让用户在几秒钟内在浏览器中体验免费的Alpine Linux虚拟机,运行Docker命令,可以构建、运行Docker容器,甚至可以在Docker Swarm模式下创建集群,除了演练场之外,PWD还包含了一个由大量Docker labs实例和测试。
2. Docker常用命令
指令 | 说明 |
---|---|
docker images | 查看已下载的镜像 |
docker rmi 镜像名称:标签名 | 删除已下载的镜像 |
docker search 镜像 | 从官方仓库(hub.docker.com)查找镜像 |
docker pull 镜像名称:标签名 | 标签名默认是latest,代表最新版本 |
docker run | 创建容器 |
docker ps | 列出运行中的容器 |
docker ps -a | 列出所用的容器(运行、未运行) |
docker rm 容器名称 | 删除停止的容器 |
docker rm -f 容器名称 | 删除运行中的容器 |
docker start 容器名称 | 启动容器 |
docker stop 容器名称 | 停止容器 |
docker restart 容器名称 | 重启容器 |
docker exec | 执行容器中的命令 |
docker run … -v 主机目录:容器中的目录 … | 挂载硬盘 |
docker cp 源目录 目标目录 | 复制文件 |
- 挂载硬盘
为了能够保存(持久化)数据以及共享容器间的数据,Docker 提出了 Volume 的概念,
可以使用 -v 这个参数,将容器中的一个目录或者文件 和主机上的目录和文件进行绑定,绑定之后,修改主机上的这个文件就相当于修改了容器中的文件,删除容器之后,绑定的目录和文件还在主机(不会被删除)
上一篇: php 怎么计算几天倒计时
下一篇: C/C++面试总结
推荐阅读