如何使用映像名称访问Docker容器实例?

时间:2018-12-12 06:14:44

标签: bash docker

每次我要访问Docker容器时,我都必须运行命令

docker ps

该命令显示正在运行的容器的ID,此后,我必须复制容器ID并在以下命令中使用它:

docker exec -it / bin / bash

是否有一种避免每次我要访问该容器时都搜索该容器ID的方法。

4 个答案:

答案 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