如何使用docker-compose创建服务

时间:2018-05-16 09:16:45

标签: docker docker-compose

这是我的码头撰写文件

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/

现在,当我运行docker-compose up时,我可以进入任何获取创建的服务

4 个答案:

答案 0 :(得分:4)

标准机制不是ssh进入容器,而是使用docker exec连接到容器。给定3cdb7385c127之类的容器ID,您可以使用

连接(也称为ssh
docker exec -it 3cdb7385c127 sh

或完整登录shell,如果您在容器中有可用的bash

docker exec -it 3cdb7385c127 bash -l

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

答案 1 :(得分:2)

  1. 做&{39; docker ps'获取容器的名称和泊坞窗ID。
  2. 做&{39; docker exec <docker_id> -it /bin/bash&#39;
  3. 这将在容器内给你bash提示。

答案 2 :(得分:1)

如果在docker-compose.yaml文件中指定container_name,则可以使用docker exec命令登录。

示例:

django:
    container_name: django
    more_stuff: ...

然后,登录到正在运行的docker-compose:

docker exec -it django /bin/bash

这对我来说效果更好,因为我不需要检查当前的运行ID,而且很容易记住。

答案 3 :(得分:0)

虽然使用docker命令也可以,但是最简单的方法(不需要找出容器的ID)是使用docker-compose run子命令,例如:

service="web"
docker-compose run $service /bin/bash