gpt4 book ai didi

linux - docker.sock 在 docker.sock 存在且权限在 docker 容器内运行时无法连接

转载 作者:太空宇宙 更新时间:2023-11-04 11:59:23 30 4
gpt4 key购买 nike

我正在设置一个安装和配置了 docker 的基础镜像,这样当我运行我的 jenkins 管道时我可以进行 anchor 扫描。我必须将 anchor 图像拉到 docker 图像中,因为我的管道在 docker 代理上运行。然而,即使在本地运行试图构建一个 docker 镜像并运行一个简单的 hello-world docker 容器或执行 docker pull 也无法连接到 docker 套接字。我将 root 用户添加到 docker 组,我什至将 chmod 777 和 a+xX 添加到 docker.sock。由于某种原因,它在/run/docker.sock 和/var/run/docker.sock 中似乎都被符号链接(symbolic link)了。我正在使用 ubuntu:18.04-bionic 版本从 ubuntu 存储库构建和安装。 Ubuntu 镜像没有安装 systemd,当我安装 systemd 时它说它不是随引导启动的,这意味着它必须在镜像启动时在引导时安装。我用 service docker start 启动它。

Processing triggers for libc-bin (2.27-3ubuntu1) ...
Processing triggers for dbus (1.12.2-1ubuntu1) ...
/usr/bin/docker
/usr/share/bash-completion/completions/docker
/etc/init.d/docker
/etc/default/docker
/etc/docker
* Starting Docker: docker
...done.
/run/docker.sock
total 32K
drwxr-xr-x 1 root root 4.0K Oct 31 17:49 .
drwxr-xr-x 1 root root 4.0K Oct 31 17:49 ..
drwxr-xr-x 2 dnsmasq nogroup 4.0K Oct 31 17:49 dnsmasq
drwx------ 4 root root 4.0K Oct 31 17:49 docker
-rw-r--r-- 1 root root 6 Oct 31 17:49 docker-ssd.pid
srwxrwxrwx 1 root docker 0 Oct 31 17:49 docker.sock
drwxrwxrwt 2 root root 4.0K Oct 18 21:02 lock
drwxr-xr-x 2 root root 4.0K Oct 18 21:02 mount
drwxr-xr-x 2 root root 4.0K Oct 19 00:47 systemd
-rw-rw-r-- 1 root utmp 0 Oct 18 21:02 utmp
total 32K
drwxr-xr-x 1 root root 4.0K Oct 31 17:49 .
drwxr-xr-x 1 root root 4.0K Oct 31 17:49 ..
drwxr-xr-x 2 dnsmasq nogroup 4.0K Oct 31 17:49 dnsmasq
drwx------ 4 root root 4.0K Oct 31 17:49 docker
-rw-r--r-- 1 root root 6 Oct 31 17:49 docker-ssd.pid
srwxrwxrwx 1 root docker 0 Oct 31 17:49 docker.sock
drwxrwxrwt 2 root root 4.0K Oct 18 21:02 lock
drwxr-xr-x 2 root root 4.0K Oct 18 21:02 mount
drwxr-xr-x 2 root root 4.0K Oct 19 00:47 systemd
-rw-rw-r-- 1 root utmp 0 Oct 18 21:02 utmp
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.

我的 Dockerfile

FROM ubuntu:bionic

#requirements
#docker
#kubectl
#terraform
#kops
#mysql
#systemd


ENV DEBIAN_FRONTEND=noninteractive \
NVM_VERSION=0.33.11 \
NODE_VERSION=9.11.1

RUN set -e && \
echo "NODE_VERSION: $NODE_VERSION" && \
apt-get update --yes && \
apt-get install git \
gnupg \
wget \
curl \
apt-utils \
gcc \
g++ \
make \
build-essential \
nginx \
python \
vim \
gnupg \
gnupg2 \
net-tools \
software-properties-common \
npm \
curl \
libxss1 \
libappindicator1 \
libindicator7 \
apt-utils \
fonts-liberation \
xfonts-cyrillic \
xfonts-100dpi \
xfonts-75dpi \
xfonts-base \
xfonts-scalable \
libappindicator3-1 \
libasound2 \
libatk-bridge2.0-0 \
libgtk-3-0 \
libnspr4 \
libnss3 \
libx11-xcb1 \
libxtst6 \
xdg-utils \
lsb-release \
xvfb \
python-pip \
default-jre \
gtk2-engines-pixbuf -y && \
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && \
dpkg -i google-chrome*.deb && \
NVM_DIR="$HOME/.nvm" && \
PROFILE="$HOME/.profile" && \
git clone --branch "v$NVM_VERSION" --depth 1 https://github.com/creationix/nvm.git "$NVM_DIR" && \
echo >> "$PROFILE" && \
echo 'export NVM_DIR="$HOME/.nvm"' >> "$PROFILE" && \
echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm' >> "$PROFILE" && \
echo '[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # This loads nvm bash_completion' >> "$PROFILE" && \
. $NVM_DIR/nvm.sh && \
nvm install $NODE_VERSION && \
apt-get install npm --yes && \
rm -rf /usr/lib/openssh/ssh-keysign && \
mkdir -p /tmp/nginx && \
pip install awscli && \
wget https://github.com/kubernetes/kops/releases/download/1.10.0/kops-linux-amd64 && \
wget https://storage.googleapis.com/kubernetes-release/release/v1.8.4/bin/linux/amd64/kubectl && \
cp kops-linux-amd64 /usr/local/bin/kops && \
cp kubectl /usr/local/bin/kubectl && \
chmod a+xX /usr/local/bin/kubectl && \
chmod a+xX /usr/local/bin/kops && \
apt install docker.io -y && \
find / -name 'docker' && \
usermod -aG docker root && \
service docker start && \
find / -name 'docker.sock' && \
chmod a+xX /run/docker.sock && \
chmod 777 /run/docker.sock && \
# this doens't work because it exists in var/run as well which doesn't make sense because its not there in the find command. ln -s /run/docker.sock /var/run/docker.sock && \
ls -lah /run/ && \
ls -lah /var/run/ && \
docker run hello-world

RUN npm install --global lerna

EXPOSE 80

尝试了我能想到的一切。寻找想法...

最佳答案

如果您只是想访问主机上的 Docker 守护进程,则不需要同时(尝试)启动容器内的守护进程;你只需要一个兼容的 /usr/bin/docker , 并使用 docker run -v在启动时将主机的 Docker 套接字绑定(bind)挂载到容器中。

如果您需要执行基本的 Docker 操作(docker pulldocker builddocker push),那么通常的方法是使用主机的 Docker 守护进程,而不是尝试运行您自己的守护进程。有几篇旧博客文章建议不要在 Docker 内部运行 Docker;这在理论上是可行的,但会导致关于“我正在与哪个 Docker 交谈”的令人困惑的问题,并且在任何情况下设置都很困难。

(以下所有陈述大约有 80% 是正确的:您无法在 Dockerfile 中启动后台守护进程;您无法在 Docker 中启动 servicesystemctl 任何内容;您无法运行 Docker Docker 容器中的守护进程。尝试解决这些问题通常不是最佳做法。)

关于linux - docker.sock 在 docker.sock 存在且权限在 docker 容器内运行时无法连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53089431/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com