连接FTP容器与docker-compose一起使用,而不与docker run一起使用 [英] Connecting FTP container works with docker-compose and not with docker run

查看:132
本文介绍了连接FTP容器与docker-compose一起使用,而不与docker run一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要从my_go_app容器连接FTP服务器.当我从docker compose上执行此操作时,可以使用以下命令进行操作:

I need to connect FTP server from my_go_app container. When I do it from it from docker compose, I can do it with:

apk add lftp
lftp -d ftp://julien:test@ftpd-server

并且连接良好

但是当我尝试通过 docker run 运行容器时,我无法再连接到FTP服务器

but when I try to run my container via docker run, I cannot connect anymore to FTP server

这是我使用的命令:

docker run --name my_go_app --rm -v volume:/go my_go_app:exp --network=my_go_app_network --env-file ./test.env

这是正在工作的docker-compose.yml

Here is the working docker-compose.yml

version: '3'

services:
  my_go_app:
    image: my_go_app:exp
    volumes:
      - ./volume:/go
    networks:
      my_go_app_network:
    env_file:
      - test.env

  ftpd-server:
    container_name: ftpd-server
    image: stilliard/pure-ftpd:hardened
    ports:
      - "21:21"
      - "30000-30009:30000-30000"
    environment:
      PUBLICHOST: "0.0.0.0"
      FTP_USER_NAME: "julien"
      FTP_USER_PASS: "test"
      FTP_USER_HOME: "/home/www/julien"
    restart: on-failure
    networks:
      my_go_app_network:

networks:
  my_go_app_network:
    external: true

我将网络添加为外部网络,并使用以下命令手动创建了该网络:

I added the network as external and created it manually with:

 docker network create my_go_app_network

现在看来,my_go_app是默认网络的一部分:

Now it appears that my_go_app is part of the default network:

my_go_app git:(tests) ✗ docker inspect my_go_app -f "{{json .NetworkSettings.Networks }}"         
{"bridge":{"IPAMConfig":null,"Links":null,"Aliases":null,"NetworkID":"62b2dff15ff00d5cd56c966cc562b8013d06f18750e3986db530fbb4dc4cfba7","EndpointID":"6d0a81a83cdf639ff13635f0a38eeb962075cd729181b7c60fadd43446e13607","Gateway":"172.17.0.1","IPAddress":"172.17.0.2","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:11:00:02","DriverOpts":null}}


➜  my_go_app git:(tests) ✗ docker network ls
  NETWORK ID          NAME                DRIVER              SCOPE
  62b2dff15ff0        bridge              bridge              local
  f33ab34dd91d        host                host                local
  ee2d604d6604        none                null                local
  61a661c82262        my_go_app_network      bridge              local

我想念什么?

推荐答案

您的网络 my_go_app_network 应该声明为外部",否则compose将创建一个名为" project_name _my_go_app_network".因此,您的go应用与ftp服务器不在同一个网络中.

Your network my_go_app_network should be declared as "external", otherwise compose will create a network called "project_name_my_go_app_network". Therefore your go app was not in the same network with the ftp server.

(我想您是手动创建的 my_go_app_network ,所以您的 docker run 不会引发任何未找到的网络错误.)

(I guess you have created my_go_app_network manually so your docker run did not throw any network not found error.)

编辑

您将参数的顺序错误.映像名称必须是最后一个,否则它们将被视为容器的命令".尝试

You put the arguments in the wrong order. Image name has to be the last one, otherwise they are considered as "commands" for the container. Try

docker run --name my_go_app --rm -v卷:/go --network = my_go_app_network --env-file ./test.env my_go_app:exp

这篇关于连接FTP容器与docker-compose一起使用,而不与docker run一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆