Busybox提供linux常用的命令
例如ping、cat、wget、telnet、nc、nslookup、traceroute等,可以满足日常工作几乎所有测试需求。
常用操作
# 拉取docker镜像
docker pull busybox
# 运行busybox
docker run -it --name mybusybox busybox:latest sh
# 启动busybox
docker start mybusybox
# 进入容器内部
docker exec -it mybusybox sh
# 删除容器
docker rm mybusybox
busybox httpd -p 8080 -h /www/
创建www文件夹,并在www文件夹中创建index.html随便编辑一些内容如
<p>Hello World!</p>
在浏览器中输入地址:http://127.0.0.1:8080 就能看到效果了。
PS:如何关闭这个httpd服务器?
在终端中执行ps命令查看httpd的pid
busybox ps | grep httpd
6573 httpd
使用kill命令杀死httpd的进程即可
kill 6573
如何通过一条命令创建http服务器?
docker run -it -p 8888:8888 -v /usr/www:/www --name mybusybox -d busybox:latest httpd -p 8888 -h /www/
于是疑惑产生了, -d
是保证容器在后台运行,为什么我的容器停止运行了呢?
前面提到过, docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
中有一个 COMMAND
参数,容器启动后会执行 COMMAND
命令,它的默认值为 /bin/bash
。也就是说容器在后台启动成功后,执行了 COMMAND
命令后直接关闭了。
了解到该原理后,我们可以通过在 docker run -d
后增加一个驻留在进程中长期运行的命令就可以保证容器不关闭了。
方案一
docker run -d <image_name> tail -f /dev/null
比如:
docker run -it -p 8888:8888 -v /usr/www:/www --name mybusybox busybox:latest sh -c "httpd -p 8888 -h /www/ && tail -f /dev/null"
这里的 mybusybox 是后台服务程序 不能阻塞docker的退出,所以加入 tail -f /dev/null 让容器mybusybox不退出