美文网首页程序员
Docker & DaoCloud 实践

Docker & DaoCloud 实践

作者: 77即是正义 | 来源:发表于2017-03-28 17:45 被阅读208次

背景

因为需要使用一个在32bit debian系统中的一个c库作为webserver的一个子进程,但是现在32位操作系统的服务器太少了。所以这次选择使用docker封装应用栈来完成功能。

实验

Ubuntu安装Docker

Docker目前只能安装在64位CPU架构的计算机上,同时需要Linux内核为3.10及以上的版本

  • 检查Linux系统内核

    $ uname -r
    
    4.8.0-22-generic
    
  • 更新系统源

    $ sudo apt-get update
    
  • 更新Https和CA证书

    $ sudo apt-get install apt-transport-https ca-certificates
    
  • 添加新的GPG Key

    $ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
    
  • 添加Docker源

    $ echo "deb https://apt.dockerproject.org/repo ### main" | sudo tee /etc/apt/sources.list.d/docker.list
    

    这边可以根据Ubuntu版本修改Docker的源,在###处添加即可。该源文件在/etc/apt/sources.list.d/docker.list

    • Ubuntu Xenial 16.04: ubuntu-xenial
    • Ubuntu Wily 15.10: ubuntu-wily
    • Ubuntu Trusty 14.04: ubuntu-trusty
    • Ubuntu Precise 12.04: ubuntu-precise
  • 更新系统源

    $ sudo apt-get update
    
  • 校验APT是否正在拉取争取的源。

    $ apt-cache policy docker-engine
    
    docker-engine:
    Installed: 1.12.2-0~trusty
    Candidate: 1.12.2-0~trusty
    Version table:
    *** 1.12.2-0~trusty 0
    500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
    100 /var/lib/dpkg/status
    1.12.1-0~trusty 0
    500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
    1.12.0-0~trusty 0
    500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
    1.11.2-0~trusty 0
    500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
    1.11.1-0~trusty 0
    500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
    
  • 安装linux-image-extra-*包

    $ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
    
  • 更新系统源

    $ sudo apt-get update
    
  • 安装Docker

    $ sudo apt-get install docker-engine
    
  • 启动Docker Daemon

    $ sudo service docker start
    
  • 校验Docker是否安装正确。

    $ sudo docker run hello-world
    

修改国内源

目前因为墙的原因,使用国外的源速度还是很慢的,而且经常断线。所以最好换成国内的源,国内的有daoCloud、阿里等,我现在使用daoCloud

  • 修改配置文件

    $ vim /etc/default/docker
    
    DOCKER_OPTS="--registry-mirror=http://aad0405c.m.daocloud.io"
    
  • 重启docker服务

    $ service docker restart
    

配置节点

  • 首先我需要一个32bit debian系统

    $ docker pull 32bit/debian
    
  • 然后通过这个镜像创建容器并且配置容器

    // 以交互模式通过镜像启动容器,并打开容器的/bin/bash
    $ docker run -it 32bit/debian /bin/bash
    
  • 进去之后肯定先修改一下debian的源

    $ vi /etc/apt/sources.list
    
    deb http://mirrors.163.com/debian jessie main non-free contrib 
    deb http://mirrors.163.com/debian jessie-proposed-updates main contrib non-free 
    deb http://mirrors.163.com/debian-security jessie/updates main contrib non-free 
    deb http://security.debian.org jessie/updates main contrib non-free
    
    $ apt-get update
    
  • 使用wget把我需要的c库先拉下来

  • 然后发现镜像里是不自带make、g++环境以及一些编译环境flex、yacc的,先安装一下

    $ apt-get install make g++ byacc flex
    
  • 安装好了之后,编译是没有问题的,那么库的环境就配好了,再配一下webserver的环境就行了,这里不赘述。因为目前我没有更好的办法把webserver与c库解耦到两个容器当中,所以暂时把他们放在一个容器中,对外开发webserver的端口。

  • 一切就绪以后,我就需要把现在这个容器再打包成一个镜像并将它发布,迁移至服务器上。

打包发布镜像

  • 在该容器当中一切都配置好以后,先exit退出容器,然后将容器制作成新的镜像。

    // 查看所有的容器
    $ docker ps -a
    // 找到自己需要打包的容器的id
    $ docker commit <your-repertory-id> <your-image-name>
    
  • 然后这边我是通过daocloud进行发布

    // 先使用daocloud账户登录
    $ docker login daocloud.io
    Username:
    Password:
    // 先对镜像打一个标记
    $ docker tag <your-image> daocloud.io/<your-repertory>/<your-image>:<tag>
    // 再将镜像推送到远端的仓库
    $ docker push daocloud.io/<your-repertory>/<your-image>:<tag>
    

相关文章

网友评论

    本文标题:Docker & DaoCloud 实践

    本文链接:https://www.haomeiwen.com/subject/dkxsottx.html