我需要从my_go_app容器连接FTP服务器。 当我从docker compose上执行此操作时,可以使用以下命令进行操作:
apk add lftp
lftp -d ftp://julien:test@ftpd-server
连接良好
但是当我尝试通过docker run
运行容器时,我无法再连接到FTP服务器
这是我使用的命令:
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
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
编辑:
我将网络添加为外部网络,并使用以下命令手动创建了该网络:
docker network create my_go_app_network
现在看来,my_go_app是默认网络的一部分:
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
我想念什么?
答案 0 :(得分:1)
您的网络my_go_app_network
应该声明为“外部”,否则compose将创建一个名为“ project_name _my_go_app_network”的网络。因此,您的go应用与ftp服务器不在同一个网络中。
(我想您是手动创建的my_go_app_network
,所以您的docker run
不会抛出任何未找到的网络错误。)
编辑
您将参数的顺序错误。映像名称必须是最后一个,否则它们将被视为容器的“命令”。尝试
docker run --name my_go_app --rm -v volume:/go --network=my_go_app_network --env-file ./test.env my_go_app:exp