docker是一个开源的应用容器引擎,让开发者能够打包他们的应用以及依赖到一个可移植的容器中。javascript
而后发布到任何一个 linux 系统上面。java
docker 容器启动和中止都很快,直接在宿主中能够完成。mysql
docker 容器占用的系统资源少,一台宿主能够运行不少容器linux
docker 操纵方便,简单易学习sql
docker 能够经过 dockerfile 配置文件自动建立和部署。docker
docker 容器也是沙箱机制的,相互彻底隔离shell
docker 镜像相似于虚拟机镜像,也能够理解为一个面向 docker 引擎的只读模版。ubuntu
镜像是建立 docker 容器的基础,镜像能够是一个系统( ubuntu镜像 ),也能够是一个应用程序( mysql 镜像 )。bash
docker pull name[:tag]
开发者能够经过 docker pull 来获取对应的镜像。工具
docker images
列出全部的镜像列表。
展现镜像的概要信息,了解当前全部的镜像。
docker inspect imageID
获取某一个镜像的详细信息。
docker search name
在仓库中查询某一个镜像。
docker rmi name
删除某一个镜像。
建立镜像有三种方法:基于已有镜像的容器建立、基于本地模版导入、基于 dockerfile 建立
基础已有镜像容器建立
docker commit [options] containerId [imageName[:tag]]
建立一个容器:
options :a ( 做者名称 )、m( 提交信息 )、p( 建立时候暂停 )
containerId :容器的id
imageName[:tag] : 名称和标签
直接导入模版文件建立镜像
docker import tpl
存储能够将镜像保存为本地文件
载入将本地文件导入为一个本地镜像
docker push name[:tag]
建立本地镜像到仓库中。
docker 容器相似一个轻量级的沙箱,docker 利用容器来隔离和运行应用。
容器是经过镜像建立实例来的,在宿主中能够实现启动、中止、删除等操做,且容器相互隔离不受影响。
docker create name[:tag]
建立了容器可是没有启动它。
能够经过 docker start name 来启动容器
docker run name
至关于:docker create --> docker start
过程:
一、检查是否存在本地镜像,不存在到仓库中获取
二、利用容器建立并启动容器
三、分配一个文件系统,并在只读的镜像层外面挂在一层可读写层
四、从宿主的网桥中桥接一个虚拟接口到容器中
五、从地址池配置一个 IP 地址给容器
六、执行指定到应用程序
七、执行完毕
参数:
t :分配一个伪终端
i :标准的输入
d : 后台运行
docker exec -it containerID /bin/bash
nesnter 工具
须要下载工具,而且连接 docker
docker rm containerID
docker 仓库相似于代码仓库,是 docker 集中存放镜像文件的位置。
docker run -d -p --name -v /container/dir:/local/dir imageName
-v : 建立一个数据卷。
一个宿主目录和容器目录的映射。
docker run-it -v /local/dbdata --name con1 ubuntu
共享数据卷容器
docker run -it --volumes-from con1 --name con2 ubuntu
con1 和 con2 同时共享 /dbdata 目录。
docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu
建立一个容器且挂在到 dbdata 上面,-v 建立数据卷
tar cvf /backup/backup.tar /dbdata
打包数据tar
tar xvf /backup/backup.tar
解压数据
docker run -p 5000:30000 name image
p : 将本地端口映射到容器端口上
dockerfile 是一个文本格式的配置文件,能够快速的建立自定义镜像。
dockerfile 是一行行命令语句组成。
通常分为四个部分:
基本镜像信息、维护者信息、镜像操做者、容器启动指令
一、FROM <image[:tag]>
指定配置的镜像
二、MAINTAINER <name>
做者名称
三、RUN <command>
在 shell 运行命令,即 /bin/bash -c
四、CMD [] <command>
执行命令,只会执行最后一条
五、EXPOSE ports
暴漏执行端口,可外部访问或者 -p 映射
六、ENV <key> <value>
指定环境变量,在配置全局可使用
七、ADD/COPY <src> <dest>
指定本地的连接到容器目录
八、ENTRYTRYOINT <command>
容器启动后,执行到命令
九、VOLUME ["data"]
建立一个主机或者其余数据卷挂载点
十、USER daemon
指定用户名称
编写完成 dockerfile 文件以后,能够用 docker build 建立镜像。