营销型网站图片,类似AG网站建设,购书网站开发的意义,奇零seo赚钱培训# 正文
本猿所在产品的代码是保存到了一个本地gitlab实例上#xff0c;实例是别的同事搭建的。最近又又又想了解一下#xff0c;而且已经盘了一些了#xff0c;所以写写记录一下。因为这个事儿没太多的进度压力#xff0c;索性写到哪儿算哪儿#xff0c;只要是新了解到的…# 正文
本猿所在产品的代码是保存到了一个本地gitlab实例上实例是别的同事搭建的。最近又又又想了解一下而且已经盘了一些了所以写写记录一下。因为这个事儿没太多的进度压力索性写到哪儿算哪儿只要是新了解到的知识就都写不一定一直说gitlab随时跑题、跑完就回来、差不多就结束文章只要帖子里有点儿东西就行。
要说盘gitlab没有个环境用来练习是很难的或者说都不会搭建环境那就是没根儿。所以怎么搭建环境呢公司的这个是2个docker容器一个gitlab实例的一个nginx的。好了开始第一次跑题说一下docker。docker一词的英文原意是码头工人、码头装卸工[e1]所以想先从单词原意入手得到个感性认识是没大有戏了。看看官网docker.com[e2]说docker是个平台用来开发、移动、运行应用程序的原话是an open platform for developing, shipping, and running applications。当然优点必须很多。
docker这个平台是通过一个叫“容器”的东东提供打包和运行应用程序的环境。“容器”一词对应的英文是“container”容器里已经包含了应用运行所需要的东西所以就不用再依赖宿主机的了原话是Containers are lightweight and contain everything needed to run the application, so you dont need to rely on whats installed on the host。下一句是You can share containers while you work, and be sure that everyone you share with gets the same container that works in the same way。就是说想要把开发成果部署在不同的环境那就在不同的环境部署一下容器如此不同环境部署的开发成果就是一样的避免一些类似“我这里能运行啊你用的那个环境有问题吧”的拉扯。
比如我们可以把一个系统拆成很作组件前端、数据库、底层服务等一个组件做程一个容器每个组件是一个独立的进程它们在自己的、独立的环境中运行和宿主机上别的东西隔离。实际上通过vmware或pve这种平台在一套硬件资源上安装不同的虚拟机进而部署不同的应用也有这个效果那么相比虚拟机使用容器有什么好处呢操作系统本身是有重量的一个什么应用都不运行的操作系统也要消耗一定的磁盘、内存以及CPU算力这算是一种“overheads”[e3]而容器技术就可以节省这些“overheads”同时带来的一个好处就是重启时更快。我们看docker的图标很像一个载着很多集装箱的、鲸鱼形状的轮船[e4]大概就是把轮船的运力比作硬件资源、把容器比作集装箱吧。docker官网的说法更好懂 接下来是我读docker官网文档时记录的一些笔记我是用过一点儿docker了觉得写成这个程度自己能看懂但不一定对初识docker的人那么友好所以觉得不好懂就去docker.com上的文档吧毕竟再好的翻译也不如原文。 /* 私房docker 笔记开始 */
Docker是CS架构的Docker Client给Docker Daemon发消息然后Docker Daemon干创建容器、运行重启、部署容器这样的重活儿。Docker的前后端可以在同一台设备上也可以在不同的设备上它们通过一个REST API通讯REST API通过UNIX套接字实现本地or网口。还有一个docker客户端叫Docker ComposeDocker Compose可以lets you work with applications consisting of a set of containers就是把一堆容器的配置按语法写到文件里然后Docker Compose就可以根据配置一次启动若干容器。
Docker Daemon名为dockerd[e5]它监听上文说到的REST API请求然后管理像images、containers、networks、volumes这些Docker objects。而且Docker Daemon还可以和其它的Docker Daemon服务交互。Docker Client就是我们以后会经常敲的docker命令这是和Docker Daemon通讯的最基础的方式。比如我们从bash上执行了一个docker run container-id以我的环境为例[e6]就是可执行程序/usr/bin/docker给dockerd进程发消息然后让dockerd干活儿。
Docker Desktop是一个可以安装在Mac、windows或者linux系统上的程序有这个就可以从办公电脑上创建并分享容器化的应用和微服务了。Docker Desktop包含了
Docker daemon、Docker client、Docker Compose、Docker Content Trust、Kubernetes以及Credential Helper.
Docker registry是保存docker镜像的地方Docker Hub是一个公开的Docker registry所有人都可以从Docker Hub上查找并使用镜像。当执行docker pull或者docker run命令时Docker就会从配置文件里的Docker registry拉取镜像当然也可以push镜像。
上边说到过Docker objects包含镜像、容器、networks、volumes、plugins以及其它对象。挨个说说吧。镜像images是一个包含了创建容器命令的只读模板。通常镜像是基于别的镜像来制作的比如我们可以从docker hub上拉取ubuntu的镜像安装上阿帕奇的web server和自己的应用、部署上自己的配置然后打成新的镜像。dockerfile就是创建镜像时使用的里面包含了一个创建镜像、运行镜像必要步骤的指令原句是To build your own image, you create a Dockerfile with a simple syntax for defining the steps needed to create the image and run it然后紧跟一句“Each instruction in a Dockerfile creates a layer in the image”所以我觉得这里说的dockerfile里面保存的应该是“指令”而不是字面上的“语法”。当修改了dockerfile并重新制作镜像时Docker只会重建有修改的layer这也是镜像/容器技术相比虚拟化技术更轻量、快速的原因之一。
说容器它是一个可以运行的、镜像的实例A container is a runnable instance of an image。可以创建、启动、停止、移动、删除容器。可以把容器连接到一个或多个网路可以给容器挂载存储还可以根据容器的当前状态创建新的image。
/* 私房docker 笔记结束 */
好了今天就这些吧。
# ENDNOTES
e1 e2.1 e2.2 e2.3 e3 e4 e5 e6