DOCKER部署

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
docker save [OPTIONS] IMAGE [IMAGE...] 例如: docker save -o /home/docker/tmp/nginx.tar nginx:1.12 注意:此处的镜像名称也可以是镜像的ID,但是最好用镜像名称
三个核心点
镜像 导入镜像
docker load [OPTIONS] 例如: docker load –i /home/docker/tmp/nginx.tar
三个核心点
镜像
重命名镜像
docker tag IMAGE[:TAG] IMAGE[:TAG] 例如: docker tag emis:v1 emis-heshan:v1 注意:当重命名后,会发现重命名前的镜像也存在,此时只需要通过docker rmi oldName删除即可
三个核心点
镜像 导出镜像
简介
什么是docker?
简介
为什么要用docker? • 更有效的利用硬件资源 • 更快速的启动时间 • 一致的运行环境
• 沙箱机制 • 避免出现“在我电脑上没有问题”这种问题 • 方便运维
• 更轻松的迁移
• 体积小 • 打包带走 • 数据卷等
简介
为什么要用docker? • 更容易维护和扩展
USER:指定当前用户,例如 USER postgres
三个核心点
镜像-dockerfile
# 选择一个已有的os镜像作为基础 FROM centos:6.9 # 镜像的作者 MAINTAINER heshan "heshan07@foxmail.com" #建立文件夹 RUN mkdir /usr/java #安装java环境 COPY jdk-7u80-linux-x64.tar.gz /usr/java/ #切换工作空间 WORKDIR /usr/java/ #解压压缩包 RUN tar -zxvf /usr/java/jdk-7u80-linux-x64.tar.gz #RUN tar -zxvf /usr/java/jdk-7u80-linux-x64.tar.gz -C /usr/java/ #ADD jdk-7u80-linux-x64.tar.gz /usr/java/ #设置环境变量 ENV JAVA_HOME=/usr/java/jdk1.7.0_80 ENV CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV PATH=$PATH:$JAVA_HOME/bin #建立文件夹 RUN mkdir /root/config #安装emis COPY app.jar /root/ COPY application-development.yml /root/config COPY application-production.yml /root/config COPY application-test.yml /root/config #拷贝ENTRYPOINT文件 COPY docker-entrypoint.sh /usr/local/bin/ #创建入口点 ENTRYPOINT ["docker-entrypoint.sh"] #切换工作空间 WORKDIR /root/ #暴露9090端口 EXPOSE 9090 CMD ["test"]
三个核心点
镜像-dockerfile
ARG:构建参数,和ENV一样,用来设置环境变量,不同之处在于仅存在于构建 期,容器运行期不会存在 VOLUME:定义匿名卷,实现数据与程序的分离
EXPOSE:声明端口,仅仅用来声明哪些端口要映射出去,但是光靠这个并不会 真正的映射出去
WORKDIR:指定工作目录,指定后,后面的命令会以此目录为基本目录,例如 WORKDIR /root
DOCKER
一 种 开 源 应 用容器 引擎
何山 2017-07-29
培训大纲
• 简介 • 安装 • 三个核心点 • 高阶 • 拓展
简介
什么是虚拟机? 通过软件模拟的具有完整硬件系统功能的、运 行在一个完全隔离环境中的完整计算机系统。 • 我们常用的虚拟机软件
• virtualbox
• vmware workstation
APP1 centos
APP2 debian
宿主机内核
三个核心点
容器 启动容器: 1,基于镜像新建并启动
docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 例如: docker run –i -t –d –name emis-en –p 9090:9090 –v /docker/tmp:/docker emis:v1 -i 以可交互的方式运行,让容器的标准输入保持打开
• 官方提供很多的镜像 • 可以自由扩展和定制
• 当前最火的虚拟化方案
• 不会就难以与别的企业沟通
简介
为什么要用docker?
https://hub.docker.com/r/_/alpine/
简介
安装
系统支持:MacOS, Windows, CentOS, Debian, Fedora, RedHat, SUSE, Ubuntu… 系统版本:对目前各个系统的新版本支持较好,低版本系统不支持或兼容性较差,例如 windows只支持win10和winsever2016,建议安装系统之前在网上进行查阅。 Docker版本:安装较新的版本,低版本与高版本存在一些功能差异,低版本的稳定性较 差且不支持一些高级功能。 系统选择:centos7.3,后面以centos7.3为例进行讲解。
三个核心点
镜像 制作镜像
通常我们有两种方式来制作镜像 1. dockerfile 2. docker commit (慎用,黑箱操作,臃肿,不利于维护) 这里我们先了解通过dockerfile来制作镜像,因为第二种还需要先学会容器的相关知 识。
三个核心点
镜像-dockerfile
dockerfile是一个镜像构建脚本,通过一系列的命令来告诉docker构成一个什么样 的镜像,先来了解一些其中的命令。 FROM:指定基础镜像,可以指定dockerhub中高质量的官方镜像,也可以指定 一个空白镜像scratch RUN:执行命令 shell格式:RUN<命令>,就像直接在命令行中输入的命令一样。例如:RUN yum –y install redis exec格式:RUN[“可执行文件”,“参数1”,“参数2”] 例如:RUN [‘/usr/sbin/sshd’, ‘-D’] COPY:复制文件。例如:COPY /root/emis.jar /root/ 将构建上下文中 /root/emis.jar文件拷贝到镜像/root/目录下
-t 分Βιβλιοθήκη Baidu一个伪终端并绑定到容器的标准输入上
安装
三个核心点
• 镜像 • 容器 • 仓库
镜像和容器是重点,仓库可暂时只做了解。
三个核心点
镜像 • 类似于我们常用的iso系统镜像,在docker中也是通过镜像来产生容器(虚拟机) • 不同之处:分层存储
• 镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变, 后一层上的任何改变只发生在自己这一层。比如,删除前一层文件的操作,实际不是真 的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候, 虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。因此,在构建镜像的时候, 需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构 建结束前清理掉。
三个核心点
镜像
三个核心点
容器 • 镜像与容器的关系
• • 类似ISO文件与系统的关系 类似类与实例的关系
• 容器不同于传统意义上的虚拟机,并没有一个完整的操作系统 • 容器的实质是进程,拥有独立的运行环境,包括文件系统、网络配置、 进程空间、用户ID空间 • 是独立运行的一个或一组应用,以及它们的运行态环境。
宿主机 系统 1 系统 3
系统 2
系统 n 系统 4 系统 5
• 创建虚拟机需要哪些要素
• 宿主机 • 虚拟软件 • 操作系统镜像
wmware workstation
简介
传统虚拟机存在的问题? • 安装麻烦 • 启动速度慢 • 硬件资源耗费高
简介
什么是docker? • Docker是一款虚拟(容器)软件,类似于vmware。 • 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上 再运行所需应用进程。 • Docker直接运行于宿主的内核,在宿主的内核上驱动容器的bins和libs,容器内没 有自己的内核,而且也没有进行硬件虚拟,因此容器要比传统虚拟机更为轻便。
Hadoop SSH JAVA CentOS Emis JAVA CentOS
三个核心点
镜像 获取镜像:
docker 例如: docker pull postgres docker pull postgres:9.4 docker pull registry.hub.docker.com/postgres:9.4 pull [选项] [Docker Registry地址]<仓库名>:<标签>
安装
centos7.3 • sudo systemctl start docker (启动) • sudo systemctl stop docker (停止) • sudo systemctl enable docker(开机启动) • sudo systemctl disable docker(关闭开机启动) • sudo systemctl status docker(查看状态) • docker --version(查看docker版本)
三个核心点
镜像-dockerfile
ADD:更高级的复制 例如复制的文件是个压缩包,在复制的过程中会自动解压 缩,当然,除非你不需要解压缩(从语义清晰度来讲,建议使用COPY) CMD:容器启动命令 ,格式与RUN一样,但是目的是指定在容器启动的时候运 行的命令。例如: CMD [“nginx”, “-g”, “daemon off;”],此处应注意命 令不能以后台形式运行。 ENTRYPOINT:入口点,格式与RUN一样,目的和CMD一样,但是加入该命令 后CMD就变成参数,方便我们在运行的时候指定一些运行参数。 ENV:设置环境变量。例如: ENV JAVA_VERSION 1.7 \ JAVA_HOME /usr/java/jdk1.7 有了上述命令后,在后面语句里面就可以使用$JAVA_VERION,$JAVA_HOME 来替代,相当于程序中的定义的常量 注意:在同一条语句中,后面无法使用前面定义的变量,未生效?
安装
centos7.3 安装docker 1. 创建用户docker
2. 以docker用户登录或者登录后切换到docker用户
3. yum -y install docker(记得先配置好网络) 4. 安装完毕
安装
centos7.3 配置docker(迁移数据目录) 1. mkdir -p /home/docker/repo
2. mkdir -p /home/docker/data
3. mkdir -p /home/docker/tmp 4. sudo mv /var/lib/docker/* /home/docker/repo 5. sudo rm -rf /var/lib/docker 6. sudo ln -s /home/docker/repo /var/lib/docker 配置完毕
三个核心点
镜像 列出镜像:
docker images [OPTIONS] [REPOSITORY[:TAG]] 例如: docker images -a docker images -q
三个核心点
镜像 删除镜像
docker rmi [OPTIONS] IMAGE [IMAGE...] 例如: docker rmi postgres docker rmi 708517fe9e98 docker不允许删除一个正在使用的镜像,当然你可以通过添加-f,--force来强制删 除,不过这是不提倡的。
相关文档
最新文档