簡體   English   中英

在 ubuntu live disk 中運行 docker

[英]Run docker in ubuntu live disk

我想知道是否可以在Ubuntu 14.04 USB Live-Disk 中安裝和運行 Docker。

我正在嘗試使用8GB USB、4 GB 用於安裝和4 GB 用於持久存儲,但是在運行容器時我不斷收到錯誤(拉它們沒有問題)。

這是我的 Docker 版本:

$ sudo docker version
Client version: 1.6.2
Client API version: 1.18
Go version (client): go1.4.2
Git commit (client): 7c8fca2
OS/Arch (client): linux/amd64
Server version: 1.6.2
Server API version: 1.18
Go version (server): go1.4.2
Git commit (server): 7c8fca2
OS/Arch (server): linux/amd64

我在運行 docker 容器時遇到的當前錯誤是:

[8] System error: mountpoint for cpu not found 

OBS:有時錯誤是沒有找到cpuset設備

我正在使用的實時磁盤的內核是:

$ uname -r
3.13.0-32-generic

如果 Ubuntu 實時磁盤不是運行 Docker 的最佳實時磁盤,是否還有其他具有一些 GUI 的替代方案,而不僅僅是運行 docker 的簡單終端?

我這么說是因為我想把 Docker 介紹給我的父母,但他們不想在他們的電腦上安裝 linux,所以我需要一些簡單的圖形界面來寫下 Dockerfile,打開瀏覽器等...


更新

我看到在安裝過程中,在設置 cgroup-lite 依賴項initctl: Unknown job: cgroup-lite 我還讀到一些 ubuntu 需要安裝apparmor以便 docker 安裝正常工作。

所以我安裝了它並重新安裝了 docker(當時安裝了 cgroup-lite 沒有問題),現在我在運行sudo docker -d時得到了這個

INFO[0000] +job serveapi(unix:///var/run/docker.sock)   
INFO[0000] Listening for HTTP on unix (/var/run/docker.sock) 
INFO[0000] +job init_networkdriver()                    
INFO[0000] -job init_networkdriver() = OK (0)           
WARN[0004] Your kernel does not support cgroup swap limit. 
INFO[0004] Loading containers: start.                   
......
INFO[0004] Loading containers: done.                    
INFO[0004] docker daemon: 1.6.2 7c8fca2; execdriver: native-0.2; graphdriver: aufs 
INFO[0004] +job acceptconnections()                     
INFO[0004] -job acceptconnections() = OK (0)            
INFO[0004] Daemon has completed initialization 

當我嘗試運行一個容器時,我收到>

ERRO[0125] HTTP Error: statusCode=500 Cannot start container 90875e79dec37cec41a67aac235b81f0fc17c4e011cd6e5368a4b29336587f5b: 
[8] System error: permission denied

不確定內核不支持 cgroup,但如果是這樣,那么是否可以更新 livedisk 中的內核(保留它?)?

我設法通過將 Docker 存儲更改為devicemapper而不是AUFS來完成這項工作。

如果您的系統不使用 Systemd

您只需要更改/etc/default/docker即可在其中包含此內容:

DOCKER_OPTS="--storage-driver=devicemapper"

如果您的系統使用 Systemd

請參閱此答案並在--storage-driver=devicemapper start 命令的末尾添加--storage-driver=devicemapper

我已經設法使容器運行正常,但我更喜歡使用 AUFS。

我意識到默認情況下分區沒有使用 aufs,而是像cawcow類的東西(現在不記得了)。

我還嘗試使用 AUFS 在 grub 中使用union=aufs標志使其工作,但是在運行 docker 守護程序時,我得到一個FATA[0000] Shutting down daemon due to errors: error intializing graphdriver: backing file system is unsupported for this graph driver ,看起來與https://github.com/docker/docker/issues/7321有關

我將在這里留下我的答案,因為它是解決這個問題的一種方法,但如果有人設法使用 AUFS 使這項工作成功,在我看來,這將是一個更好的答案。

您想告訴 Docker 守護程序將與您的容器相關的數據存儲在持久存儲上。

默認情況下,docker 守護進程將這些數據放入/var/lib/docker 您可以使用--graph daemon 選項更改該位置

我在 Debian Live 系統上遇到了類似的問題。 對於最新的 docker,更改/etc/default/docker不會進行任何更改。

--storage-driver=vfs附加到/lib/systemd/system/docker.service對我有幫助:

...
ExecStart=/usr/bin/dockerd --storage-driver=vfs -H fd://
...

vfs可能性能不佳,但aufsoverlay2devicemapper對我來說不能正常工作。)

更簡單的現代方法

以下在 Ubuntu 14.04 中不起作用,但在20.0418.0416.04 中有效

先決條件:在LiveUSB上安裝Docker

如果您尚未安裝 Docker,請啟動終端並粘貼以下命令。

# docker.io is in the "universe" repository, so add it.
sudo add-apt-repository universe

# Only necessary in 16.04, but doesn't hurt anything.
sudo apt-get update

# Install Ubuntu's Docker package
sudo apt-get install -y docker.io

解決方案:

這里我們使用/etc/docker/daemon.json配置文件來更改存儲驅動。

在終端中粘貼以下命令:

# Create a config file to set the storage driver to "Device Mapper"
echo '{ "storage-driver": "devicemapper" }' | sudo tee -a /etc/docker/daemon.json > /dev/null

# Restart the Docker service
sudo service docker restart

測試

現在我可以使用命令成功運行一個 Ubuntu 容器

sudo docker run --rm -it ubuntu

未來的壞消息

不幸的是,我不確定這種方法將支持多長時間。 運行sudo docker info我看到以下棄用警告:

WARNING: the devicemapper storage-driver is deprecated, and will be removed in a future
release.

我有類似的問題,但使用 Ubuntu 16.04。 我實際上做了什么讓它運行

1)我在ubuntu live上安裝了docker

    sudo apt-get update

    sudo apt-get install \
      apt-transport-https \
      ca-certificates \
      curl \
      gnupg-agent \

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
      software-properties-common

    sudo apt-key fingerprint 0EBFCD88

    sudo add-apt-repository \
       "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
       $(lsb_release -cs) \
       stable"

    sudo apt-get update

    sudo apt-get install docker-ce docker-ce-cli containerd.io

2) 在 ubuntu live 上安裝 docker 后。 您需要停止使用 docker

    sudo service docker stop

3) 然后使用編輯 /lib/systemd/system/docker.service 上的文件

    sudo gedit /lib/systemd/system/docker.service

通過替換這一行

    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd  /containerd.sock

用這條線

    ExecStart=/usr/bin/dockerd -g /media/ubuntu/something -H fd:// --containerd=/run/containerd  /containerd.sock

所以基本上我們所做的就是添加-g /media/ubuntu/something,這個驅動會替換docker的ROOT DIR。 請注意,如果驅動程序是 NTFS,這將不起作用。 您需要將驅動程序設為 ext4 或 FAT。

4) 完成后,重新加載守護進程

    sudo systemctl daemon-reload

5)重啟docker服務

    sudo service docker restart

6)通過運行檢查ROOT DIR是否已更改

    sudo docker info

您應該會在那里看到新目錄。 畢竟,這非常酷,因為您可以擁有可移植的圖像和容器,並且只需執行上述操作就可以在任何 ubuntu 機器上運行它們。 我沒有在 Windows 上測試過這個,但無論如何,使用 docker 和 windows 對我來說總是很痛苦。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM