背景
在很多时候我们都会为项目的环境开发而苦恼不已,比如说我们在接受到一个ruby项目时,首先你想的当前这个项目怎么运行起来,只有当项目运行起来后,你才能正常的看到你写的代码,才知道你又写了多少个bug吗!然后其需要使用的相关工具也是有很多的,大概有一些redis、mysql、mq、ElasticSearch等一些工具,那么其项目对其要求的相关的工具要求的版本不一致的话,有可能你就需要重新安装相关工具,如果能简单方便快捷顺利的安装相关工具对应的版本的话,那还是很好的,基本影响就很小,如果不能了,在其中出现一些问题,而且关于一些你很难找到解决方法的问题,那么这种情况就会导致很影响你的开发进度很开发节奏。所以在这个时候我们如果有一个统一的环境,并且能快速的安装并且使用的话,那么就会大大的加快的你开发节奏,以及减少你懵逼的状态。
简介
2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司。
他们主要提供基于PaaS的云计算技术服务。具体来说,是和LXC有关的容器技术。(LXC,就是Linux容器虚拟技术)
后来,dotCloud公司将自己的容器技术进行了简化和标准化,并命名为——Docker。
其实docker 有两句口号,感觉能非常好的阐述它的作用,分别是:“Build, Ship and Run”(搭建、发送、运行)、“Build once,Run anywhere”(搭建一次,到处能用)
Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易
就在这个时候,K8S出现了。
K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。
它的前身,是Google自己捣鼓了十多年的Borg系统。
实现过程
那么运行一个简单的ruby项目你需要什么了?当时是一个ruby这个语言解释器了。
那么接下来看看怎么安装使用docker吧!
首先安装docker,官网下载安装链接
下载后直接进行包的安装。
在你安装好后在终端中执行docker version会显示对应版本信息的。
接下来我们来时使用时docker 安装对应ruby版本。
其实在安装之前大家可以了解一下hub.docker.com这个网址,这个上面有大量的docker镜像包,而且你还可以发布自己的专属镜像。
比如说我这里下载一个ruby的镜像,ruby大家使用的比较多,官方开发团队也做了一个专门的docker镜像源。
我这就直接下载最新的ruby镜像了。运行:docker pull ruby
当你下载完之后可以执行:docker images查看你当前安装好的镜像
当然不要认为这个时候已经可以使用你下载的ruby版本了。docker使用容器化工具吗!他最小颗粒就是得到一个可使用的容器了。
docker run --name ruby2.6.7 -itd -p 3000:3000 -v /Users/rcc/Desktop/work/project:/opt ruby:2.6.7 -i: 交互式操作。 -t: 终端。 -d: 指定容器的运行模式,默认是不进入容器。 --name:指定生成容器的名称。 -p: 指定容器映射的端口 -v: 指定容器映射的文件夹 ruby:2.6.7 :使用的镜像 |
当你生成好自己容器后,可以执行:docker ps 查看正在运行的容器
然后我们可以进入容器进行相关的操作。
docker exec -it ruby3.2.0 /bin/sh exec:当退出容器不会关闭容器 ruby3.2.0:容器名称 /bin/bash:执行终端指令的解释器 |
最后你就会发现你进入容器了。
关于整个一个完整项目需要的工具有:pg数据库、mysql数据库、ruby环境、redis等一些的东西。在了解了安装后可以组装多个工具后然形成一个完整的项目。其中在使用的时候你只需要注意端口与文件夹的映射就好了。
当没有你需要的镜像时。可以选择构建自己的系统
FROM debian:10 ENV TZ Asia/Shanghai ENV DEBIAN_FRONTEND noninteractive ENV PATH /pdf-converter/bin:/usr/local/go/bin:$PATH ENV GO111MODULE on ENV GOPROXY https://goproxy.cn RUN apt update \ && apt install -y wget ghostscript \ && ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime \ && echo ${TZ} > /etc/timezone # 转图片的工具包:包含 pdfinfo、pdftoppm 等 RUN apt-get -y install poppler-utils RUN wget -P /tmp https://dl.google.com/go/go1.16.linux-amd64.tar.gz RUN tar -C /usr/local -xzf /tmp/go1.16.linux-amd64.tar.gz RUN rm /tmp/go1.16.linux-amd64.tar.gz WORKDIR /pdf-converter RUN mkdir -p "/pdf-converter/src" "/pdf-converter/bin" && chmod -R 777 "/pdf-converter" RUN wget -P /usr/share/fonts/truetype/dejavu/ -i /pdf-converter/fonts/fileurl.txt COPY . . RUN go mod tidy |
其实docker 这种单机的使用是能有效的解决你在更换电脑,更换系统时出现环境不兼容等问题的快速解决方案。
他会使你在开发时,不用浪费大量的时间成本在环境安装上面的。