<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p></p>
讯享网
注:本部分内容参照自Ubuntu - Docker — 从入门到实践
卸载旧版本
讯享网
使用脚本自动安装
在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Ubuntu 系统上可以使用这套脚本安装,另外可以通过 选项使用国内源进行安装:
执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 的稳定(stable)版本安装在系统中。
讯享网
默认情况下,命令会使用与引擎通讯。而只有用户和 组的用户才可以访问 引擎的 。出于安全考虑,一般 Linux 系统上不会直接使用 用户。因此,更好地做法是将需要使用 的用户加入 用户组。
- 建立 组:
- 将当前用户加入 组:
讯享网
退出当前终端并重新登录,进行如下测试。
若能正常输出以上信息,则说明安装成功。
使用命令,下面给出几个例子
讯享网
配置文件
先用在当前目录创建一个文件,然后用编辑文件:
注释:
- :指定一个基础镜像 (base image);
- :指定这个命令之后的所有Docker命令 (比如, 等等)的工作路径 (working directory),如果指定的路径在镜像中不存在则会自动创建;
- :复制文件,格式为,这里使用表示指定下的所有文件;
- :在创建镜像时运行命令;
- :指定当Docker容器运行起来之后要执行的命令
创建镜像
讯享网
注释:
- :,指的是要给镜像起的标签名,这里为,名字必须要是小写;
- :表示在当前路径下搜索文件;
具体参见5.2的容器导入部分。
使用命令便可创建容器。
此时需要额外设置工作路径等。
解释:这会创建一个名为的容器,并将它存储在物理机的 目录下。此外,该容器会将主机的 端口映射到容器的 端口上。其中
- 表示开启 GPU;
- (,数据卷) 表示挂载一个主机目录 。 (慎用)。这里将物理机的路径映射为容器中的路径。可以把它当做是一个在物理机和不同容器中共享的文件夹,比如在一个容器中修改了的数据,会同时反应在其它容器上。也可以使用创建数据卷,这里因为我已经直接指定了参数,是会默认创建的,因此无需再一个;
- 表示指定容器工作目录 (与中的一样), 表示映射主机端口到容器端口();
- 表示指定容器名称;
- 中的表示即后台运行, () 表示保留交互界面,表示分配一个虚拟的终端 (allocate a pseudo-TTY),经常与一起出现,合起来就是“以交互的方式打开终端”;
- 为前面用拉取的镜像名字。
- :指文件的编译地址。
此时无需设置工作路径以及挂载路径等。
讯享网
其中慎加,可能会导致容器中没有文件; 可以不用加了。
示例:
参考自How to run JupyterLab on Docker - DEV Community
其中:
指的是设定容器的环境变量,其中是让容器可使用,是设定的,在后面登录的时候要用,指的是设定容器保存在物理机上的地址,指的是将容器的8899端口(后面的,这个是要在文件中设定的)映射到物理机的8899端口(前面的)。设定的是交换区内容大小,这个会影响等的性能(调整容器shm大小)。是获取容器的权限,此时可以用权限操控容器。
设定好之后,就可以用远程连接了,注意,这里面的换成容器所挂载的物理机的地址。也是物理机的端口号,但因为我们将物理机的端口映射到容器的端口了,而容器的端口被用于的远程连接服务,因此意味着连物理机的等价于连接容器的。是前面设置的决定的。
- 先启动容器:
- 接着进入容器:
讯享网
其中为文件的编译地址,与前面一致。
本节内容主要参考自利用 commit 理解镜像构成。
当我们运行一个容器的时候(如果不使用卷的话),我们做的任何文件修改都会被记录于容器存储层里。而 Docker 提供了一个 命令,可以将容器的存储层保存下来成为镜像。换句话说,就是在原有镜像的基础上,再叠加上容器的存储层,并构成新的镜像。以后我们运行这个新镜像的时候,就会拥有原有容器最后的文件变化。
的语法格式为:
我们可以用下面的命令将容器保存为镜像:
讯享网
其中 是指定修改的作者,而 则是记录本次修改的内容。这点和 版本控制相似,不过这里这些信息可以省略留空。
我们可以在 中看到这个新定制的镜像。我们还可以用 具体查看镜像内的历史记录。
参考自导出和导入 - Docker — 从入门到实践
导出容器
如果要导出物理机某个容器,可以使用 命令。
这样将导出容器快照到物理机文件。
导入容器快照
注:下面用到的根据自己情况修改成其他名字
可以使用 从容器快照文件中再导入为镜像,例如
讯享网
这里的命令是ubuntu中用来显示文件内容用的,这里必须要用。或者也可以用
之后可以用查看镜像,但查看容器是看不到的
此外,也可以通过指定 URL 或者某个目录来导入,例如
讯享网
注:用户既可以使用 来导入镜像存储文件到物理机镜像库,也可以使用 来导入一个容器快照到物理机镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。
在此之前需要先安装好必备软件。具体过程见Linux使用ssh服务并保持长时间连接进入容器。
实际服务器环境下机器是很少重启的,所以最好再手动配置一个启动脚本。
讯享网
添加以下内容:
赋予权限:
讯享网
添加到文件中去:
讯享网
远程连接是重点,这里不是容器内部的而是物理机的。此外,指的是容器中用户的名字,而非物理机中用户的名字,千万不要搞混了。
- 表示每隔20秒发送一次信息告诉服务器我还在线。
- 是端口号,指的是在使用的时候物理机映射到容器中的,比如的话,可以用
在物理机看容器端口映射。
在输入密码的时候,填的是容器的密码,而不是物理机的密码,一定要注意!
- 使用仍然会报错,无需理会
讯享网
解决TensorFlow出现的Could not load dynamic library ‘libcurand.so.10‘等类似的问题_三只佩奇不结义的博客-CSDN博客
本节内容参考自nvidia-container-toolkit,可解决。注意,下面的命令都是在物理机上执行的,而非在容器里。

- 1、设置软件包存储库和密钥 (直接复制粘贴过去即可):
- 2、 在更新软件包列表后安装 软件包(和依赖项):
讯享网
- 3、配置以识别 :
- 4、在设置默认运行时后重新启动以完成安装:
讯享网
之后便可继续运行了。
- 获取容器ID:一般使用 命令查看 进程。但是,由于这个进程没有正常启动,所以,此时没有显示出来。因此,改用 命令,其中表示显示最新创建的容器 ()。
- 删除对应容器:拿到了容器ID,现在只需要执行 指令删除容器即可。
- 停止对应容器:同理,只需执行或者便可关闭容器。
可以用指令查看物理机中存储相关文件的文件夹的大小。接着运行以下指令便可清除不必要的文件:
讯享网
- 下载等必备基础软件
- 下载并配置
讯享网
参考自Docker----如何更改docker镜像的存储路径_docker修改镜像存储位置_redrose2100的博客-CSDN博客
- 首先查看当前docker镜像默认的存储位置,如下命令
一般情况下,在没有特意设置的情况下,默认的保存路径为 。
- 关闭所有运行的docker容器
讯享网
- 停止docker服务
- 在新新增的磁盘挂载点上新建目录,并将原有的docker容器和镜像全部拷贝过来,比如这里新增磁盘的挂载点为 (这个看自己需求,可自行设置,比如我的为),则参照如下命令操作
讯享网
- 设置docker的配置文件,并指定存储路径,如果文件不存在则直接创建一个
添加如下内容
讯享网
- 然后重启docker服务
至此就完成了docker容器和镜像默认路径的修改。
方法1: 修改国内镜像源
- 1、修改daemon配置文件:vim /etc/docker/daemon.json
讯享网
这里推荐几个镜像源
讯享网
修改完daemon.json后重启docker
方法2: 增加加速器
- 1、修改daemon配置文件:
讯享网
修改完daemon.json后重启docker
这是我拉取,然后创建容器的命令,创建完后可以配置直接远程该镜像,端口为
讯享网
你的容器打包好后,在新系统创建你的容器,需要
- 改变拉取镜像名:
- 改变容器存储在系统上的文件夹:
- 改变你想开通的端口号:
具体解释:
1、首先使用以下命令拉取 镜像:
这将会从 上下载最新版本的 镜像,并在物理机存储。
2、接下来,使用以下命令创建容器:
讯享网
这会创建一个名为 的容器,并将它存储在 目录下。此外,该容器会将主机的 端口映射到容器的 端口上。其中 表示开启 GPU, 表示挂载一个主机目录, 表示指定容器工作目录, 表示映射主机端口到容器端口, 表示指定容器名称。
3、启动容器:
这会启动名为 的容器。
4、进入容器:
讯享网
这会打开一个新的终端,进入正在运行的容器 中。
5、启动 服务:
这会启动容器内的 服务。
完成以上步骤后,就可以使用 等工具通过远程连接访问容器,开发和运行代码了。注意,在使用 配置远程连接时,需要指定容器的 地址和端口号。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/187191.html