docker 常用指令

镜像

docker pull <镜像>

下载某个docker镜像

docker images

显示本地已有的docker镜像列表。

docker rmi <镜像>

删除本地的某个docker镜像

  • 如何解决 docker rmi 包名 提示 No such image: hyperf/hyperf

以下是想要删除hyperf/hyperf镜像时发现删不掉的解决办法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@localhost ~]# docker rmi hyperf/hyperf
Error: No such image: hyperf/hyperf
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hyperf/hyperf 7.2-alpine-cli 4fa6de156d55 5 months ago 80.4MB
[root@localhost ~]# docker rmi hyperf/hyperf^C
[root@localhost ~]# docker rmi hyperf/hyperf:7.2-alpine-cli
Untagged: hyperf/hyperf:7.2-alpine-cli
Untagged: hyperf/hyperf@sha256:6d6560e63efc5bb8180f35fa2e309641cbd9191a27b986e44e578f261195aa5d
Deleted: sha256:4fa6de156d552e9b3d90ebd06d187831bc509e7bed226712c9001dc791d377b1
Deleted: sha256:e789f9299ab1b9d32780ebde4f06c576d047575c390b41ee0d3caa03567b1011
Deleted: sha256:47c90e47b5812f2fb982658c9b2366b2bfaa98bde4e740a5f3339f2dd3c3b17f
Deleted: sha256:f1b5933fe4b5f49bbe8258745cf396afe07e625bdab3168e364daf7c956b6b81
[root@localhost ~]#

容器

docker rm

删除本地的某个docker容器,加上 -a 后可以删除运行中的容器。

注:容器id是指通过docker ps获取的容器列表,而不是docker images获取的镜像列表

回到容器 nsenter

退出终端之后想要再回到docker界面可以使用 nsenter 命令:

  • 方法一
1
2
3
4
5
6
# 首先获取containerId
docker ps -a
# 首先获取进程的pid
docker inspect --format "{{ .State.Pid }}" containerId
# 使用nsenter进入该容器
nsenter --target <pid> --mount --uts --ipc --net --pid
  • 方法二
1
2
3
4
# 首先获取containerId
docker ps -a
# 使用attach进入
docker attach containerId

2020.10.13更新
ps: 今天docker stop了一下,发现通过 docker inspect --format "{{ .State.Pid }}" 获取到的pid为0了。这时候运行下docker start 即可

容器跟随docker自动启动

在docker run 里加上--restart=always,这样docker重启后会自动重启容器。


评论区