docker 介绍
1,docker 是什么 ?
docker 是一个开源的应用容器引擎, 让开发者可以打包他们的应用以及依赖到一个可移植的容器中.
然后发布到任何一个 Linux 系统上面.
特点:
docker 容器启动和停止都很快, 直接在宿主中可以完成.
docker 容器占用的系统资源少, 一台宿主可以运行很多容器
docker 操纵方便, 简单易学习
docker 可以通过 dockerfile 配置文件自动创建和部署.
docker 容器也是沙箱机制的, 相互完全隔离
三大核心概念 : 镜像, 容器, 仓库
镜像
docker 镜像类似于虚拟机镜像, 也可以理解为一个面向 docker 引擎的只读模版.
镜像是创建 docker 容器的基础, 镜像可以是一个系统 ( Ubuntu 镜像 ), 也可以是一个应用程序 ( MySQL 镜像 ).
获取镜像
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
过程:
1, 检查是否存在本地镜像, 不存在到仓库中获取
2, 利用容器创建并启动容器
3, 分配一个文件系统, 并在只读的镜像层外面挂在一层可读写层
4, 从宿主的网桥中桥接一个虚拟接口到容器中
5, 从地址池配置一个 IP 地址给容器
6, 执行指定到应用程序
7, 执行完毕
参数:
t : 分配一个伪终端
i : 标准的输入
d : 后台运行
进入容器
docker exec -it containerID /bin/bash
nesnter 工具
需要下载工具, 并且链接 docker
删除容器
docker rm containerID
docker 仓库
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 目录.
利用数据卷容器迁移数据
1, 备份数据
docker run --volumes-from dbdata -v $(pwd):/backup --name worker Ubuntu
创建一个容器且挂在到 dbdata 上面,-v 创建数据卷
tar cvf /backup/backup.tar /dbdata
打包数据 tar
2, 恢复数据
tar xvf /backup/backup.tar
解压数据
端口映射
docker run -p 5000:30000 name image
p : 将本地端口映射到容器端口上
Dockerfile 创建镜像
dockerfile 是一个文本格式的配置文件, 可以快速的创建自定义镜像.
基本结构
dockerfile 是一行行命令语句组成.
一般分为四个部分:
基本镜像信息, 维护者信息, 镜像操作者, 容器启动指令
配置
1,FROM <image[:tag]>
指定配置的镜像
2,MAINTAINER <name>
作者名称
3,RUN <command>
在 shell 运行命令, 即 /bin/bash -c
4,CMD [] <command>
执行命令, 只会执行最后一条
5,EXPOSE ports
暴漏执行端口, 可外部访问或者 -p 映射
6,ENV <key> <value>
指定环境变量, 在配置全局可以使用
7,ADD/COPY <src> <dest>
指定本地的链接到容器目录
8,ENTRYTRYOINT <command>
容器启动后, 执行到命令
9,VOLUME ["data"]
创建一个主机或者其他数据卷挂载点
10,USER daemon
指定用户名称
创建镜像
编写完成 dockerfile 文件之后, 可以用 docker build 创建镜像.
来源: http://www.bubuko.com/infodetail-2881483.html