Docker 学习笔记

Docker 是用来干什么的

环境一致化, 避免在工作中开发是Win环境,交付给运维那边,运维在Linux或Ubuntu等环境部署由于环境不一致原因导致的部署失败等问题
Docker是基于GO语言实现的云开源项目

Docker镜像、容器、仓库概念

  1. Docker镜像
     Docker镜像(Image)类似于虚拟机的镜像,可以将他理解为一个面向Docker引擎的只读模板,包含了文件系统。
     例如:一个镜像可以完全包含了Ubuntu操作系统环境,可以把它称作一个Ubuntu镜像。镜像也可以安装了Apache应用程序(或其他软件),可以把它称为一个Apache镜像。
     镜像是创建Docker容器的基础,通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像。用户可以从网上下载一个已经做好的应用镜像,并通过命令直接使用。总之,应用运行是需要环境的,而镜像就是来提供这种环境。
  2. Docker容器
     Docker容器(Container)类似于一个轻量级的沙箱子(因为Docker是基于Linux内核的虚拟技术,所以消耗资源十分少),Docker利用容器来运行和隔离应用。
     容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的。
     可以吧每个容器看作一个简易版的Linux系统环境(包括了root用户权限、进程空间、用户空间和网络空间),以及与运行在其中的应用程序打包而成的应用盒子。
     镜像自身是只读的。容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身将保持不变。就像用ISO装系统之后,ISO并没有什么变化一样。
  3. Docker仓库
     Docker仓库(Repository)类似与代码仓库,是Docker集中存放镜像文件的场所。
     有时候会看到有资料将Docker仓库和注册服务器(Registry)混为一谈,并不严格区分。实际上,注册服务器是存放仓库的地方,其上往往存放着多个仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。例如存放Ubuntu操作系统镜像的仓库,称为Ubuntu仓库,其中可能包括14.04,12.04等不同版本的镜像。
     根据存储的镜像公开分享与否,Docker仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
     目前,最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括Docker Pool等,可以提供稳定的国内访问。如果用户不希望公开分享自己的镜像文件,Docker也支持用户在本地网络内创建一个只能自己访问的私有仓库。
     当用户创建了自己的镜像之后就可以使用push将它上传到指定的公有或则私有仓库。这样用户下次在另一台机器上使用该镜像时,只需将其从仓库pull下来就可以了。

    虚拟机和 Docker的区别

     虚拟机是模拟一整套操作系统,内存、硬盘、甚至于打印机等一整套完整的系统,启动虚拟机是按分钟级别的,要两三分钟才能启动,并且内存瞬间上升
     Docker不是模拟一整个操作系统,而是对进程进行隔离,有了容器,就可以将软件运行所需的所有资源打包到隔离的一个容器资源中,系统因此而变得高效轻量,可以保证部署在任何环境中的软件都能始终如一的运行

    docker 命令

    //docker 进入容器
     先 docker ps 查看当前正在运行的容器
     docker exec -it {{CONTAINER ID}} /bin/bash
    //退出容器
     control + d
    //docker 停止容器
     docker stop {{CONTAINER ID}}
    //docker 搜索镜像
     docker search {{名字}}{{IMAGE ID}}
    //docker 删除镜像
     先 docker images 查看已有镜像
     docker rmi {{REPOSITORY}}
    //docker运行sh命令
     docker exec -it lnmp_php sh -c "php /www/user_server/artisan cache:clear"
    //查看当前未运行的容器
     docker ps -l
    //查看所有操作过的容器
     docker ps -a
    //查看当前运行的容器
     docker ps
    //查看容器信息
     docker inspect {{CONTAINER ID}}
    //实时查看容器日志
     docker logs -f -t {{CONTAINER ID}}

    docker 杂碎记录

    1、在容器中 `host.docker.internal` 就是宿主机的ip,用该域名则可在容器中访问宿主机 IP 和端口(参考链接:`https://www.cnblogs.com/m-finder/p/11592716.html`2、使用 docker-compose 在 Docker 中启动带密码的 Redis
     `https://cloud.tencent.com/developer/article/1352195`
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!