【发布时间】:2019-04-07 04:37:33
【问题描述】:
我有这个Dockerfile:
FROM chekote/gulp:latest
USER root
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y sudo libltdl-dev
ARG dockerUser='my-user-name';
ARG group='docker';
# crate group if not exists
RUN if ! grep -q -E "^$group:" /etc/group; then groupadd $group; fi
# create user if not exists
RUN if ! grep -q -E "^$dockerUser:" /etc/passwd; then useradd -c 'Docker image creator' -m -s '/bin/bash' -g $group $dockerUser; fi
# add user to the group (if it was present and not created at the line above)
RUN usermod -a -G ${group} ${dockerUser}
# set default user that runs the container
USER ${dockerUser}
我是这样构建的:
docker build --tag my-gulp:latest .
最后由script 这样运行:
#!/bin/bash
image="my-gulp:latest";
workDir='/home/gulp/project';
docker run -it --rm \
-v $(pwd):${workDir} \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
${image} /bin/bash
让我正确登录到 docker 容器,但是当我想查看图像时
docker images
或尝试拉图像
docker pull hello-world:latest
我收到此错误:
在尝试连接到 unix:///var/run/docker.sock 的 Docker 守护程序套接字时获得权限被拒绝:获取 http://%2Fvar%2Frun%2Fdocker.sock/v1.38/images/json:拨打 unix /var/run/docker.sock:连接:权限被拒绝
如何从chekote/gulp:latest 创建 docker 镜像,这样我就可以在其中使用 docker 而不会出错?
或者错误是因为错误的 docker run 命令?
【问题讨论】:
-
我不是 100% 确定,但是在运行容器时尝试
--privileged标签。它可能会起作用。 -
你为什么要启动你的 docker 容器
-
@Code Bling 这不是 inception,gulp 容器不会在其中运行 docker 容器,而是使用主机的 docker 启动与 gulp 容器处于同一级别的其他 docker 容器。 docker 命令从 gulp 容器向外发送到运行其他容器的主机,因此从主机的角度来看,它类似于通过 gulp 运行未容器化的容器。原因:即使主机上根本没有 gulp,您也可以通过使用不同的容器轻松地在 gulp 版本(例如 3.x 和 4.x)之间切换。
-
@Jimmix 哦,那太好了!仍然...开始。
标签: bash docker gulp dockerfile docker-run