您的位置:首页 > 运维架构 > Docker

docker

2016-05-24 00:00 746 查看

1. 安装

https://www.vultr.com/docs/installing-docker-on-ubuntu-14-04

2. 入门

http://bg.biedalian.com/2014/11/20/docker-start.html
http://cn.soulmachine.me/blog/20131026/ https://docs.docker.com/mac/

3.网络和数据

https://docs.docker.com/engine/userguide/containers/networkingcontainers/

4.mongo+nodejs

http://ifdattic.com/how-to-mongodb-nodejs-docker/

这里有2种方案,一个是自己创建mongo和nodejs的镜像,还有一个直接从官方库下载mongo和node官方镜像。

另一种端口映射的方法是在dockerfile中使用expose指令,然后在运行镜像的时候使用-P参数自动添加端口映射

注:node官方镜像版本是6的,要用4的需要手动制作node镜像:

http://www.hostingadvice.com/how-to/install-nodejs-ubuntu-14-04/

这里将mongo和node分开部署,mongo在一个独立的容器中。
https://hub.docker.com/_/mongo/
启动一个容器来提供mongo 服务

docker run -v "$(pwd)":/data --name mongo -d mongo mongod --smallfiles

启动app容器,create a container which has all the required data mounted and is linked to mongo container:

docker run -it --name node -v "$(pwd)":/data --link mongo:mongo -w /data -p 8082:8082 node bash

这里的-p 是端口映射,讲container的8082端口映射到host的8082端口以便从外部访问container服务

这里会存在连接数据库问题,因为app默认连接的是本地的数据库,需要设置连接字符串,让app连接外部的mongo服务:

db:'mongodb://mongo:27017/moveshow'

It’s also possible to run the application in container directly:

docker run --name nodeapp -v "$(pwd)":/data --link mongo:mongo -w /data/hw3-2and3-3/blog -p 8082:8082 -d node node app.js

5. docker 工作流

在项目工程目录下创建Dockerfile及.dockerignore文件

Dockerfile用于创建镜像文件,.dockerignore用于排除不需要拷贝到容器中得文件。

Dockerfile首先是创建环境,必须要安装的:nodejs , npm

可选安装的:bower grunt等

设置环境变量: 包括NODE_ENV等

拷贝文件到工作目录下:COPY . /app/www

为工作目录创建volume用于持久化数据:

VOLUME ["app/www"]

最后执行命令启动进程:

CMD ["nodejs", "server.js"]

6. mongodb 认证

mongodb本地访问一般不需要认证,外部访问除了指定用户名密码之外还需要指定目标数据库,也就是说用户权限是和目标数据库绑定的

http://blog.51yip.com/nosql/1575.html

7 一些常用的命令及技巧

http://www.cnblogs.com/elnino/p/3899136.html

dockerfile中如果希望每一条指令不使用cache只需要为该条指令加一个注释就可以了。

8. daocloud容器云

8.1 数据持久化

daocloud提供数据库服务和volume实现数据持久化,前者用于数据库数据持久化,后者用于用户数据持久化。

创建一个mongodb服务,并绑定至app,在app中可以使用环境变量连接数据库,包括用户名密码及数据库实例名。

可以使用mongo-express对数据库实例进行管理;

volume用来存储用户数据,需要和app绑定,并设定volume映射路径,容器中指定的路径会映射到volume

9. 创建基础镜像

官方镜像太多,好用的找不到,干脆从0开始自己创建一个。

基于ubuntu15.1: ubuntu:wily-20160526

9.1 nodejs

nodejs装V4版本的:

https://nodejs.org/en/download/package-manager/

9.2 ffmpeg
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: