linux、docker容器缺少tailf命令,解决方案。

本文介绍在Docker容器中使用tailf命令的两种方法。第一种是直接复制宿主机上的tailf命令到容器中,并调整文件权限;第二种是通过自定义脚本并在容器中创建软链接来实现。文章提供了具体命令和操作步骤。

两种方案

第一种(推荐)

如果宿主服务器上面有tailf命令,可以直接到宿主机的 /usr/bin/ 目录下,寻找tailf文件

在这里插入图片描述
把该目录下的文件复制到指定的docker容器的 /usr/bin/ 目录下,然后就可以使用tailf命令了。
复制命令:docker cp /usr/bin/tailf 9c83a80fbeda:/usr/bin

				命令解析:docker cp  			   //复制命令
 						 /usr/bin/tailf    		   //服务器文件路径
 						 9c83a80fbeda              //容器id(可以通过docker ps 命令查看CONTAINER ID)
 						 /usr/bin                  //容器中的路径(用于存放复制文件)

在这里插入图片描述
如果出现 异常信息:-bash: /usr/bin/tailf: Permission denied
使用chmod指令修改文件权限
命令:chmod 777 usr/bin/tailf
然后就可以了

第二种方案

与第一种方案类型,自己写一个脚本文件,我写了一个简单的,可以直接用,很有瑕疵,文件名为tailf,没有后缀。

# !/bin/bash  
if [ $# -eq 1 ]; then
  tail -f -n -10 $1
elif [ $# -eq 2 ]; then
  tail -f -n $1 $2
else
  echo "Command line format tailf -num filepath, for example tailf -100 log.log"
fi

这个脚本主要判断有几个参数,如果有一个默认输出10行,如果有两个,则输出自定义的行数。

我自己的脚本文件是放到 /etc/init.d/ 目录下的,把这个脚本文件复制到docker容器中的相同目录下。
执行命令:docker cp /etc/init.d/tailf 9c83a80fbeda:/etc/init.d

进入容器:docker exec -it 9c83a80fbeda /bin/bash

			命令解析:docker exec        //进入容器命令
					  -i: 交互式操作。
                      -t: 终端。
                      9c83a80fbeda: 容器id。
                     /bin/bash:命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

进入容器后
给脚本文件赋予执行权限
命令:chmod +x /etc/init.d/tailf

然后进入容器的/usr/bin/目录下
命令:cd /usr/bin

建立软链接,这个操作就是在/usr/bin目录下建立指向/etc/init.d/tailf的tailf文件。
想想详细了解软链接 请看菜鸟教程 https://www.runoob.com/linux/linux-comm-ln.html
命令:ln -s /etc/init.d/tailf
在这里插入图片描述
效果相同:
在这里插入图片描述

Docker容器内运行Linux命令有多种方式。一种常见的方式是使用`docker exec`命令。例如,要在容器内部运行`ls`命令,可以使用以下命令: ``` docker exec -it <container_id> ls ``` 其中,`<container_id>`是容器的ID。这将在容器内部执行`ls`命令并显示容器中的文件列表。\[1\] 另一种方式是在容器内部启动一个交互式Shell,然后在Shell中运行命令。可以使用以下命令进入容器内部的交互式Shell: ``` docker exec -it <container_id> /bin/bash ``` 其中,`<container_id>`是容器的ID。这将进入容器内部的交互式Shell,然后可以在Shell中运行任何Linux命令。\[1\] 如果需要在容器内部运行Docker命令,可以将宿主机的Docker命令和套接字映射到容器内部。可以使用以下命令容器内部运行Docker: ``` docker run --privileged --name='test_triton_jason' -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -itd your-images bash ``` 这将在容器内部启动一个交互式Shell,并将宿主机的Docker命令和套接字映射到容器内部,以便在容器内部运行Docker命令。\[2\] 如果需要将文件复制到容器内部,可以使用`docker cp`命令。例如,要将宿主机上的文件`/usr/bin/tailf`复制到容器的`/usr/bin/`目录下,可以使用以下命令: ``` docker cp /usr/bin/tailf <container_id>:/usr/bin ``` 其中,`<container_id>`是容器的ID。这将把文件复制到容器内部的指定目录,然后就可以在容器内部使用`tailf`命令了。\[3\] #### 引用[.reference_title] - *1* *3* [linuxdocker容器缺少tailf命令解决方案。](https://blog.youkuaiyun.com/weferxe/article/details/104753212)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [如何在 docker 容器内部运行 docker命令](https://blog.youkuaiyun.com/ljp1919/article/details/123515090)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值