既然谈到服务计算,有一个问题肯定是不得不提到的那就是docker,其实最开始docker是云计算中非常有名的几个aas中的一个也就是paas和saas而产生的.
作为一个应该能够快速部署的应用,很重要的一步就是应该能够直接运行在各种操作系统上,但是这就涉及到非常严肃的问题就是因为一个应用的运行不仅仅只涉及到我们所编出的代码,很重要的一部分是我们所引用的库和所必须的运行环境,这就涉及到需要有一个方法能够把一个应用运行所需要的一切环境全部都打包在一起,如果可以的话甚至可以把操作系统的内核都打包的一个技术,这就是docker所可以完成的任务.
Docker是一个虚拟环境容器,可以将你的开发环境、代码、配置文件等一并打包到这个容器中,并发布和应用到任意平台中。
说到这里可能大家会觉得这简直即使程序员的屠龙宝刀
- 安装docker
在apt中注册docker的资源sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
让配置更新sudo apt-get update
安装dockersudo apt-get install docker-ce
可以先测试一下是不是已经安装好了。
docker run -d --name=web -p 80:80 nginx:latest
运行预设值的nginx服务器
使用docker ps命令,可以列出正在运行的容器,可以看到,刚才基于nginx镜像创建的容器已经处于运行状态了:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a89d281829f9 nginx:latest "nginx -g 'daemon ..." 8 minutes ago Up 8 minutes 0.0.0.0:80->80/tcp, 443/tcp web
这就代表着已经运行起了一个和80端口绑定的web服务。
可以顺利访问。
为了进一步探索docker的操作环境
docker exec -i -t web bash
ps -l
PID USER TIME COMMAND
1 root 0:00 nginx: master process nginx -g daemon off;
5 nginx 0:00 nginx: worker process
23 root 0:00 ps -l
可以看到docker自己有了一个根文件夹,也就是一个虚拟开发环境。
- 配置web所需容器安装所需镜像
docker pull tomcat
docker pull tomcat``````docker pull tomcat
启动容器docker run -it --rm -p 8888:8080 tomcat:latest
# install simple http server for serving static contentRUN
npm install -g cnpm --registry=https://registry.npm.taobao.org && cnpm install -g http-server
# make the 'app' folder the current working directory
WORKDIR /app
# copy both 'package.json' and 'package-lock.json' (if available)
COPY package*.json ./
# install project dependencies# RUN npm install
RUN npm install
# copy project files and folders to the current working directory (i.e. 'app' folder)COPY . .
# build app for production with minificationRUN npm run build
EXPOSE 8080
填写所需的docker file
上面的Dockerfile的说明如下:
FROM指令制定了该镜像的基础镜像为node。
COPY指令将宿主机的代码文件和配置文件复制到容器环境的对应位置。
接着RUN指令来为应用安装必要的依赖。
上面每一条指令都会由docker容器执行然后提交为一个镜像,叠在原来的镜像层的上方,最后得到一个拥有许多镜像层叠加的最终镜像。完成Dockerfile的编写后,只需要用docker build命令就能构建出一个新的镜像:
运行docker容器docker build -t swapi docker run -it -p 8080:8080 swapi