• Docker-小D课堂


    什么是docker?

    1个系统包含多个服务,则需要多个服务器进行部署,后来有了vm虚拟机,则可以节省物理服务器;docker是在虚拟机上的又一个演进;在一台强大的物理机上实现部署多个服务;类似于虚拟机但比虚拟机更好;

    把所有的服务包括已经它的依赖redis mq等等一套完整的资源打包成一个镜像,可以快速的拷贝;

    容器使用沙箱机制,相互之间完全隔离;

    开箱即用 快速部署 可移植性强 环境隔离

    windows10专业版以及上下安装docker

    Linux Centos7上安装docker

    内核版本需要在3.8以上;

    下载docker的yum源,安装即可;

    Docker镜像的搜索下载以及查看删除

    镜像类似于vm中的.ios镜像;

    查看本地镜像:docker images

    查看社区中的官方镜像:docker search --filter "is-official=ture" centos

    下载os7的镜像:docker pull centos:7 如果没有配置阿里云镜像加速,从国外下载,会非常慢

    删除镜像:docker rmi 镜像名称

    Docker核心技术之配置阿里云镜像加速

    登陆阿里云-容器镜像服务-镜像加速器-按照提供的方法进行配置即可;

    Docker的体系结构之镜像与容器

    容器类似于虚拟机中的2个操作系统,可以理解为是2个容器;这2个操作系统是基于一个镜像创建的;

    相互独立,互不影响;

    Docker核心基础之容器的构建等基本操作

    启动容器:docker run -itd 镜像ID 

    docker ps 显示当前正在运行的容器

    docker ps -a 显示当前所有的容器

    停止容器:docker stop 容器ID

    删除容器:docker rm 容器ID   删除前要先停止容器

    查看容器的详细信息:docker inspect 容器ID 容器的状态/创建时间/基于哪个镜像等等信息

    进入容器:docker exec -it 容器id /bin/bash  (进入到了这个容器,初始时,相当于一个新的linux环境)

    启动多个容器,全部停止:docker stop $(docker ps -a -q)

    退出容器:exit  (退出后,容器仍然是运行着的)

    Docker核心基础之容器的文件复制与挂载

    复制文件:docker cp /root/123.txt 容器id:/home/

    创建一个容器并挂载:docker run -itd -v /root/xdclass/:/home 镜像ID (-v就是挂载 )挂载和复制的区别是,挂载后宿主机和容器中的内容会同步;

    挂载的应用场景:容器中运行着一台mysql数据库服务器,一般会在宿主机中挂载一个路径给容器中的数据库运行,某一天,当前容器出现问题时,可以把这个容器删除,新建一个容器,再把宿主机中的数据库挂载进去,那么数据不会丢失;

    构建自定义镜像的意义与应用场景

    下载一个centos镜像,就相当于时一个linux环境,初始时是什么都没有的,我们会在基础镜像中安装jdk tomcat等,创建容器后,一旦把这个容器删除,之前安装配置的内容就都没有了;即使通过这个镜像再启动一个容器也是没有的;所以,把这个容器打包成一个镜像,再基于这个镜像启动容器,就可以解决这个问题了;

    可以把这个镜像上传到镜像仓库中,其他的服务器用的时候直接拉取来用就可以了;节省重新搭建的时间;

    构建镜像有2种方法:

    基于docker commit;

    基于dockerfile制作镜像;(主流)

    Commit构建自定义镜像

    docker commit 容器id 容器名:容器标签 这样就把这个容器构建成了一个镜像;

    之后再通过这个镜像启动新的容器,在之前的容器中配置的内容都还在;

    Dockerfile构建镜像实战

    vi dockerfile

    写入 dockerfile 命令 

    保存

    docker build -t 容器名:容器标签   ---运行 dockerfile 并创建镜像

    我的理解:dockerfile 的作用不仅仅是构建一个新的镜像,它还可以包含指令,对基础镜像进行配置修改等,构建出新镜像后,启动容器,则没有改变基础镜像;并且可以通过commit命令,把这个容器再构建成一个镜像;

    Docker核心知识之镜像分层结构剖析 

     从下往上,依次是一层一层的叠加;

    missing表示这一层不是在本机构建的;

     当查找某一文件时,进入镜像层从上往下,一层一层的查找,找到后,复制到容器层,可以进行编辑;但始终不会改变原始的镜像层的内容,也即镜像;

    优点:

    共享资源;

    对容器的任何改动,都是放生在容器层;

    容器层是可写可读的,镜像是只读的;

    Dockerfile基础指令

     

     #号:注释

    FROM :基于哪个镜像

    MAINTAINER:作者信息

    COPY:复制文件到容器

    ADD:复制文件同时解压

    WORKDIR:设置工作路径,如果没有会创建

    ENV:设置环境变量

    EXPOSE:设置暴露哪个端口给宿主机

    RUN:执行后面的命令,作用与镜像层,镜像构建时就执行;dockerfile中有多条时,都会执行;

    ENTRYPOINT:执行后面的命令,作用于容器层,容器启动时执行;dockerfile中有多条时,只会执行最后一条;

    CMD:执行后面的命令,作用于容器层,容器启动时执行;dockerfile中有多条时,只会执行最后一条;允许被修改;

    Dockerfile 构建JAVA网站镜像

    先在宿主机上配置好 jdk 和 启动 tomcat;

    在宿主机中的安装步骤:

    上传 jdk 压缩包,解压,配置环境变量;通过 java -version 检测;

    在宿主机中的安装步骤:

    上传 tomcat 压缩包,解压,启动 tomcat;通过 localhost 访问验证是否安装成功;

     

     

     

     

     

     把容器的 8080 端口,映射到宿主机的 80 端口;启动后,在宿主机上访问 https://localhos:80 则可以正常访问 tomcat;

     挂载;把本地目录挂载给容器,之后就在宿主机上进行部署就可以了;

    Dockerfile 构建 nginx 镜像

    在宿主机中的安装步骤:

    上传 nginx 压缩包,解压,通过shell命令下载依赖包,安装,进入 nginx 文件夹,启动 nginx;通过 localhost 访问 nginx 验证是否安装成功;

    如果直接通过 dockerfile 安装步骤会比较多,会比较慢,那么我们先准备好一个安装 nginx 的 shell 脚本:

     dockerfile:

    注意 shell 脚本和 dockerfile 在同一目录下;

     启动容器中的 nginx ,注意,与tomcat一样,也要以前台的方式启动:

    Dockerfile 构建 redis 镜像

     redis默认就是前台启动;

     

    启动容器:

     

     进入容器:

     有 redis 的进程,默认端口是 6379:

    进入 redis 客户端,进行一下验证,没有问题:

     若宿主机想访问容器中的 redis ,怎么办?当前 redis 的端口是没有暴露的:

    重新启动一个 redis 容器,把他的端口映射出来:

     

     

     

     

     重启容器:

     用宿主机连接容器内的 redis:

     

     

     找到 ip 地址:

     

     

     

     

    Dockerfile 快速部署 mysql 数据库并初始

     下载 mysql:

     拉取成功:

     

     

     登录,连接 mysql 数据库:

     

     镜像默认是无法输入中文的;

     进入容器时,指定字符编码为 UTF-8:

     重新创建一个 dockerfile: init.sql 里面就是建库、建表、插入数据的 sql 语句;ADD 与 COPY 的区别,ADD 后会自动执行语句;

    镜像创建好后,启动容器:

     连接登录数据库:

    查看数据插入成功;

     

    ——————————————————————————————————————————————————————————————————————

    第四章

     pass

    第五章

    pass

    compose-批量操作容器的工具;

     公司中Docker镜像仓库使用

     

    保存镜像:

  • 相关阅读:
    p1373【奶牛的卧室】
    p1248【交错匹配】(DP)
    QBXT模拟赛T3
    NOIP冲刺班的考试总结
    欧拉回路的一些东西
    一道dp题目
    Blocks
    玩具取名
    Y的积木
    游荡的奶牛
  • 原文地址:https://www.cnblogs.com/lp475177107/p/14519834.html
Copyright © 2020-2023  润新知