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生成的任何服务吗
标准机制不是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重定向到主机上的某个端口。
最简单的方法是运行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合适的答案,因为它会在我的测试中启动一个容器。
docker ps' 以获取容器的名称和 docker id。docker exec <docker_id> -it /bin/bash'这将为您提供容器内的 bash 提示。
| 归档时间: |
|
| 查看次数: |
9365 次 |
| 最近记录: |