上传压缩包到docker容器

在虚拟机docker中安装ubuntu系统,运行ubuntu镜像生成一个容器,上传本地的压缩包到容器中报错问题

img

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/893847
  • 这篇博客你也可以参考下:docker 容器中判断两个容器是否可以进行通信
  • 除此之外, 这篇博客: Docker实现上线部署2048小游戏中的 三.docker中ubuntu镜像 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 1.安装docker和依赖包(之前已经安装完成)
    2.往docker中导入ubuntu镜像

    [root@server1 ~]# ls
    docker  game2048.tar  nginx.tar  rhel7.tar  ubuntu.tar
    [root@server1 ~]# docker load -i ubuntu.tar 
    56abdd66ba31: Loading layer  196.8MB/196.8MB
    9468150a390c: Loading layer  208.9kB/208.9kB
    11083b444c90: Loading layer  4.608kB/4.608kB
    5f70bf18a086: Loading layer  1.024kB/1.024kB
    Loaded image: ubuntu:latest
    

    3.查看docker中的镜像

    [root@server1 ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    game2048            latest              19299002fdbe        2 years ago         55.5MB
    ubuntu              latest              07c86167cdc4        3 years ago         188MB
    

    4.运行ubuntu

    [root@server1 ~]# docker run -it --name vm2 ubuntu
    

    5.docker中与物理机共用一个内核

    root@665db1d5ab4a:/# uname -r 
    3.10.0-514.el7.x86_64
    [root@server1 ~]# uname -r
    3.10.0-514.el7.x86_64
    

    6.查看docker中ubuntu系统的ip是:172.17.0.3

    在这里插入图片描述
    9.docker所在虚拟机server1有docker0。IP是:172.17.0.1
    在这里插入图片描述
    10.安装bridge-utils

    [root@foundation8 ~]# which brctl
    /usr/sbin/brctl
    [root@foundation8 ~]# rpm -qf /sbin/brctl 
    bridge-utils-1.5-9.el7.x86_64
    [root@server1 ~]# yum install -y bridge-utils-1.5-9.el7.x86_64
    

    11.查看

    [root@server1 ~]# brctl show
    bridge name	bridge id		STP enabled	interfaces
    docker0		8000.0242f32e806c	no		vethb74fb69
    							vethc8b42c5
    [root@server1 ~]# sysctl -a | grep ip_for
    net.ipv4.ip_forward = 1
    net.ipv4.ip_forward_use_pmtu = 0
    

    12.查看端口转发,数据只能从server1(docker)80端口进入,转发到172.17.0.2的80端口

    [root@server1 ~]# iptables -t nat -nL
    

    在这里插入图片描述
    13.查看docker运行状态

    [root@server1 ~]# docker ps
    

    在这里插入图片描述

  • 您还可以看一下 张晨光老师的 docker技术入门教程 课程中的 手动制作docker镜像小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    在上传压缩包到Docker容器时,需要注意以下问题:

    1. 确认本地压缩包所在位置,可以使用命令pwd查看当前位置。
    2. 确认需要上传的容器ID,可以使用命令docker ps查看当前正在运行的容器列表。
    3. 确认上传至容器的目标位置,可以使用命令docker exec -it <容器ID> bash进入容器内部,再使用lspwd等命令查看目标位置。
    4. 确认上传命令格式,使用命令docker cp <本地文件路径> <容器ID>:<容器目标路径>上传到容器内部。

    可能的错误有: 1. 本地文件路径错误或不存在。 2. 容器ID错误或不在运行状态。 3. 容器目标路径错误或不存在。

    解决方案:

    假设本地压缩包在/home/user/data.tar.gz,容器ID为5f83b8d5e9d9,上传至容器内的目标路径为/data,则可以使用以下命令上传:

    docker cp /home/user/data.tar.gz 5f83b8d5e9d9:/data/data.tar.gz
    

    如果目录不存在,则需要先创建目录再上传:

    docker exec -it 5f83b8d5e9d9 bash
    mkdir /data     # 如果需要创建/data目录
    exit            # 退出容器内部
    docker cp /home/user/data.tar.gz 5f83b8d5e9d9:/data/data.tar.gz
    

    这样就可以将本地的data.tar.gz上传到容器内的/data目录下了。

docker cp应该识别不了容器里面的用户根目录,你可以使用全路径试试

docker容器用全路径