首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头无根

码头无根
EN

Stack Overflow用户
提问于 2022-02-13 01:35:09
回答 1查看 534关注 0票数 1

我想从无根容器中启动主机中的Docker容器。

示例:我有一个Ubuntu运行:gcr.io/news-ml-257304/mycontainer:latest,它是无根的。在这个容器中,我希望能够执行以下命令:

代码语言:javascript
复制
docker run --network=host -v {connection_file}:/connection-spec gcr.io/news-ml-257304/mycontainer2

mycontainer2应该从Ubuntu开始。(在我的容器外)。有可能吗?

我成功地安装了无根码头。我可以成功地运行一个无根容器mycontainer。我目前正在遵循这个指南:

https://docs.docker.com/engine/security/rootless/#prerequisites

代码语言:javascript
复制
docker -v
Docker version 20.10.12, build e91ed57
代码语言:javascript
复制
lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

在主机中:

代码语言:javascript
复制
echo $DOCKER_HOST
unix:///run/user/1000/docker.sock
代码语言:javascript
复制
systemctl --user status docker
● docker.service - Docker Application Container Engine (Rootless)
   Loaded: loaded (/home/gogasca/.config/systemd/user/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2022-02-13 01:16:14 UTC; 9min ago
     Docs: https://docs.docker.com/go/rootless/
 Main PID: 28166 (rootlesskit)
   CGroup: /user.slice/user-1000.slice/user@1000.service/docker.service
           ├─28166 rootlesskit --net=slirp4netns --mtu=65520 --slirp4netns-sandbox=auto --slirp4netns-seccomp=auto --disable-host-loopback --port-driver=builtin --copy-up=/etc --copy-up=/run --propaga
           ├─28177 /proc/self/exe --net=slirp4netns --mtu=65520 --slirp4netns-sandbox=auto --slirp4netns-seccomp=auto --disable-host-loopback --port-driver=builtin --copy-up=/etc --copy-up=/run --prop
           ├─28195 slirp4netns --mtu 65520 -r 3 --disable-host-loopback --enable-sandbox --enable-seccomp 28177 tap0
           ├─28202 dockerd
           ├─28217 containerd --config /run/user/1000/docker/containerd/containerd.toml --log-level info
           ├─29019 fuse-overlayfs -o lowerdir=/home/gogasca/.local/share/docker/fuse-overlayfs/l/QJ2Y7NAKB4N3ABA4CVINPOT64L:/home/gogasca/.local/share/docker/fuse-overlayfs/l/ZDXAGGP2VO2K7FWWEZYSJ2FK5
           ├─29026 /usr/bin/rootlesskit-docker-proxy -proto tcp -host-ip 127.0.0.1 -host-port 8080 -container-ip 172.17.0.2 -container-port 8080
           ├─29031 docker-proxy -container-ip 172.17.0.2 -container-port 8080 -host-ip 127.0.0.1 -host-port 8080 -proto tcp
           ├─29047 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 624b2dbfc5f54272ef8fdf8a5a59da9d3be0d1292e2fdd2f2b22bd0ac0aee21b -address /run/user/1000/docker/containerd/containerd.sock
           └─29068 /opt/conda/bin/python3.7 /opt/conda/bin/jupyter-lab --ip=0.0.0.0 --port=8080 --no-browser --allow-root --NotebookApp.token= --NotebookApp.password= --ServerApp.allow_origin=*

Feb 13 01:16:14 a-experiment-debian dockerd-rootless.sh[28166]: time="2022-02-13T01:16:14.516248592Z" level=info msg="Loading containers: start."
Feb 13 01:16:14 a-experiment-debian dockerd-rootless.sh[28166]: time="2022-02-13T01:16:14.889430212Z" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon opti
Feb 13 01:16:14 a-experiment-debian dockerd-rootless.sh[28166]: time="2022-02-13T01:16:14.977066622Z" level=info msg="Loading containers: done."
Feb 13 01:16:14 a-experiment-debian dockerd-rootless.sh[28166]: time="2022-02-13T01:16:14.992309698Z" level=info msg="Docker daemon" commit=459d0df graphdriver(s)=fuse-overlayfs version=20.10.12
Feb 13 01:16:14 a-experiment-debian dockerd-rootless.sh[28166]: time="2022-02-13T01:16:14.992798123Z" level=info msg="Daemon has completed initialization"
Feb 13 01:16:15 a-experiment-debian dockerd-rootless.sh[28166]: time="2022-02-13T01:16:15.023274713Z" level=info msg="API listen on /run/user/1000/docker.sock"
Feb 13 01:19:20 a-experiment-debian dockerd-rootless.sh[28166]: time="2022-02-13T01:19:20.515794206Z" level=info msg="starting signal loop" namespace=moby path=/run/.ro729122400/user/1000/docker/conta

我就是这样启动mycontainer

代码语言:javascript
复制
docker run -d -p 127.0.0.1:8080:8080/tcp  gcr.io/news-ml-257304/mycontainer:latest -v /home/gogasca/local/:/home/jupyter -e DOCKER_HOST=$DOCKER_HOST

当我访问mycontainer并检查码头时,我得到:

代码语言:javascript
复制
docker exec -it 624b2dbfc5f5 /bin/bash
代码语言:javascript
复制
docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

在东道国:

代码语言:javascript
复制
echo $DOCKER_HOST
unix:///run/user/1000/docker.sock

在我的容器中,DOCKER_HOST显示为空

代码语言:javascript
复制
echo $DOCKER_HOST
EN

回答 1

Stack Overflow用户

发布于 2022-08-11 22:52:03

这篇文章已经有五个月的历史了,所以你可能已经知道了,但是:

试着添加

代码语言:javascript
复制
-v /run/user/1000/docker.sock:/var/run/docker.sock
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71097242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档