连接FTP容器与docker-compose一起使用,而不与docker run一起使用 [英] Connecting FTP container works with docker-compose and not with 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屋!