在 bash 脚本中执行 docker 命令时出现问题
Issue in executing docker command in bash script
我有以下 bash 脚本代码尝试通过 bash 脚本 运行 一个 docker 容器,但我正在检索错误。
#!/bin/bash
name=sudo docker ps | grep 'test' | awk '{print
}'
sudo docker exec -it $name bash
错误:
docker exec requires at least two arguments
假设您有一个 docker 容器实际名为 test 运行ning,获取 id 的方式是不正确的。为了将命令扩展为变量,它需要包含在 $() 中,因此:
#!/bin/bash
name=$(docker ps | grep 'test' | awk '{print }')
sudo docker exec -it $name bash
进一步说明,您不需要 sudo 权限即可 运行 docker ps ...
此外,您永远不需要将 grep 通过管道传输到 awk 中,因为 awk 可以为您完成此操作:
name=$(docker ps | awk '/test/ {print }')
此外,考虑到 docker-ps 中内置的本机功能,根本不需要管道传输,因此:
name=$(docker ps -q -f name=test)
这将只打印名为 test 的容器的容器 ID。我假设这里的名称是 test 但它可能是其他名称,即名为 test 的标签,在这种情况下过滤器需要更改:
-f, --filter=[]
Filter output based on these conditions:
- exited=<int> an exit code of <int>
- label=<key> or label=<key>=<value>
- status=(created|restarting|running|paused|exited|dead)
- name=<string> a container's name
- id=<ID> a container's ID
- before=(<container-name>|<container-id>)
- since=(<container-name>|<container-id>)
- ancestor=(<image-name>[:tag]|<image-id>| â¨image@digestâ©) - conâ
tainers created from an image or a descendant.
- volume=(<volume-name>|<mount-point-destination>)
- network=(<network-name>|<network-id>) - containers connected to
the provided network
我有以下 bash 脚本代码尝试通过 bash 脚本 运行 一个 docker 容器,但我正在检索错误。
#!/bin/bash
name=sudo docker ps | grep 'test' | awk '{print
}'
sudo docker exec -it $name bash
错误:
docker exec requires at least two arguments
假设您有一个 docker 容器实际名为 test 运行ning,获取 id 的方式是不正确的。为了将命令扩展为变量,它需要包含在 $() 中,因此:
#!/bin/bash
name=$(docker ps | grep 'test' | awk '{print }')
sudo docker exec -it $name bash
进一步说明,您不需要 sudo 权限即可 运行 docker ps ...
此外,您永远不需要将 grep 通过管道传输到 awk 中,因为 awk 可以为您完成此操作:
name=$(docker ps | awk '/test/ {print }')
此外,考虑到 docker-ps 中内置的本机功能,根本不需要管道传输,因此:
name=$(docker ps -q -f name=test)
这将只打印名为 test 的容器的容器 ID。我假设这里的名称是 test 但它可能是其他名称,即名为 test 的标签,在这种情况下过滤器需要更改:
-f, --filter=[]
Filter output based on these conditions:
- exited=<int> an exit code of <int>
- label=<key> or label=<key>=<value>
- status=(created|restarting|running|paused|exited|dead)
- name=<string> a container's name
- id=<ID> a container's ID
- before=(<container-name>|<container-id>)
- since=(<container-name>|<container-id>)
- ancestor=(<image-name>[:tag]|<image-id>| â¨image@digestâ©) - conâ
tainers created from an image or a descendant.
- volume=(<volume-name>|<mount-point-destination>)
- network=(<network-name>|<network-id>) - containers connected to
the provided network