相关疑难解决方法(0)

如何删除旧的和未使用的Docker镜像

长时间运行Docker时,系统中有很多图像.如何一次性删除所有未使用的Docker镜像以释放存储空间?

另外,我还想删除几个月前拉出的图片,这些都是正确的TAG.

所以,我不是要求仅删除未标记的图像.我正在寻找一种方法来删除一般未使用的图像,其中包括未标记的图像和其他图像,例如几个月前正确的图像TAG.

docker docker-image

697
推荐指数
13
解决办法
33万
查看次数

如何附加到 docker-compose 容器?

当我按如下方式启动容器时:

docker run --name test -itd busybox
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式附加到它:

docker attach test
Run Code Online (Sandbox Code Playgroud)

我现在可以执行命令,例如ls,并查看结果。伟大的!

现在,我想通过 a 启动我的容器docker-compose.yml。我尝试过:

version: "3.7"
services:
  busybox:
    image: busybox
    tty: true
Run Code Online (Sandbox Code Playgroud)

这样,当我再次使用 附加到容器时docker attach <container id>,我似乎能够“连接”到它,但在执行命令时我看不到任何输出(例如ls)。

这是为什么?我怎样才能解决这个问题?

docker

13
推荐指数
1
解决办法
9821
查看次数

-i标志在docker中做了什么?

我只是读文章泊坞窗,它描述了如何dockerize一个简单的应用程序的文章.执行以下命令:

$ docker run -t -i ubuntu:14.04 /bin/bash, 
Run Code Online (Sandbox Code Playgroud)

然后,给出以下解释:

在这里,我们再次指定了docker run命令并启动了一个ubuntu:14.04图像.但是我们也传递了两个标志:-t和-i.-t标志在我们的新容器中分配一个伪tty或终端,-i标志允许我们通过获取容器的标准(STDIN)来建立交互式连接.

我不明白其含义:

-i flag allows us to make an interactive connection by grabbing the standard in (STDIN)
Run Code Online (Sandbox Code Playgroud)

谢谢.

docker

10
推荐指数
3
解决办法
2818
查看次数

混淆码头工人的-i"即使没有附加也能保持STDIN开放"

-i标志被描述为"即使没有附加也保持STDIN打开",但Docker运行参考也说:

如果未指定-a,则Docker将附加所有标准流.

所以,默认情况下,stdin是附加的,但是没有打开?我认为STDIN连接但没有打开时没有任何意义,对吧?

docker

10
推荐指数
1
解决办法
2488
查看次数

"docker exec"命令的"-i"和"-t"选项的用途是什么?

说实话,我一直困惑docker exec -it …,docker exec -i …docker exec -t …,所以我决定做一个测试:

  1. docker exec -it …:

    # docker exec -it 115c89122e72 bash
    root@115c89122e72:/# ls
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    
    Run Code Online (Sandbox Code Playgroud)

    它正常工作.

  2. docker exec -i …:

    # docker exec -i 115c89122e72 bash
    ^C
    
    Run Code Online (Sandbox Code Playgroud)

    命令挂起,我必须使用Ctl+ c来中断它.

  3. docker exec -t …:

    # docker exec -t 115c89122e72 bash
    root@115c89122e72:/# ls
    ^C …
    Run Code Online (Sandbox Code Playgroud)

linux tty docker

8
推荐指数
1
解决办法
3262
查看次数

无法附加到运行Docker容器的bash

连接到bash实例时遇到麻烦,使容器保持运行.

更详细一点.我在这里运行容器:

$ docker run -dt --name test ubuntu bash
Run Code Online (Sandbox Code Playgroud)

现在它应该实际运行,而不是完成.

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             
STATUS              PORTS               NAMES
f3596c613cfe        ubuntu              "bash"              4 seconds ago       Up 2 seconds                            test
Run Code Online (Sandbox Code Playgroud)

在此之后,我试图附加到保持容器运行的bash实例.像这样:

$ docker attach test
Run Code Online (Sandbox Code Playgroud)

运行此命令我可以写一些东西到stdin,但没有结果跟随.我不确定bash是否正在输入我输入的行.

还有其他一些方法来阻止容器运行吗?

我知道,我可以运行不同的bash实例并使用它docker exec -it test bash.但是更一般的是,有没有办法连接到在Docker容器中运行的进程?

有时,保存在容器内运行的进程的会话会很有用.

感谢user2915097指出失踪的-i旗帜.

所以现在我们可以进行持久的bash会话.例如,让我们设置一些alias并在停止并重新启动容器后重用.

$ docker run -itd --name test ubuntu bash
Run Code Online (Sandbox Code Playgroud)

要附加到bash实例只是运行

$ docker attach test
root@3534cbe1e994:/# alias test="Hello, world!"
Run Code Online (Sandbox Code Playgroud)

要从容器中分离而不是停止容器,请按Ctrl+ p, …

linux bash shell containers docker

5
推荐指数
1
解决办法
5446
查看次数

标签 统计

docker ×6

linux ×2

bash ×1

containers ×1

docker-image ×1

shell ×1

tty ×1