docker部署应用无法通过FTP上传文件

2 篇文章 0 订阅
1 篇文章 0 订阅

最近在项目中使用了FTP这个协议去做了文件传输的功能,在本地测试也是通过的,完全没有问题。但是昨天用去用docker部署的时候发生了奇怪的现象,当请求过去的时候,ftp服务器能够连接,文件夹也能够创建,但是就是上传怎么也上传不上去,也没有抛异常。一时间很疑惑。
去查看了很多博客,都说的是要启动被动模式。

    @Bean
    @Scope("prototype")
    public FTPClient getFTPClient(){
        FTPClient  ftpClient = new FTPClient();
        ftpClient.setConnectTimeout(1000*5);
        try {
            ftpClient.connect(url,port);
            ftpClient.login(username,password);
            ftpClient.setControlEncoding("utf-8");
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);//设置文件传输模式为二进制,可以保证传输的内容不会被改变
            //设置被动模式
            ftpClient.enterLocalPassiveMode();
            int replyCode = ftpClient.getReplyCode();
            if (!FTPReply.isPositiveCompletion(replyCode)){
                log.warn("连接ftp服务器失败!ftp服务器地址:" + url
                        + ", 端口:" + port + ", 初始化工作目录:" + remotedir);
                ftpClient.disconnect();
            }
        } catch (IOException e) {
            log.error("连接ftp服务器发生异常!ftp服务器地址:" + url
                    + ", 端口:" + port + ", 初始化工作目录:" + remotedir + "\n异常信息: " + e.getMessage());
        }
        return ftpClient;

最后在添加了被动模式后,重新打包,docker重新部署上传文件成功了。
强调两个点,一个是docker部署必须开被动模式。第二个是开被动模式必须在连接登录后才能开启,在连接登录之前开启是不起作用的。我一开始就是将被动模式的开启放在了前面,结果上传失败。放在了连接登录后正常运行

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Linux Docker离线安装部署需要以下步骤: 1. 在联网环境下,下载Docker安装包和相关依赖包,可以使用命令:sudo apt-get install docker.io 2. 将下载好的Docker安装包和相关依赖包复制到离线环境中的某个目录下。 3. 在离线环境中,使用命令:sudo dpkg -i 安装包名,安装Docker和相关依赖包。 4. 安装完成后,使用命令:sudo systemctl start docker,启动Docker服务。 5. 使用命令:sudo docker run hello-world,测试Docker是否安装成功。 6. 如果需要使用Docker镜像,可以将镜像文件复制到离线环境中,使用命令:sudo docker load -i 镜像文件名,加载镜像。 7. 使用命令:sudo docker run 镜像名,启动容器。 注意事项: 1. 离线环境中需要安装的Docker版本和相关依赖包版本需要与联网环境中下载的版本一致。 2. 离线环境中需要安装的Docker版本和相关依赖包版本需要与操作系统版本兼容。 3. 在离线环境中安装Docker和相关依赖包时,可能会遇到依赖关系问题,需要手动安装依赖包。 <br>### 回答2: Docker是一种容器化技术,可以在其中运行各种应用程序。如果要在没有网络连接的情况下安装和部署Docker,可以使用离线安装方式。下面是一些关于Linux Docker离线安装部署的步骤: 1. 获取Docker二进制文件 在一个连接互联网的计算机上,可以通过官方网站或镜像站点下载适用于Linux系统的Docker二进制文件,然后将它们拷贝到没有网络连接的计算机上。 2. 安装DockerDocker二进制文件拷贝到需要安装Docker的计算机上后,通过sudo命令运行dockerd,启动Docker守护进程。然后使用docker命令测试Docker是否安装成功。 3. 配置Docker 在离线安装的情况下,可能需要为Docker配置所需的镜像、存储库和网络。可以通过以下步骤来完成配置: - 创建私有Docker注册表 - 拷贝所需的Docker镜像文件到Docker注册表 - 配置Docker客户端以使用私有注册表 - 配置Docker网络 4. 运行Docker容器 在安装和配置Docker后,可以通过Docker容器运行应用程序。可以使用Dockerfile创建Docker镜像,然后利用docker run命令对容器进行操作。运行Docker容器可以采用以下命令: - sudo docker run -itd --name container_name image:tag 其中,-itd表示以交互式和后台模式运行容器,--name指定容器名称,image:tag指定所需的Docker镜像文件。 总之,对于需要在没有网络连接的计算机上安装和部署Docker的用户,可以采用离线安装方式。通过拷贝Docker二进制文件、安装Docker、配置Docker和运行Docker容器,可以轻松地完成Linux Docker离线安装部署的任务。 <br>### 回答3: Docker是一种快速创建、部署和运行应用程序的开源容器化平台,它允许用户在隔离的容器中运行应用程序。Docker的离线安装部署可以在没有网络连接或网络连接不稳定的情况下进行安装,而且具有快速、简便、可重复性好等优点。以下是基于Linux操作系统的docker离线安装部署流程: 1. 下载Docker离线安装包,比如在Docker官网上下载一个tar包。 2. 构建一个离线安装镜像,将下载的离线安装包复制到镜像中。 3. 上传镜像到目标服务器。可以使用FTP、rsync等工具将镜像复制到目标服务器。也可以借助U盘、光盘等存储介质进行传输。 4. 在目标服务器上加载镜像,使用如下命令进行加载: docker load -i /path/to/your/image.tar 5. 安装完成后,使用如下命令查看安装的版本: docker version 6. 启动Docker服务,使用如下命令启动Docker: systemctl start docker 7. 确认Docker是否已经成功安装,在终端上输入以下命令,若能正常输出,则表明Docker已经可以正常使用: docker run hello-world 8. 如果需要安装其他Docker镜像,可以使用docker pull命令进行下载。如: docker pull centos 到这里,Docker的离线安装部署就已经完成了。值得注意的是,在没有网络连接的情况下无法通过Docker Hub下载和安装Docker镜像,所以需要在离线环境下构建自己的Docker镜像进行部署使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值