[英]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來完成這項工作。
您只需要更改/etc/default/docker
即可在其中包含此內容:
DOCKER_OPTS="--storage-driver=devicemapper"
請參閱此答案並在--storage-driver=devicemapper
start 命令的末尾添加--storage-driver=devicemapper
。
我已經設法使容器運行正常,但我更喜歡使用 AUFS。
我意識到默認情況下分區沒有使用 aufs,而是像caw
或cow
類的東西(現在不記得了)。
我還嘗試使用 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
可能性能不佳,但aufs
、 overlay2
和devicemapper
對我來說不能正常工作。)
以下在 Ubuntu 14.04 中不起作用,但在20.04 、 18.04和16.04 中有效。
如果您尚未安裝 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.