Docker 網路連線

CentOS7 下安裝 docker

1
$sudo yum install docker
1
$sudo service docker start
1
$sudo chkconfig docker on

安裝完成後,執行以下指令

1
$docker run -it --name jeff -p 9080:9080 -v /home/jeff/code/:/home/code centos /bin/bash

-v /home/jeff/code/:/home/code 掛載Host主機下目錄

一些問題

  • 當進入container掛載目錄後,執行ls發生錯誤

    [root@a52a9c808ba5 code]# ls: cannot open directory .: Permission denied

    解法:
    在Host掛載目錄下執行

    1
    $chcon -Rt svirt_sandbox_file_t ./code/
  • 容器要想存取外部網路,需要host支援forward

    1
    2
    $sysctl net.ipv4.ip_forward
    net.ipv4.ip_forward = 1

    如果為 0,說明沒有開啟轉發,則需要手動打開。

    1
    $sysctl -w net.ipv4.ip_forward=1
    1
    $service docker restart
  • 進入container後ping外部ip確認是否成功連線

    1
    2
    3
    [root@a52a9c808ba5 /]# ping 10.62.8.175
    PING 10.62.8.175 (10.62.8.175) 56(84) bytes of data.
    64 bytes from 10.62.8.175: icmp_seq=7 ttl=127 time=1.01 ms

參考:

[1] https://github.com/philipz/docker_practice

[2] http://blog.scottlowe.org/2013/09/04/introducing-linux-network-namespaces/

[3] http://www.infoq.com/cn/articles/docker-network-and-pipework-open-source-explanation-practice#rd