如何使用 docker container kill [containerID] 命令来终止容器

如何使用 docker container kill [containerID] 命令来终止容器

我正在通过以下链接使用 docker 软件:http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html。有两点让我感到困惑。

1:为了避免每次都输入sudo,作者提到可以通过以下命令将用户添加到Docker用户组中:

$ sudo usermod -aG docker $USER

我在我的电脑上尝试过这个,我没有使用 $USER,而是使用了 $myusername,我的用户名是我在电脑上的登录用户名。然后失败了……哈哈。我想我需要改用 $USER。

2:我尝试使用

$ sudo docker container run -it ubuntu bash

然后我就不知道怎么杀了它了....哈哈...因为我不知道容器ID,而且好像我处于ubuntu模式,无法返回。以下是输出。

:~$ sudo docker container run -it ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
7ddbc47eeb70: Pull complete 
c1bbdc448b72: Pull complete 
8c3b70e39044: Pull complete 
45d437916d57: Pull complete 
Digest: sha256:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
Status: Downloaded newer image for ubuntu:latest
root@c3bfdf5922ea:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
root@c3bfdf5922ea:/# cd lib64
root@c3bfdf5922ea:/lib64# ls
ld-linux-x86-64.so.2
root@c3bfdf5922ea:/lib64# cd ..
root@c3bfdf5922ea:/# cd home
root@c3bfdf5922ea:/home# ls
root@c3bfdf5922ea:/home# mkdir jack
root@c3bfdf5922ea:/home# ls
jack
root@c3bfdf5922ea:/home# cd ..
root@c3bfdf5922ea:/# cd sys
root@c3bfdf5922ea:/sys# ls
block  bus  class  dev  devices  firmware  fs  hypervisor  kernel  module  power
root@c3bfdf5922ea:/sys# cd kernel
root@c3bfdf5922ea:/sys/kernel# ls
boot_params  fscaps              kexec_crash_size  notes          security       uevent_seqnum
cgroup       iommu_groups        kexec_loaded      profiling      slab           vmcoreinfo
config       irq                 livepatch         rcu_expedited  tracing
debug        kexec_crash_loaded  mm                rcu_normal     uevent_helper
root@c3bfdf5922ea:/sys/kernel# cd
root@c3bfdf5922ea:~# sudo docker container kill 
bash: sudo: command not found
root@c3bfdf5922ea:~# sudo docker container kill 1
bash: sudo: command not found
root@c3bfdf5922ea:~# docker container kill 0
bash: docker: command not found
root@c3bfdf5922ea:~# sudo docker container kill 0
bash: sudo: command not found
root@c3bfdf5922ea:~# quit
bash: quit: command not found
root@c3bfdf5922ea:~# quit()
> 
> sudo docker container kill 
bash: syntax error near unexpected token `sudo'

编辑:对于问题 2,我按下了 control + d 并意外地回到了原始的 ubuntu 终端。是的。但是尝试终止 ubuntu 容器时仍然没有成功。以下是我尝试的方法。

root@c3bfdf5922ea:~# exit
:~$ docker container kill 0
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/0/kill?signal=KILL: dial unix /var/run/docker.sock: connect: permission denied
:~$ sudo docker container kill 0
[sudo] password for devel: 
Error response from daemon: Cannot kill container: 0: No such container: 0
:~$ sudo docker container kill 1
Error response from daemon: Cannot kill container: 1: No such container: 1
:~$ sudo docker container kill 
"docker container kill" requires at least 1 argument.
See 'docker container kill --help'.

Usage:  docker container kill [OPTIONS] CONTAINER [CONTAINER...]

Kill one or more running containers
:~$ sudo docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              775349758637        3 days ago          64.2MB
hello-world         latest              fce289e99eb9        10 months ago       1.84kB
:~$ sudo docker container kill 775349758637
Error response from daemon: Cannot kill container: 775349758637: No such container: 775349758637

再次编辑:对于问题 1,我尝试使用 $USER 命令,但没有成功。对于问题 2,我尝试使用 sudo docker container ls -all 命令,我猜测 root 后面的数字是容器 ID,然后再次尝试,但仍然没有成功。

:~$ sudo docker container ls -all
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
c3bfdf5922ea        ubuntu              "bash"              33 minutes ago      Exited (0) 11 minutes ago                       adoring_villani

更多试验:

:~$ sudo usermod -aG docker $USER
:~$ docker container run -it ubuntu bash
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
:~$ sudo docker container run -it ubuntu bash
root@ff9c3f3e1a2c:/# sudo docker container kill ff9c3f3e1a2c
bash: sudo: command not found
root@ff9c3f3e1a2c:/# docker container kill ff9c3f3e1a2c
bash: docker: command not found
root@ff9c3f3e1a2c:/# 

答案1

镜像 ID 与容器 ID 不同。使用以下docker ps命令列出容器:

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
841eff335225        ubuntu              "bash"              4 seconds ago       Exited (0) 2 seconds ago                       myubuntu

-a还列出已退出的容器)

在大多数 docker 命令中,您可以使用 id ( 841eff335225) 或 name ( myubuntu)。id 本身是容器“长 id”的开头(任何长度都可以,但短长度可能会产生歧义,6+ 通常就足够了)。

--name <somename>您可以使用命令为容器指定一个名称(必须是唯一的)docker run。否则容器将获得一个随机名称(形容词+科学/计算机名人)。

笔记

  • 当然应该使用docker命令外部容器...所以在杀死它之前退出容器,或者从另一个终端杀死它。
  • docker ps -q仅返回 id,因此可用于生成其他 Docker 命令的参数:docker kill $(docker ps -q)将终止所有正在运行的容器。

相关内容