docker-py的配置與使用


測試環境

75機:Red Hat Enterprise Linux Server 7.0,無外網訪問權限

73機:Red Hat Enterprise Linux Server 7.0,無外網訪問權限,已安裝Docker Server

183機:OS X Yosemite 10.10.4,完全外網訪問,用於下載安裝包

配置過程

1. 如果開發環境可聯網,則直接通過如下命令進行安裝即可:

sudo pip install docker-py

如果沒有安裝pip命令,可通過如下命令進行安裝:

sudo easy_install pip

2. 如果不能連外網,則需要從github的docker-py頁面中下載zip包docker-py-master.zip進行離線安裝。下載完之后,將zip包從183機scp到75機中:

scp docker-py-master.zip scs@10.11.150.75:/opt/scs/openxxs/

在75機上解壓:

unzip docker-py-master.zip

查看setup.py文件,發現有三個依賴包需要安裝,且有版本要求:

requirements = [
    'requests >= 2.5.2',
    'six >= 1.3.0',
    'websocket-client >= 0.32.0',
]

可從如下網站下載 requests、six和websocket-client 三個安裝包(如果不知道具體url,運行sudo python setup.py install時會有提示):

requests: https://pypi.python.org/simple/requests/
six: https://pypi.python.org/simple/six/
websocket-client: https://pypi.python.org/simple/websocket-client/

下載完成后scp到75機上再使用 tar -zxvf 解壓,依照如下順序安裝:

cd requests-2.7.0
sudo python setup.py install
cd ../six-1.9.0
sudo python setup.py install
cd ../websocket_client-0.32.0
sudo python setup.py install
cd ../docker-py-master
sudo python setup.py install

3. 在73機上用同樣方式安裝docker-py

4. 以Unix Socket方式在73機上啟動docker server:

[@tc_150_73 ~]$ sudo docker -d &
[1] 1255
[@tc_150_73 ~]$ INFO[0000] Listening for HTTP on unix (/var/run/docker.sock) 
INFO[0000] [graphdriver] using prior storage driver "devicemapper" 
WARN[0000] Running modprobe bridge nf_nat failed with message: , error: exit status 1 
INFO[0000] Loading containers: start.                   
..
INFO[0000] Loading containers: done.                    
INFO[0000] Daemon has completed initialization          
INFO[0000] Docker daemon                                 commit=0baf609 execdriver=native-0.2 graphdriver=devicemapper version=1.7.0

在73機上開啟若干個docker容器后進行測試,測試如下:

[@tc_150_73 ~]$ python
Python 2.7.5 (default, Apr  9 2015, 11:03:32) 
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from docker import Client
>>> clt = Client(base_url='unix://var/run/docker.sock')
>>> clt.containers()
[{u'Status': u'Up About a minute', u'Created': 1437743168, u'Image': u'centos:7', u'Labels': {}, u'Ports': [], u'Command': u'/bin/bash', u'Names': [u'/suspicious_galileo'], u'Id': u'a81dbf9200fbf6a4180e8b8e80f4fe30b3f8be612ea0e58ac04fb65080429043'}]
>>> 

可以看到正常顯示了正在運行中的容器,Unix Socket方式測試成功。

5. 關閉73機上剛才開啟的docker server(使用service docker stop 和 systemctl docker stop方式停止無效):

sudo killall docker

6. 以TCP方式在73機上啟動docker server:

[@tc_150_73 ~]$ sudo docker -H 0.0.0.0:2375 -d &
[1] 1625
[@tc_150_73 ~]$ WARN[0000] /!\ DON'T BIND ON ANY IP ADDRESS WITHOUT setting -tlsverify IF YOU DON'T KNOW WHAT YOU'RE DOING /!\ 
INFO[0000] Listening for HTTP on tcp (0.0.0.0:2375)     
INFO[0000] [graphdriver] using prior storage driver "devicemapper" 
WARN[0000] Running modprobe bridge nf_nat failed with message: , error: exit status 1 
INFO[0000] Loading containers: start.                   
....
INFO[0000] Loading containers: done.                    
INFO[0000] Daemon has completed initialization          
INFO[0000] Docker daemon                                 commit=0baf609 execdriver=native-0.2 graphdriver=devicemapper version=1.7.0

在75機上進行測試,測試結果如下:

[@tc_150_75 ~]$ python
Python 2.7.5 (default, Apr  9 2015, 11:03:32) 
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from docker import Client
>>> clt = Client(base_url='tcp://10.11.150.73:30001')
>>> clt.containers()
[]

TCP方式測試成功(此時顯示的是73機上的正在運行的容器狀態,沒有,所以為空)。

相關安裝包百度雲備份

http://pan.baidu.com/s/1sjmi8OH


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM