每次我要访问Docker容器时,我都必须运行命令
docker ps
该命令显示正在运行的容器的ID,此后,我必须复制容器ID并在以下命令中使用它:
docker exec -it / bin / bash
是否有一种避免每次我要访问该容器时都搜索该容器ID的方法。
答案 0 :(得分:2)
您也可以使用容器名称执行docker exec。例如
root@qualys-virtual-machine:~/alpine-node-docker# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc5932f7ff9c selenium/node-chrome:3.14.0-gallium "/opt/bin/entry_poin…" 5 days ago Up 5 days root_chrome_3
8caa58ce6056 selenium/node-chrome:3.14.0-gallium "/opt/bin/entry_poin…" 5 days ago Up 5 days root_chrome_5
现在我可以使用像root_chrome_3这样的容器名称来执行docker exec
docker exec -it root_chrome_3 /bin/bash
在运行命令中赋予名称--name
。
答案 1 :(得分:1)
我可以使用folloiwng bash脚本:
#!/bin/bash
container_id=$(docker ps|grep <your container image name>|cut -d' ' -f1)
echo $container_id
cmd="docker exec -u 0 -it "$container_id" /bin/bash"
echo $cmd
exec $cmd
就我而言,我将脚本存储在文件go_to_my_container.sh中。您可以运行以下命令来访问您的容器:
sh go_to_my_container
答案 2 :(得分:1)
您说过,每次要连接到该容器时都需要复制容器ID,这是因为您没有为该容器分配任何名称,或者是它选择了默认名称。
例如:我将运行一个centOS映像并将其命名为dev-centos-1
您可以为此编写一个docker文件,或者运行以下命令来建立您的容器
.select-modal{
position: absolute;
z-index: 1050;
padding:0;
}
一旦此容器启动,您就可以按其名称进行操作:
docker container run --name dev-centos-1 -d centos:latest
甚至连接到它bash:
docker stats dev-centos-1
docker logs dev-centos-1
这始终被认为是在您的环境中管理容器的更好方法。
谢谢。
答案 3 :(得分:0)
您必须命名容器,并在container name
命令中指定docker exec
,而不是图像名称。
因此,您必须将--name=CONTAINER_NAME
添加到docker run
命令中,而要管理它时,只需使用docker exec -it CONTAINER_NAME bash
。
如果使用docker-compose运行容器,请在服务块下添加container_name: CONTAINER_NAME
来命名它。
示例:
version: '3.1'
services:
server:
image: nginx:latest
container_name: nginx-server
restart: always
ports:
- 80:80