如何将SSH转换为使用docker-compose创建的服务

Vik*_*ore 8 docker docker-compose

这是我的docker撰写文件

version: '2'

# based off compose-sample-2, only we build nginx.conf into image
# uses sample site from https://startbootstrap.com/template-overviews/agency/

services:
  proxy:
    build:
      context: .
      dockerfile: nginx.Dockerfile
    ports:
      - '80:80'
  web:
    image: httpd
    volumes:
      - ./html:/usr/local/apache2/htdocs/
Run Code Online (Sandbox Code Playgroud)

现在我可以在运行docker-compose up时使用SSH生成的任何服务吗

Ole*_*yar 9

标准机制不是ssh插入容器,而是使用来连接到容器docker exec。给定一个容器ID,例如,3cdb7385c127您可以ssh使用

docker exec -it 3cdb7385c127 sh
Run Code Online (Sandbox Code Playgroud)

如果您的容器中有bash,则使用完整的登录shell

docker exec -it 3cdb7385c127 bash -l
Run Code Online (Sandbox Code Playgroud)

ssh如果愿意,您仍然可以进入容器,但是您需要ssh安装,配置和运行服务器,并且需要从外部访问容器IP或将容器的:22重定向到主机上的某个端口。


hai*_*ong 8

最简单的方法是运行docker-compose exec命令:

docker-compose exec web /bin/bash
Run Code Online (Sandbox Code Playgroud)

使用最新版本的 docker,由于“Docker Compose 现在位于 Docker CLI 中”,您可以执行以下操作:

docker compose exec web /bin/bash
Run Code Online (Sandbox Code Playgroud)

如果你确实想使用纯 docker 命令,你可以这样做:

web=`docker container ls |grep web |awk '{print \$1}'`
docker container exec -it $web /bin/bash
Run Code Online (Sandbox Code Playgroud)

或单行:

docker container exec -it `docker container ls |grep web |awk '{print \$1}'` /bin/bash
Run Code Online (Sandbox Code Playgroud)

我们首先找到容器 ID,然后运行熟悉的docker container exec -it命令。

正如问题中提到的,服务容器是通过运行创建的docker-compose up。因此我认为这不是docker-compose run合适的答案,因为它会在我的测试中启动一个容器。


Pra*_*ain 5

  1. 执行 ' docker ps' 以获取容器的名称和 docker id。
  2. 做' docker exec <docker_id> -it /bin/bash'

这将为您提供容器内的 bash 提示。

  • 注意:对我来说,命令是`docker exec -it &lt;docker_it&gt; /bin/bash` (3认同)

归档时间:

查看次数:

9365 次

最近记录:

6 年,9 月 前