Docker 镜像(Image),就至关因而一个root文件系统。
好比官方镜像ubuntu:1 6.04就包含了完整的一套Ubuntu16.04最小系统的root文件系统。docker
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和对象同样,
镜像是静态的定义,容器是镜像运行时的实体。容器能够被建立、启动、中止、删除、暂停等。shell
仓库可当作一个代码控制中心,用来保存镜像。json
systemctl start docker
systemctl stop docker
systemctl restart docker
systemctl status docker
systemctl enable docker
docker search 关键字
docker pull 镜像名[:TAG]
docker images [OPTIONS] [REPSSITORY[:TAG]] 参数说明: --all,-a false 列出全部镜像(包括中间映像层) --digests false 显示摘要信息 --filter,-f 显示知足条件的镜像 --format 经过Go语言模板文件显示镜像 --no-trunc false 不截断输出,显示完整的镜像信息 -quiet,-q false 只显示镜像ID
docker rmi [OPTIONS] IMAGE [IMAGE...] 参数说明: --force,-f false 强制删除 --no-trunc false 是否移除该镜像的过程镜像 删除全部镜像 docker rmi -f $(docker images)
docker save [OPTIONS] IMAGE [IMAGE...] 参数说明: --output,-o 写入文件而非STDOUT
docker load [OPTIONS] 参数说明: --input,-i 从文件加载而非STDIN --quiet,-q false 静默加载
docker ps #查看正在运行的容器 docker ps -a #查看全部容器
docker run 参数 参数说明: -i: 保持容器运行。一般与-t同时使用。加入it这两个参数后,容器建立后自动进入容器中,退出容器后,容器自动关闭。 -t:为容器从新分配个伪输入终端,一般与-i同时使用。 -d:以守护(后台)模式运行容器。建立一个容器在后台运行,须要使用docker exec进入容器。退出后,容器不会关闭。 -it建立的容器- 般称为交互式容器,-id建立的容器一 般称为守护式容器 --name: 为建立的容器命名。 -p 端口映射 eg: -p 3307:3306 表示宿主机3307端口对应容器3306端口
docker exec 参数 #退出容器,容器不会关闭
docker stop 容器名称
docker start 容器名称
docker rm 容器名称
docker inspect 容器名称
思考:ubuntu
数据卷vim
数据卷做用centos
docker run ... -v 宿主机目录(文件):容器内目录(文件)
数据卷容器就是一个正常的容器,专门用来提供数据卷供其它容器挂载的。浏览器
1.例如建立启动c3数据卷容器
,使用-v参数设置数据卷bash
docker run -it --name=c3 -v /volume centos:7 /bin/bash
2.建立启动c1 c2容器,使用--volumes-from参数设置数据卷服务器
docker run it - name= =c1 --volumes-from c3 centos:7 /bin/bash docker run it - name= =c2 --volumes-from c3 centos:7 /bin/bash
宿主机的一个目录或文件性能
数据卷做用
建立一个容器, 挂载一个目录, 让其余容器继承自该容器( --volume-from)。
经过简单方式实现数据卷配置
Docker镜像如何制做?
1.容器转为镜像
docker commit 容器id 镜像名称:版本号
docker save -o 压缩文件名称 镜像名称:版本号
docker load -i 压缩文件名称
2.dockerfile
关键字 | 做用 | 备注 |
---|---|---|
FROM | 指定父镜像 | 指定dockerfile基于那个image构建 |
MAINTAINER | 做者信息 | 用来标明这个dockerfile谁写的 |
LABEL | 标签 | 用来标明dockerfile的标签,可使用Label代替Maintainer,最终都是在docker image基本信息中能够查看 |
RUN | 执行命令 | 执行一段命令,默认是/bin/sh, 格式: RUN command或者RUN ["command","param1","param2"] |
CMD | 容器启动命 | 提供启动容器时候的默认命令,和ENTRYPOINT配合使用.格式CMD command param1 param2或者CMD ["command","param1","param2"] |
ENTRYPOINT | 入口 | 通常在制做一些执行就关闭的容器中会使用 |
COPY | 复制文件 | build的时候复制文件到image中 |
ADD | 添加文件 | build的时候添加文件到image中,不只仅局限于当前build上下文 能够来源于远程服务 |
ENV | 环境变量 | 指定build时候的环境变量,能够在启动的容器的时候经过-e 覆盖,格式ENV name=value |
ARG | 构建参数 | 构建参数:只在构建的时候使用的参数,若是有ENV,那么ENV的相同名字的值始终覆盖arg的参数 |
VOLUME | 定义外部能够挂载的数据卷 | 指定build的image那些目录能够启动的时候挂载到文件系统中,启动容器的时候使用-v绑定,格式 VOLUME ["目录"] |
EXPOSE | 暴露端口 | 定义容器运行的时候监听的端口,启动容器的使用-p来绑定暴露端口, 格式: EXPOSE 8080或者EXPOSE 8080/udp |
WORKDIR | 工做目录 | 指定容器内部的工做目录,若是没有建立则自动建立,若是指定/使用的是绝对地址,若是不是/开头,那么是在上一条workdir的路径的相对路径 |
USER | 指定执行用户 | 指定build或者启动的时候,用户在RUN CMD ENTRYPONT执行的时候的用户 |
HEALTHCHECK | 健康检查 | 指定监测当前容器的健康监测的命令,基本上没用,由于不少时候,应用自己有健康监测机制 |
ONBUILD | 触发器 | 当存在ONBUILD关键字的镜像做为基础镜像的时候,当执行FROM完成以后,会执行ONBUILD的命令,可是不影响当前镜像,用处也不怎么大 |
STOPSIGNAL | 发送信号量到宿主机 | 该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。 |
SHELL | 指定执行脚本的shell | 指定RUN CMD ENTRYPOINT执行命令的时候,使用的shell |
docker pull registry
docker run -id --name=registry -p 5000:5000 registry
{"repositories":[]}
表示私有仓库搭建成功vim /etc/docker/daemon.json
在上述文件中添加一个key,保存退出。此步用于让docker 信任私有仓库地址;注意将私有仓库服务器ip修改成本身私有仓库服务器真实ip
{"insecure-registries":["私有仓库服务器ip: 5000"]}
systemctl restart docker docker start registry
相同:
不一样:
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | 通常为MB | 通常为GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持上千个容器 | 通常几十个 |