2014-02-28 70 views
4

Koding是一個協作編程環境,它爲多個用戶創建一個虛擬機,以協作開發軟件。他們使用Linux容器來虛擬化機器。我無法安裝docker:docker可以在Linux容器內運行嗎?

[email protected]:~$ sudo docker build -t mongo .  
[sudo] password for tiagoboldt:   
Uploading context 645.1 kB 
Uploading context 
Step 0 : FROM ubuntu:latest                                              
Pulling repository ubuntu                                               
9cd978db300e: Error pulling image (latest) from ubuntu, endpoint: https://cdn-registry-1.docker.io/v1/, Driver aufs failed to get image rootfs 6170bb7b0ad1003a827e4dc5253ba49f6719599eac485db51eaafd507c13c311: 
9cd978db300e: Error pulling image (latest) from ubuntu, Driver aufs failed to get image rootfs 6170bb7b0ad1003a827e4dc5253ba49f6719599eac485db51eaafd507c13c311: permission denied        
6170bb7b0ad1: Error downloading dependent layers                                         

2014/02/28 03:32:55 build: pull: Could not find repository on any of the indexed registries. 

任何人都可以提出安裝docker的解決方法嗎?

回答

3

是的,這是可能的。但是,您不能在aufs中嵌套aufs分區。您需要安裝其他系統或使用不同的存儲後端。

你可以看看碼頭的makefile和hack/dind。您需要特權模式才能這樣做。

試試最簡單的方法是做make shell,一旦在容器內,你就可以開始一個新的泊塢窗守護:)

編輯:我試過Koding,它確實是不可能的。你在他們的容器內沒有特權,所以你不能開始一個新的碼頭工人。

5

這裏是對同一條船上的其他人的完整指南。

啓動終端並開始鍵入..

docker run -i -t --privileged -v /var/lib/docker ubuntu bash 
apt-get update && apt-get install -y docker.io 
service docker.io start 
ln -s /usr/bin/docker.io /usr/local/bin/docker 
docker run -i -t ubuntu bash 

現在你應該是其他容器內的容器內。

備註:

  1. 標誌--privileged需要在外容器上,以實現這一目標。
  2. 您必須使用-v /var/lib/docker來避免creack提到的限制。
  3. ln -s /usr/bin/docker.io /usr/local/bin/docker只是創建符號鏈接,這樣我們就可以鍵入docker代替docker.io
+2

我認爲原始海報詢問在LXC中運行Docker而不是docker中的docker。 – dtoux

+0

在我的情況下,服務名稱是'docker'而不是'docker.io' – mahdix

9

是,碼頭工人可以在Linux容器中運行。

但碼頭只能運行lxc執行驅動程序和無限制 lxc。

所以,這裏是如何在LXC得到泊塢窗:

  1. 確保您有lxc.aa_profile = lxc-container-default-with-nesting(如果沒有的你的工作不具備此配置文件,嘗試lxc.aa_profile = unconfined)在config文件的您LXC以確保它不會被apparmor阻止。有關更多信息,請訪問(或修改)/etc/apparmor.d/lxc中的文件。

  2. 您需要在容器中安裝lxc。例如,如果你在Ubuntu下,運行在容器apt-get install lxc

  3. 確保使用--exec-driver=lxc參數調用docker守護程序。您可以通過發佈手冊docker -d --exec-driver=lxc進行測試。在Ubuntu中,有在啓動時使用的參數,只需編輯/etc/default/docker,並確保你有行: DOCKER_OPTS="--exec-driver"

按照這個線程更新:https://github.com/docker/docker/issues/6783

如果您需要解決:

  • 請關注apparmor登錄主機的登錄日誌。
  • 啓動docker -d ...手動獲取輸出。

注意:如果您是LXC提供者,您可能無法通過判斷其他人的答案來修改Koding上的LXC apparmor腳本,並且它回答了更一般的問題你已經在問題的標題中提出了問題,並且可能會在更普遍的情況下吸引人們(就像我一樣)。

1

您可以在Terminal.com中執行此操作。

只需啓動一個終端,然後運行:https://blog.terminal.com/docker-without-containers-pulldocker/

注意:我在Terminal.com工作。我們使用容器技術的非LXC,非lib容器實現(例如,它沒有AUFS的限制)。我們試圖讓容器像完整的Linux機器一樣運行,我想我們就在那裏。試試看。

相關問題