Clone 一个示例项目:node
git clone -b v1 https://github.com/docker-training/node-bulletin-board cd node-bulletin-board/bulletin-board-app
包含源代码和 dockerfile 文件:git
FROM node:6.11.5 WORKDIR /usr/src/app COPY package.json . RUN npm install COPY . . CMD [ "npm", "start" ]
编写 Dockerfile 是容器化应用程序的第一步。您能够将这些 Dockerfile 命令视为有关如何构建映像的逐步指南。此步骤采起如下步骤:github
FROM
先前存在的node:6.11.5
图像。这是由 node.js 供应商构建的官方映像,并已由 Docker 验证为包含节点6.11.5解释器和基本依赖项的高质量映像。WORKDIR
指定的后续操做应该从目录中取/usr/src/app
你的映像文件系统(从不主机的文件系统)。COPY``package.json
从您的主机到.
图像中当前位置()的文件(所以在此状况下为/usr/src/app/package.json
)RUN``npm install
映像文件系统内的命令(将读取该命令package.json
以肯定应用程序的节点依赖性,并安装它们)COPY
在应用程序其他部分的源代码中,从主机到图像文件系统。在node-bulletin-board/bulletin-board-app
目录下,执行此命令建立一个 image: docker image build -t bulletinboard:1.0 .
docker
根据新的 image 启动容器:docker container run --publish 8000:8080 --detach --name bb bulletinboard:1.0
,咱们在这里使用了几个常见的标志:npm
--publish
要求Docker将主机端口8000上传入的流量转发到容器的端口8080(容器具备本身的专用端口集,所以若是咱们要从网络访问一个端口,则必须以这种方式将流量转发给它;不然,防火墙规则将阻止全部网络流量到达您的容器,这是默认的安全状态)。--detach
要求Docker在后台运行此容器。--name
让咱们指定一个名称,在之后的命令中,咱们可使用该名称来引用咱们的容器bb
。还要注意,咱们没有指定咱们要运行容器的进程。咱们没有必要,由于咱们CMD
在构建Dockerfile时使用了指令。所以,Docker知道npm start
在容器启动时会自动运行该过程。json
访问 localhost:8000
,看到公告板应用程序已启动并正在运行安全
删除容器: docker container rm --force bb
网络
还能够基于已有的 image 建立新的 image:在已有的 image 中操做以后,执行 docker commit -m="description" -a="author" containerID imageName
架构
能够在 registry 中存储和管理 imageapp
bb.yaml
,内容kubectl apply -f bb.yaml
kubectl get deployments
kubectl get services
localhost:30001
kubectl delete -f bb.yaml
bridge
:须要多个容器在同一Docker主机上进行通讯时host
:当网络堆栈不该与Docker主机隔离时,但但愿容器的其余方面隔离时overlay
:须要在不一样Docker主机上运行的容器进行通讯时,或者当多个应用程序使用集群服务一块儿工做时macvlan
:从VM设置迁移或须要容器看起来像网络上的物理主机(每一个主机都有惟一的MAC地址)时none
:一般与自定义网络驱动程序一块儿使用,none
不适用于群体服务网络插件
:能够将Docker与专用网络堆栈集成docker network create --driver bridge net1
docker network inspect net1
docker network ls
docker network rm net1
docker network connect net1 container1
docker network disconnect net1 container1
docker network prune
bridge
网络,也能够自定义,参考docker cp container1:path <path>
docker cp <path> container1:path
Compose 是用于定义和运行多容器 Docker 应用程序的工具。经过 Compose,可使用YAML文件来配置应用程序的服务。而后,使用一个命令,就能够从配置中建立并启动全部服务。
基本分三个步骤:
Dockerfile
定义环境docker-compose.yml
定义 app 的服务docker-compose up
,使用 compose 启动运行服务经常使用命令:
docker-compose up
docker-compose up -d(后台运行)
docker-compose down(删除)
docker-compose ps
docker-compose stop(中止)
docker-compose run cmd
执行服务的某一个命令