【Docker】之 docker exec 命令简化

进入容器

  某些时候需要进入容器进行操作,可以使用 attachexec 进入容器。

# 不安全的,ctrl+d 退出时容器也会终止
docker attach [容器Name]

# 以交互式命令行进入,安全的,推荐使用
docker exec -it [容器Name] /bin/bash

命令优化

  1. 使用 docker exec 命令时,好用,但是命令过长,我们可以通过自定义命令来简化使用
  2. 创建文件 /user/bin/ctn 命令文件,内容如下:
    docker exec -it $1 /bin/bash
      检查环境变量有没有配置目录 /usr/bin (一般是有配置在环境变量里面的,不过最好再确认一下)
    $PATH
    bash: /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games: No such file or directory
      完成上面步骤后,就可以直接通过命令 ctn 来进入容器

    注意:如果是使用非 root 账号创建的命令,而 docker 命令是 root 权限,可能存在权限问题,可以通过设置 chmod 777 /usr/bin/ctn 设置权限,使用 sudo ctn [容器Name] 即可进入容器

    $ ctn [容器Name]
      使用上面命令时,容器Name 需要手动输入,容器出错。我们可以借助 complete 命令来补全 容器Name,在 ~/.bashrc (作用于当前用户,如果想要所要用户上校,可以修改 /etc/bashrc)文件中添加一行,内容如下。保存后执行 source ~/.bashrc 使之生效,之后我们输入 ctn 后,按 tab 就会提示或自动补全容器名了了
    # ctn auto complete
    complete -W "$(docker ps --format"{{.Names}}")" ctn

    注意: 由于提示的 容器Name 是 ~/.bashrc 生效时的列表,所有如果之后 docker 容器列表有变动,需要重新执行 source ~/.bashrc 使之更新提示列表