
文章目录

Docker 是一个应用打包、分发和部署的工具,可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,其他的都不要,传统的虚拟机则是用软件虚拟一个完整而庞大的系统,所以Docker相对更轻量。

| 特性 | 传统VM | Docker |
|---|---|---|
| 隔离级别 | 操作系统 | 进程 |
| 性能 | 性能差,内存占用高,因为虚拟了一个完整的操作系统 | 性能好,它只虚拟软件所需的运行环境,最大化减少不必要的配置,提升性能 |
| 跨平台 | 通常只能在桌面级系统运行,比如 Windows/Mac | 支持的系统有很多,各类 windows 和 Linux 都支持 |
| 自动化 | 所有操作都需要手动安装配置 | 一个命令就可以自动部署好所需环境 |
| 稳定性 | 稳定性不高,不同系统差异大 | 稳定性好,不同系统都一样部署方式 |

打包: 将软件运行所需的依赖、第三方库、源代码打包在一起,变成一个 安装包
分发: 把你打包好的 “安装包” 上传到一个仓库,就好比 GitHub 开源代码差不多,可以非常方便的获取和安装
部署: 拿着 “安装包” 就可以使用一个命令运行起来你的应用,自动模拟出一摸一样的运行环境,不管是你是在 Windows,Mac 或者 Linux 都一样

在没有使用 Docker 技术前,通常就是开发者在 Windows 或者 Mac 等等图形化友好的操作系统上完成应用的开发,以及测试等构建工作,最后就是部署,通常部署在 Linux 服务器上,需要在服务器上完成环境的安装和部署,版本号有一点差错,可能就会导致,在我机器上跑都没问题,怎么到服务器就各种问题了,想想就头疼!

在使用了 Docker 技术后,同样还是开发者在 Windows / Mac 等图形化友好的界面上开发并完成测试等构建工作,注意,后续就有不一样了,这时需要将应用打包为 Docker 镜像,可以理解成安装包,只不过这个安装包有点特殊,你只需要在各种安装了 Docker 的服务器上运行一个命令就部署好了,确保了不同机器上跑一致的运行环境,不会再出现我机器上跑正常,换台机器就有问题的情况。
Docker综合考虑沙箱和虚拟机,扬长避短,即拥有不错的资源隔离能力,又有很低的虚拟化开销,它的应用场景也很广,列举以下场景供开发者参考:

👏 可以用在运维上,应用打包,分发和部署,一次打包,处处运行
👏 快速安装测试/学习软件,用完就清(类似小程序),例比如 MySQL / Redis / MongoDB ……
👏 多个版本软件共存,不污染系统,比如 Python2、Python3
👏 Windows 上体验/学习各种 Linux 系统
👏 ……

下面了解两个重要概念,镜像和容器,镜像可以理解为软件安装包,如果你使用镜像文件(iso)装过操作系统,那么就可以把镜像文件理解成一个安装包,容器就好比安装完成后的操作系统,它是独立的,隔离的,容器只是对它的一个形象称呼。
镜像【image】: 可以理解为软件安装包,能方便的进行分发和安装。
容器【container】: 软件安装后的状态,每个软件运行环境都是独立的、隔离的,称之为容器。
在 Windows 系统安装 Docker 的图形化软件,Docker运行环境为 Linux 系统,那想要在 Windows 上使用 Docker 就需要有 Linux 的运行环境,我们的系统中已经安装好了 Linux 的运行环境
64位处理器二级地址转换
4GB系统RAM
使用 Ctrl + Shift + Esc 打开任务管理器,选择性能选项卡,查看当前 Windows 是不是已经开启了虚拟化

首先进入https://docs.docker.com/get-docker/ 下载软件

其中我遇到了两个问题,第一个是未开启虚拟化,找教程开启就可以了,还有一个问题就是说更新一下 WSL,不用担心,Docker官方很细心,常见问题它在下面贴的都有链接,点链接就知道哪里出问题了,根据文档提示进行修复就可以了。
由于 Docker 的服务器在国外,国内使用下载镜像会很慢,配置国内镜像代理可以解决下载慢的问题。

我的配置如下:一个是国内官方,一个是科大的镜像站
"registry-mirrors": ["https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn"],
以下还有很多镜像加速站点,可以根据个人喜好进行选择,注意阿里云需要单独申请
| 镜像加速器 | 镜像加速器地址 |
|---|---|
| Docker 中国官方镜像 | https://registry.docker-cn.com |
| DaoCloud 镜像站 | http://f1361db2.m.daocloud.io |
| Azure 中国镜像 | https://dockerhub.azk8s.cn |
| 科大镜像站 | https://docker.mirrors.ustc.edu.cn |
| 网易云 | https://hub-mirror.c.163.com |
| 七牛云 | https://reg-mirror.qiniu.com |
| 阿里云 | https://<your_code>.mirror.aliyuncs.com |
| 腾讯云 | https://mirror.ccs.tencentyun.com |
这就是全部内容了,如果你觉得文章不错,记得点赞支持小周呀👋

1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
您认为可以作为插件很好地存在于您的Rails应用程序中必须实现的哪些行为?您过去曾搜索过哪些插件功能但找不到?哪些现有的Rails插件可以改进或扩展,如何改进或扩展? 最佳答案 我希望在管理界面中看到一个引擎插件,它提供了应用程序中所有模型的仪表板摘要,以及可配置的事件图表。 关于ruby-on-rails-您希望看到哪些Rails插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questio
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正处于学习Ruby的阶段,我想查看一些小型库的源代码以了解它们是如何构建的。我不知道什么是小型图书馆,但希望SO能推荐一些易于理解的图书馆来学习。因此,如果有人知道一两个非常小的库,这是新手Rubyists学习的好例子,请推荐!我想使用Manveru'sInnatelib,因为它试图保持在2000LOC以下,但我还不熟悉其中经常使用的Ruby速记。也许大约100-5
我目前有一个reddit克隆类型的网站。我正在尝试根据我的用户之前喜欢的帖子推荐帖子。看起来K最近邻或k均值是执行此操作的最佳方法。我似乎无法理解如何实际实现它。我看过一些数学公式(例如k表示维基百科页面),但它们对我来说并没有真正意义。有人可以推荐一些伪代码,或者可以查看的地方,以便我更好地了解如何执行此操作吗? 最佳答案 K最近邻(又名KNN)是一种分类算法。基本上,您采用包含N个项目的训练组并对它们进行分类。如何对它们进行分类完全取决于您的数据,以及您认为该数据的重要分类特征是什么。在您的示例中,这可能是帖子类别、谁发布了该项
我正在尝试使用docker运行一个Rails应用程序。通过github的sshurl安装的gem很少,如下所示:Gemfilegem'swagger-docs',:git=>'git@github.com:xyz/swagger-docs.git',:branch=>'my_branch'我在docker中添加了keys,它能够克隆所需的repo并从git安装gem。DockerfileRUNmkdir-p/root/.sshCOPY./id_rsa/root/.ssh/id_rsaRUNchmod700/root/.ssh/id_rsaRUNssh-keygen-f/root/.ss
在我们的项目中,我们有一些“被遗忘的”类存在了很长一段时间。那些类已被其他类替代,但我们忘记删除它们。是否有一些自动化的方法/工具可以发现Ruby{onRails}应用程序中没有使用哪些类?谢谢! 最佳答案 这个问题已经被提出了很多次,但是最好的答案都在这里:FindunusedcodeinaRailsapp我个人喜欢日志解析:https://stackoverflow.com/a/14161807但在任何情况下,您都可以创建自己的记录器,扩展ActiveRecord::Base以创建一个观察器,该观察器将最常用的模块存储在数据库中
我在Heroku上构建了一个必须在Docker容器内运行的RoR应用程序。为此,我使用officialDockerfile.因为它在Heroku中很常见,所以我需要一些附加组件才能使这个应用程序完全运行。在生产中,变量DATABASE_URL在我的应用程序中可用。但是,如果我尝试其他一些使用环境变量(在我的例子中是Mailtrap)的加载项,变量不会在运行时复制到实例中。所以我的问题很简单:如何让docker实例在Heroku上执行时知道环境变量?您可能会问,我已经知道我们可以在docker-compose.yml中指定一个environment指令。我想避免这种情况,以便能够通过项目
我进行了一些谷歌搜索,似乎缺少用于jRuby的IDE。我读过TextMate和Sublime,但它们不提供调试或代码完成功能。有人可以提出建议吗(或者这项技术还处于起步阶段)? 最佳答案 有几个选项;我更喜欢JetBrains'IntelliJ(RubyMine).AptanahasanEclipseplugin.NetBeansusedtohaveofficialsupport,不确定currentstate是什么是。 关于ruby-哪些IDE可用于jRuby?,我们在StackOve
我在开发和生产中都使用docker,真正困扰我的一件事是docker缓存的简单性。我的ruby应用程序需要bundleinstall来安装依赖项,因此我从以下Dockerfile开始:添加GemfileGemfile添加Gemfile.lockGemfile.lock运行bundleinstall--path/root/bundle所有依赖项都被缓存,并且在我添加新gem之前效果很好。即使我添加的gem只有0.5MB,从头开始安装所有应用程序gem仍然需要10-15分钟。由于依赖项文件夹的大小(大约300MB),然后再花10分钟来部署它。我在node_modules和npm上遇到了
操作系统:CentOS6.2x86_64很抱歉缩进太古怪了。这是我的第一篇SO帖子,我是新来设置服务器的。不过,我正在学习,并将详细说明我尝试解决此问题所采取的步骤以及寻求帮助的地方。我是一位有抱负的年轻Web开发人员,并且我在其他人配置的服务器上工作,因此,这对我来说是全新的。我正在准备我最近购买的用于运行Rails应用程序的linode。我遵循了此处http://blog.blenderbox.com/2011/01/07/installing-rvm-ruby-rails-passenger-nginx-on-centos/提供的初始安装指南,并更改了步骤:sudobash反射(