通过 Dockerfile build镜像 挂载宿主机目录 及 一个有意思的bug

1 通过 Dockerfile 构建docker镜像

docker build -t transformers_docker .

   说明:   通过docker build构建镜像,参数-t表示镜像的tag,transformers_docker 表示镜像的名称,. 表示当前目录,根据当前目录查找 Dockerfile 文件。

   运行状态如下:

   通过 Dockerfile build镜像 挂载宿主机目录 及 一个有意思的bug_第1张图片

2  查看镜像列表

docker  images

3  运行镜像,并挂载宿主机路径   

nvidia-docker run -i -v  /data3/transformers_docker:/home   transformers_docker:v1.0  /bin/bash 
nvidia-docker exec -it  e0e5d799dd9c    /bin/bash

    这里简单说下挂载 宿主机目录的作用:

    我们直接启动的容器,如果说在容器内产生了一些数据,或者从宿主机上传到容器的一些东西,在该容器关闭或者重启之后,容器内的新数据均会消失。 而启动容器时挂载宿主机目录就可以解决这个问题,这个挂载的目录在 宿主机和容器内都可访问,且容器关闭不消失,比较适合用来训练模型。

    有意思的来了,我执行上面的   nvidia-docker run 命令,命令行竟然提示 run -i -v 不是docker命令.

    报错如下:    

docker: 'run -i -v' is not a docker command.
See 'docker --help'

    我原来这么执行没问题的.

    我这条命令是从编辑器 Sublime 中copy 到命令行的,怀疑里面有不可见字符搞鬼,打印出来果然有鬼,命令中存在不可见字符

    通过 Dockerfile build镜像 挂载宿主机目录 及 一个有意思的bug_第2张图片    

    我真是惊了,这个不可见字符貌似会影响基本全部命令。

    这个字符是 \xc2\xa0,是个 Non-breaking space,把这个替换成空格就ok了。

    

你可能感兴趣的:(工具)