第一次了解到Docker已经很晚了,还是在M$的Build 2015上听到了这个名字,那个鲸鱼的logo给了我很深刻的印象。时隔一年,在Build 2016前研究一下这个不算新的技术。

docker logo

Docker 闲聊

  • 什么是Docker ?

​粗略阅读了官网的教程后,简单的说,你可以打包任何应用和它所依赖的相关环境,形成一个标准的单元供软件开发来使用。

  • Docker能用来做什么 ?

最初,我认为Docker是个离自己很遥远的东西,感觉和生产环境更为接近,于我无用。不过现在,让我用docker和VirtualMachine做个对比的话,docker更为“便携”

我相信在日常的开发过程中,docker能提供非常大的效率提升。它提供了基础系统镜像,你可以在容器中运行任何一个Linux上的应用,比如Database、Node.js、GameServer等等。而且,有方便的ssh支持!

  • 我正在用Docker做什么
    • 作为一个纯净的展示环境:快速检查开发依赖
    • 学习一些奇怪的Linux Shell:比如很多人踩过的坑,被骗输入rm -rf
    • 跑一些危险的程序:鉴于docker的容器隔离性,不用担心本机被玩坏了

正式安装Docker

你可能需要一个梯子,因为国内的网络非常不稳定

比如开启shadowsocks,输入extern https_proxy=”domain:port”来使用全局的代理 (注意不要设置http_proxy,会影响ssh的通信)安装完毕后请自行unset https_proxy

  1. 登陆Ubuntu的桌面系统,安装过程中需要Sudo权限

  2. 检查curl的安装情况

    1
    $ which curl

    如果没有安装

    1
    2
    $ sudo apt-get update
    $ sudo apt-get install curl
  3. 获取安装最新版的Docker

    1
    $ curl -fsSL https://get.docker.com/ | sh
  4. 获取安装最新版的Docker

    如果使用了proxy,就会出现我开头所说的问题,所以不要设置http_proxy,同时还可以使用以下方法直接添加key

    1
    $ curl -fsSL https://get.docker.com/gpg | sudo apt-key add -
  5. 确认Docker的正确安装

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $ docker run hello-world
    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    535020c3e8ad: Pull complete
    af340544ed62: Pull complete
    Digest: sha256:a68868bfe696c00866942e8f5ca39e3e31b79c1e50feaee4ce5e28df2f051d5c
    Status: Downloaded newer image for hello-world:latest

    Hello from Docker.
    This message shows that your installation appears to be working correctly.

    To generate this message, Docker took the following steps:
    1. The Docker Engine CLI client contacted the Docker Engine daemon.
    2. The Docker Engine daemon pulled the "hello-world" image from the Docker Hub.
    3. The Docker Engine daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
    4. The Docker Engine daemon streamed that output to the Docker Engine CLI client, which sent it
    to your terminal.

    另外,可以输入以下的脚本来运行一个ubuntu container

    1
    $ docker run -it ubuntu bash

Docker常用命令