新创建 Docker 工作流: #
- 编写 Dockerfile
- 构建新镜像 build
- 运行 run
- 停止 stop
- 删除 rm
构建新镜像 #
docker build -t statusbarimg .
启动容器 #
-d
后台, -p
暴露给外部的(宿主):内部监听的端口(容器) –name
别名
docker run --name statusbarcontainer -d -p 80:8000 statusbarimg
交互模式启动 #
docker run -it --name statusbarcontainer -p 80:8000 statusbarimg
启动/停止/重启 #
docker start/stop/restart statusbarcontainer/container_id
删除容器 #
docker rm statusbarcontainer
删除镜像 #
docker rmi
连接容器 #
link db:db 连接到名为 db 的 容器上,并且用 db 指代该容器 -e DATABASE_HOST=db 将环境变量 DATABASE_HOST 设置为 db
docker run -it -p 8123:8123 --link db:db -e DATABASE_HOST=DB users-service
在 xx 容器中执行命令 #
docker exec statusbarimg cat /etc/hosts
关闭 #
docker kill container_id
查看容器 #
docker ps # -l(最近一次运行的)/-a(所有的)
查看镜像 #
注意,运行着或运行过的镜像为容器,删镜像要先删容器,包括运行过的, 流: ps -a 看容器 id -> rm 删容器 -> images 看镜像 -> 删镜像
docker images
拉取/推送/搜索 #
docker pull/push/search
tag #
docker tag 195eb90b5349 seanlook/ubuntu:rm_test
提交对 image 的改动 #
对运行中的容器编辑后,可以保存修改,持久化到磁盘
docker commit -m "some tools installed" fcbd0a5348ca seanlook/ubuntu:14.10_tutorial
进入正在后台运行的容器后 exit 会导致容器关闭) #
docker exec -it 6057024435c4 /bin/sh
其他参考:http://blog.csdn.net/permike/article/details/51879578
复制文件到容器 #
docker cp ./peatio cf152a690090:/root
.Dockerfile 示例
# 设置基础镜像 和 维护者
FROM daocloud.io/node:8
MAINTAINER me@yanbingbing.com
# 设置env环境
ENV HTTP_PORT 8000
# 设置工作目录 和 复制本地镜像到容器中
COPY . /app
WORKDIR /app
npm install
RUN npm install --registry=https://registry.npm.taobao.org
# 暴露的端口
EXPOSE 8000
# 命令
CMD ["npm", "start"]
Docker Composer #
Docker Composer 允许用户创建一个文件,在其中定义系统里的每个容器,容器间的关系,并且构建或者运行它们。
就是一下子跑数据库,app 和 nginx,并排好他们的连接关系,启动顺序,自动执行
Docker Composer 工作流 #
写 docker-compose.yml -> build -> up -> down
docker-compose build
docker-compose up/down
Docker 网络互联 #
docker run 里的–network 选项有 bridge,host,自定义的名字等 同一个 network 下面可以互联,默认是 bridge,自定义的名字就像一个 namespace 一样,可以直接相互连接。
比如,在 connected 这个网络空间中,运行容器
docker run -d -p 3001:3001 --network connected --name post post