Skip to content

Docker踩坑日记

Info

作者:Void,发布于2021-12-09,阅读时间:约2分钟,微信公众号文章链接:

1. 前言

我们平常也会使用Docker跑一些服务,但使用的功能只是全部功能的一小部分。Docker本身功能很多,命令也很多。作为一个非专业的开发人员,谨以此文记录下我在其中踩过的坑。

2. 踩坑

2.1 启动容器

Docker容器后台运行,必须有一个持久的前台进程。否则的话,容器会自动退出。

常见的做法是我们在Dockerfile中用CMD或是ENTRYPOINT声明我们要跑的命令。或是我们在Docker run的时候在后面声明命令。但是,有的时候我们的命令可能没法简单地写在这里。
这时,我们可以以守护进程的方式启动容器。

docker run -itd 镜像id

通过以下命令,我们可以进入容器。

docker exec -it 容器id /bin/bash

在容器中,我们就可以自由地执行我们的命令了。

最后我们用Ctrl+P+Q退出容器,但不关闭容器。

2.2 文字编辑器

原生的Linux环境可能没有文字编辑器。我们可以通过cat > file将内容贴到文本中,但是这种方式十分不友好。
Vim是常用的Linux下的文字编辑器。我们可以通过如下命令安装Vim。

apt-get update
apt-get install vim

2.3 查看容器状态

查看容器内运行的进程:

docker top 容器id

对于不想要的进程,我们可以使用如下命令结束进程:

kill -9 PID

查看容器内运行进程的log

docker logs -f -t --tail 20 容器id

2.4 清理无用的数据卷

我们往往会使用Docker创建、删除容器。长此以往,容器挂载的数据卷容易产生一些僵尸文件(未绑定容器等)。
我们可以使用如下命令找到僵尸文件:

docker volume ls -qf dangling=true

并删除这些僵尸文件。

docker volume rm $(docker volume ls -qf dangling=true)

3. 总结

这些只是作者在使用Docker过程中踩过的坑,学到的知识,并没有面面俱到。Docker仍有不少探索的空间。
希望读者能少踩一些坑,少碰到一些Bug。


Viewed times

Comments