- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近有人告诉我,运行 docker
或 docker-compose
sudo 是一个很大的问题,我必须创建/添加我的用户到 docker
组以运行docker
和 docker-compose
没有 sudo
的命令.根据 documentation here 我做了
现在,docker
通过我的用户正常运行。例如:
~$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
但是当我尝试运行 docker-compose 时,我得到一个
Permission Denied
~$ docker-compose --help
-bash: /usr/local/bin/docker-compose: Permission denied
你能解释一下这是如何工作的吗?我以为有一个
docker
group 启用了这些命令的使用,因为二进制文件属于这个组,但实际上它们没有,它们只属于
root
...
~$ ls -al /usr/bin/docker*
-rwxr-xr-x 1 root root 71706288 Jul 23 19:36 /usr/bin/docker
-rwxr-xr-x 1 root root 804408 Jul 23 19:36 /usr/bin/docker-init
-rwxr-xr-x 1 root root 2944247 Jul 23 19:36 /usr/bin/docker-proxy
-rwxr-xr-x 1 root root 116375640 Jul 23 19:36 /usr/bin/dockerd
~$ ls -al /usr/local/bin/
total 12448
drwxr-xr-x 2 root root 4096 May 26 11:08 .
drwxr-xr-x 10 root root 4096 May 14 19:36 ..
-rwxr--r-- 1 root root 12737304 May 26 11:08 docker-compose
那么,这是如何工作的呢?
docker-compose
为属于
docker
的用户运行团体?
最佳答案
sudo chmod a+x /usr/local/bin/docker-compose
将打开您的权限。
docker-compose
只是一个包装器,它使用外部 docker 守护进程,与
docker
相同。 command 实际上并没有运行任何东西,而是向 docker 守护进程发出命令。
DOCKER_HOST
更改与之通信的 docker 守护进程。多变的。默认为空;当它为空时,
docker
和
docker-compose
假设它位于
/var/run/docker.sock
根据
dockerd documentation :
By default, a unix domain socket (or IPC socket) is created at /var/run/docker.sock, requiring either root permission, or docker group membership.
$ ls -l /var/run/docker.sock
srw-rw---- 1 root docker 0 nov. 15 19:54 /var/run/docker.sock
如
https://docs.docker.com/engine/install/linux-postinstall/ 中所述, 将用户添加到
docker
组,你可以这样做:
sudo usermod -aG docker $USER # this adds the permissions
newgrp docker # this refreshes the permissions in the current session
docker
与
sudo
与使用
docker
相同组,因为授予
/var/run/docker.sock
的访问权限相当于给予完全根访问权限:
The docker group grants privileges equivalent to the root user. For details on how this impacts security in your system, see Docker Daemon Attack Surface.
To run Docker without root privileges, see Run the Docker daemon as a non-root user (Rootless mode).
$ type docker
docker is /usr/bin/docker
$ dpkg -S /usr/bin/docker
docker-ce-cli: /usr/bin/docker
可以看到
docker
命令在安装
docker-ce-cli
时安装包裹。
docker
cli 与 docker 守护进程通信,也称为
dockerd
.
dockerd
是一个守护进程(服务器),默认暴露 unix socket
/var/run/docker.sock
;哪些默认权限是
root:docker
.
dockerd
使用
containerd
:
https://containerd.io/
/var/run/docker.sock
. 不管你是不是 sudoer 都不会改变 . /var/run/docker.sock
,您必须是 root
或在docker
团体。 docker-compose
是另一个 cli 它与 docker
具有相同的要求. docker
和
docker-compose
使用环境变量
DOCKER_HOST
知道与谁交谈。对于这两种情况,如果变量为空,则默认值为
/var/run/docker.sock
.
关于linux - 使用不带 sudo 的 docker-compose 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68653051/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!