docker部署的经验

1. docker是什么

官网原话时:Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. By taking advantage of Docker’s methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production。

翻译过来呢是这样,docker是一种技术,它可以把你的程序和基础设施分开,并大大缩短我们部署程序的时间, 并且可以显著地渐少我们写代码和把运行在生产环境的时间。

再简化一下呢,我们把服务器理解成一辆海上货轮, docker把一个个程序和程序所需的依赖包环境变量设置等打包放入一个集装箱中,我们可以把这个集装箱放在A货轮上,同时我们也可以把这个集装箱直接放到B货轮上,不受丝毫影响。

看到这你可能还没理解docker的作用和优势,我们就看看下一块,我们是为什么要用docker部署呢?

2.我们为什么要用docker部署

我们部署应用程序到服务器时,为了隔离各程序应用环境常用做法有两种,一种是VM虚拟机,它相当于把一个服务器分成n份也就是把服务器的内存和硬盘划分为n份但是共用cpu,然后每一块里部署各自的应用程序,一种是是用虚拟环境(虚拟容器)隔离如python中的virtualenv包这样每个程序在自己的虚拟环境中运行相互不受影响共用服务器的资源如cpu内存和硬盘。

在docker出现之前,很长一段时间我们是用虚拟环境的方式去管理我们的应用程序,那docker出来是优化了哪个部分呢?

即使我们用虚拟环境或者说虚拟容器的方式去隔离了一个个程序,解决了环境冲突的问题,但是当我们需要在B服务器上也部署同一程序,我们得重新执行一遍部署步骤,如果部署n台的话,那的确是有点够呛的,所以这时docker出现了,docker相当于把我们这个虚拟容器制作成一个镜像image, 然后可以上传到docker hub上,然后哪台服务器需要部署这个程序,直接从docker hub上把这个镜像拉下来,然后部署就可以了,方便了很多。

3.docker中image和container

在面试中常有面试官问,什么image和container及他们的区别。

image: 我们可以理解image就是打包好的虚拟容器,是一个可执行的进程。

container: 就是启动的虚拟容器,是一个执行了的进程。

image与container有一个形象的比喻就是,image相当于一个写好的可执行程序,container相当于可执行程序运行中的进程。

4.docker常用命令

找了一个比较全的常用命令的博客。

5.什么是Dockerfile及常用命令

Dockerfile就一个名字Dockerfile的文件,是一个用Docker语法和shell命令编写的脚本文件。

我们在打包一个镜像的时候通常会先cd 到Dockerfile文件所在目录然后执行docker命令 docker build -t [镜像别名] .   来构建镜像。

6.docker部署步骤

首先我们准备好写好的可运行代码,

然后在代码目录下编写Dockerfile文件

cd到Dockerfile所在目录,运行docker命令  docker build -t [镜像别名] .  

运行命令docker images 可以查看到刚才构建的image,如果构建成功的话。

然后运行容器, docker run -d -p 8000:8000 [镜像别名] --name [容器名称]             (-p后的两个端口分别为服务器的端口和容器内部的端口)

运行docker ps可以查看自己刚才运行的容器,如果运行不成功可以docker ps -a 查看全部运行过的容器

容器运行成功后就可以正常访问了

原文地址:https://www.cnblogs.com/lifei01/p/13622441.html