zoukankan      html  css  js  c++  java
  • docker

     之前一直试错最根本原因是,from这个参数,没有理解它的内部逻辑,如果是需要用到一个完整的项目,有redis,有mysql,有mongodb等等这些,都是需要像在服务器部署环境一样,在dockerfile文件中通过命令一一去实现的,那么,基础镜像就应该是centos或者是Ubuntu这样的打底镜像,然后再装python,以及后面这些软件,都是通过dockerfile文件来实现,路径也是一样,这样才能理通整个逻辑,所以,下面提到的cmd参数是一方面原因,还有from这个打底镜像也是一方面原因。从这两个方面入手就能解决问题了。另外Google上搜到那些博客上写的示例都是最简单的单个文件应用的配置方法,在starkoverflow上面有比较复杂的dockerfile配置。

    https://yeasy.gitbooks.io/docker_practice/image/dockerfile/cmd.html

    docker的add和copy命令区别在这里,还有就是如果要执行shell脚本文件,centos和Ubuntu是不一样的,Ubuntu执行cmd的时候内置是执行了/bin/bash,而这就是shell文件内置的地址路径,

    但是centos不一定是这个结构,还有就是我之前试的都是python作为基础镜像,所以这里都是差异的根源,果然还是不能钻牛角尖,不然的话,这些问题都会被情绪所忽视掉。

    docker挂载本地项目地址到docker服务上的命令如下

    docker run -d -p 80:5000 -v Users/nolan/Documents/my-app:/opt/my-app --name my-app



    -d是后台运行
    
    -v就是--volunm 
    
    Users/nolan/Documents/my-app是服务器项目地址
    /opt/my-app是dockerfile文件生成的docker虚拟地址
    
    --name是给容器命名,如果不用这个参数命名,那么容器就会自动生成一个uuid作为容器名。
    
    
    
    
    个人理解:(docker下载安装就不多赘述了,网上大把方法,基本上没什么错误,推荐菜鸟教程)
    docker本身就是一个微型的虚拟机,有一个打底的镜像(例如centos),然后在这个打底镜像上用打底镜像的内置命令(例如yum)来下载安装一些软件,比如python/java环境,或者是mysql/mongodb/gunicorn/nginx
    等等,然后根据他们彼此的联系,参考服务器配置,把他们彼此的关系绑定好,所有这些都是在服务器上指定项目根目录下建立的一个dockerfile文件,都是依赖于这个文件,把这个文件里面的配置参数写好之后就可以用docker
    的命令来运行你写好的服务。当你执行一个docker run的命令的时候就是开启了一个容器,容器跟镜像是绑定关系。
    这里有官网quick start方法流程
    这样虽然是启动了,但是仅仅是一个进程的方式,这个进程还占用了一个窗口,如果这个窗口被ctrl + C,那么这个服务就中断了,很显然这太初级了,而且很不方便,这个时候重点就来了。我们的很多插件都是启动的时候
    仅仅作为一个进程,关闭窗口就杀掉了进程,所以就会把进程放到一个服务里面,在后台运行,例如mongodb或者是mysql之类的,docker也有这个考虑。它更高级一些,它有自己的仓库,就是类似于GitHub的仓库,
    这个仓库用于存储我们生成的镜像,把镜像存储到这个仓库里面之后,我们再来编写docker-compose.yml文件,它作为docker服务的启动基础,把对应的参数都配置到里面即可启动服务。
    这里有官网quick start生成服务流程

    官网给出的示例很明晰,如果是刚刚开始接触的话就按照这个简单的示例开始测试即可走通这整个流程。这里就不再另外copy了。
    但是到真正使用中还是需要填很多坑的,具体的各个插件之间如何绑定,以及两个配置文件中分别各自的参数是如何匹配的,这些都是需要自己去试错的,目前还在填坑中,后续会把在官网基础上更加复杂的示例贴到这里,
    供日后参考。

    目前在写的小demo是flask+mongodb+gunicorn+nginx,把这些都放到docker里面,才能最终跑通。





  • 相关阅读:
    C#与数据库访问技术总结(十一)之数据阅读器(DataReader)1
    C#与数据库访问技术总结(十)之添加&删除
    C#与数据库访问技术总结(九)之实例
    C#与数据库访问技术总结(八)之ExecuteNonQuery方法
    C#与数据库访问技术总结(六)之Command对象创建SQl语句代码示例
    C#与数据库访问技术总结(七)综合示例
    C#与数据库访问技术总结(五)之Command对象的常用方法
    OS——进程简答题(1)
    LAMP/LNMP 一键安装脚本
    运维如何延续自己的职业生涯--萧田国2017年GOPS深圳站演讲内容
  • 原文地址:https://www.cnblogs.com/2012-dream/p/10738892.html
Copyright © 2011-2022 走看看