人生苦短, 我用 Python
前文传送门:
小白学 Python 爬虫(1): 开篇 https://www.geekdigging.com/2019/11/13/3303836941/
小白学 Python 爬虫 (2): 前置准备(一) 基本类库的安装 https://www.geekdigging.com/2019/11/20/2586166930/
小白学 Python 爬虫(3): 前置准备(二)Linux 基础入门 https://www.geekdigging.com/2019/11/21/1005563697/
Docker 基础
首先说一件事情, 就在本文写作前一天, Mirantis 这家公司宣布收购了 Docker 的企业业务和团队. 并且在官网上也挂出了相关的文字.
没别的意思, 相关的新闻通告一下.
Docker 官网地址: https://www.docker.com/
什么是 Docker ?
emmmmm, 说实话, Docker 是什么并不好说, 下面通过四点大致解释下 Docker 到底是个什么东西.
Docker 是全球领先的软件容器平台.
Docker 使用 Google 公司推出的 Go 语言进行开发实现, 基于 Linux 内核的 cgroup,namespace, 以及 AUFS 类的 UnionFS 等技术, 对进程进行封装隔离, 属于操作系统层面的虚拟化技术.
由于隔离的进程独立于宿主和其它的隔离的进程, 因此也称其为容器. Docke 最初实现是基于 LXC.
用户可以方便地创建和使用容器, 把自己的应用放入容器.
Docker 容器的特点:
轻量化: 在一台机器上运行的多个 Docker 容器可以共享这台机器的操作系统内核; 它们能够迅速启动, 只需占用很少的计算和内存资源. 镜像是通过文件系统层进行构造的, 并共享一些公共文件. 这样就能尽量降低磁盘用量, 并能更快地下载镜像.
标准化: Docker 容器基于开放式标准, 能够在所有主流 Linux 版本, Microsoft Windows 以及包括 VM, 裸机服务器和云在内的任何基础设施上运行.
安全: Docker 赋予应用的隔离性不仅限于彼此隔离, 还独立于底层的基础设施. Docker 默认提供最强的隔离, 因此应用出现问题, 也只是单个容器的问题, 而不会波及到整台机器.
为什么要用 Docker:
Docker 的镜像提供了除内核外完整的运行时环境, 确保了应用运行环境一致性, 从而不会再出现 "这段代码在我机器上没问题啊" 这类问题;-- 一致的运行环境
可以做到秒级, 甚至毫秒级的启动时间. 大大的节约了开发, 测试, 部署的时间.-- 更快速的启动时间
避免公用的服务器, 资源会容易受到其他用户的影响.-- 隔离性
善于处理集中爆发的服务器使用压力;-- 弹性伸缩, 快速扩展
可以很轻易的将在一个平台上运行的应用, 迁移到另一个平台上, 而不用担心运行环境的变化导致应用无法正常运行的情况.-- 迁移方便
使用 Docker 可以通过定制应用镜像来实现持续集成, 持续交付, 部署.-- 持续交付和部署
说起容器, 与虚拟机的比较是一个永恒的话题, 因为它做的事情和虚拟机做的事情非常的接近.
传统虚拟机技术是虚拟出一套硬件后, 在其上运行一个完整操作系统, 在该系统上再运行所需应用进程; 而容器内的应用进程直接运行于宿主的内核, 容器内没有自己的内核, 而且也没有进行硬件虚拟. 因此容器要比传统虚拟机更为轻便.
Docker 安装
Win10 下的安装
首先介绍一下 win 环境下 Docker 的安装, 打开官网, 下载最新版的 Docker Desktop .
Docker 官方下载地址: https://www.docker.com/products/docker-desktop
下载前可能需要先注册下 Docker Hub , 注册完成后会直接跳转下载页面.
下载完成后默认配置 next 就好了.
验证:
在 CMD 命令行中执行:
docker info
请确保 Docker 正常启动状态, 否则会报错的.
小编本地电脑执行后显示如下:
- Client:
- Debug Mode: false
- Server:
- Containers: 26
- Running: 0
- Paused: 0
- Stopped: 26
- Images: 28
- Server Version: 19.03.1
- ...
内容有些多, 我就不全贴出来了, 主要会显示一些当前 Docker 相关的信息.
CentOS 下的安装
懒人神器, 使用 CentOS 下的包管理工具 yum 进行安装, 直接输入:
yum install docker
然后静静等待进度条走完, 验证命令和上面一致, 同样需确保 Docker 服务正常启动.
CentOS 中 Docker 基本操作命令:
- # docker 启动
- systemctl start docker
- # 重启 docker 服务
- systemctl restart docker
- # 关闭 docker 服务
- systemctl stop docker
验证结果:
Docker 基础
首先了解两个概念:
镜像: Docker 镜像是用于创建 Docker 容器的模板.
容器: 容器是独立运行的一个或一组应用.
讲人话就是镜像可以是我们自己的程序, 也可以是第三方厂商提供的组件, 比如数据库, 缓存服务等等, 而这个镜像想要运行的话, 就要放在容器里面运行, 它自己是不能单独运行的, 就好比炒菜, 光有菜不行, 还要有锅, 菜是在锅里炒出来的.
因为 Docker 默认的镜像源是在遥远的太平洋彼岸, 访问速度会有些慢, 建议各位同学配置一个国内的镜像源.
国内的镜像源有很多的, 百度一下可以找到很多, 小编这里使用的阿里云提供的容器镜像加速服务, 大家可以登录自己的淘宝账号, 在阿里云上找到容器镜像服务:
具体的配置方案阿里云已经提供出来了, 小编这里不再赘述, 大家自己登录阿里云查看吧.
上面这些都配置完成后, 我们来讲几个最基础的 Docker 命令:
获取镜像
语法: docker pull NAME[:TAG]
其中, NAME 是镜像仓库的名称(用来区分镜像),TAG 是镜像的标签(用来表示版本信息)
查看镜像
语法: docker images
可以看到, 小编的机器上目前有一个 mysql5.7 镜像.
搜索镜像
语法: docker search [image-name]
从 docker 仓库搜索 docker 镜像
删除镜像
语法: docker rmi NAME
用来删除指定镜像, 其中后面的参数可以是 tag, 如果是 tag 时, 实际上是删除该 tag, 只要该镜像还有其他 tag, 就不会删除该镜像. 当后面的参数为镜像 ID 时, 则会彻底删除整个镜像, 连通所有标签一同删除
实战 hello-world
首先输入 docker pull hello-world 来拉取 hello-world 镜像:
拉取成功后, 我们使用 docker images 来查看下这个 hello-world 镜像 :
好了, 我们已经看到这个 hello-world 镜像了, 现在来尝试一下启动, 使用命令 docker run hello-world :
若是出现了上图的内容则说明 hello-world 运行成功, 如果没出现的话, emmmmmmmmmm, 你们可能就要想想自己之前的操作了.
本篇文章到这里就结束了, 希望各位同学能自己动手实践一下, 毕竟实践出真知嘛.
参考
http://dockone.io/article/6051
来源: https://www.cnblogs.com/babycomeon/p/11933122.html