Docker教程-Linux版 docker常见指令、dockerfile文件写法、安装nvidia-docker

2022-07-01 12:26:35

错误修复写在前,怕忘了

2020-10-2103:35:28.323894:Itensorflow/stream_executor/platform/default/dso_loader.cc:48]Successfullyopeneddynamiclibrarylibcudart.so.10.12020-10-2103:35:28.398097:Ftensorflow/python/lib/core/bfloat16.cc:705]Checkfailed:PyBfloat16_Type.tp_base!=nullptr

到时再改吧,目前线本地跑跑看

更改docker 储存的地方 (<,>)这个部分先不用看,部署完docker,等用到的时候就会来看了,直接从 1.安装命令开始吧!!!

如果自己的磁盘被顶掉了,可能是添加的docker路径引起的,只要删掉就好了

独立的问题ubuntu修改docker镜像位置:1.cd/etc/systemd/system/multi-user.target.wants2.sudogeditdocker.service3.ExecStart=/usr/bin/dockerd--graph=/media/astonmatin/datasets/docker-Hfd://--containerd=/run/containerd/containerd.sock4.systemctldaemon-reload5.systemctlrestartdocker

Docker教程-Linux版

注意事项
以Linux-Centos7例:

1.如果您不熟悉docker,请参考如下链接,或参考百度

https://www.marsbigdata.com/community/details?id=11531140003328

2.所有的命名方式以及文件目录,请严格按照要求进行命名及构建目录(以下仅是docker使用的示例)

1.安装命令

>>> yum install docker

在这里插入图片描述在这里插入图片描述

2.安装成功查看Docker启动版本

>>> docker -v

在这里插入图片描述

3.启动docker

>>> service docker start

在这里插入图片描述

也可以设置开机启动docker 命令:systemctl enable docker

4.创建一个新的文件夹并进入到文件夹下(任意位置)

>>> mkdir docker
>>> cd docker

在这里插入图片描述

5.将代码移动到docker文件夹下并查看

>>> ls

在这里插入图片描述

6.生成项目依赖

1、安装pipreqs,它可以实现只导出当前项目运行所依赖的包,环境中多余的库就不会导出,在迁移环境时候很少方便。

pip3install pipreqs

2、进入项目的根目录然后执行下面命令,等待一会就会生成一个requirements.txt文件,里面是项目所依赖的所有库包:

pipreqs ./ --encoding=utf-8

3、在同级路径下可以看到生成的requirements.txt文件,查看文件类似下面的:

requirements.txt

matplotlib>=3.2.2
numpy>=1.18.5
opencv-python>=4.1.2
pillow
PyYAML>=5.3
scipy>=1.4.1
tensorboard>=2.2
torch>=1.6.0
torchvision>=0.7.0
tqdm>=4.41.0

7.编写dockerfile

>>> vim dockerfiler

在这里插入图片描述
编写示例:

由于基础镜像中将cuda10.0升级为10.1,请选手在构建镜像时,先将之前构建的基础镜像删除重新构建

# 拉取基础镜像,基础镜像基于cuda10.1,基础镜像种已经包含了python3 ,pip3
FROM swr.cn-east-3.myhuaweicloud.com/algorithm-seed/algorithm-base# 2、执行创建 project文件夹
RUNmkdir /project     //project 指的是当前目录下的代码# 3、下面这段命令指的是 将你的代码 放到你构建的镜像 的 project目录下
copy project /project# 4、由于基础镜像无法覆盖选手代码项目中的全部依赖,所以选手需要将上面执行得到的requirement.txt执行,安装其它依赖# 4.1、进入到存放requirements.txt 的目录
WORKDIR /project/# 4.2、执行下载requirements.txt中的依赖
RUN pip3install -r requirements.txt# 5、cd 到project主程序目录下
WORKDIR /project/code# 6、指定容器运行时的动作
CMD["python","main.py"]
>>>cat dockerfile查看dockerfile

在这里插入图片描述

8.构建镜像

>>> docker build -ttest.

创建镜像(注:-t 表示为该镜像起名称,另外,构建命令后面有个英文实心点,表示当前目录。)

开始构建:

test 指镜像名,这里只做示例,选手请根据要求名称构建镜像

指当前目录下(dockerfile)

在这里插入图片描述
在这里插入图片描述
构建成功:
在这里插入图片描述

9.成功之后运查看镜像

>>>docker images

在这里插入图片描述

10.运行镜像

>>> docker runtest

在这里插入图片描述
启动方式这里只做示例

11.导出镜像

请注意:一定要使用 docker save 命令来导出镜像

>>> docker save -o 要保存的文件名 要保存的镜像

或者

>>> docker save -o 要保存的文件名 IMAGE ID

(文件过大,需要等待一段时间)
在这里插入图片描述

12.使用Xftp等工具、方法将test.tar导出,提交test.tar

在这里插入图片描述




安装nvidia-docker (虽迟但到)

#Ifyouhavenvidia-docker1.0installed:weneedtoremoveitandallexistingGPUcontainersdockervolumels-q-fdriver=nvidia-docker|xargs-r-I{}-n1dockerps-q-a-fvolume={}|xargs-rdockerrm-fsudoapt-getpurge-ynvidia-docker#Addthepackagerepositoriescurl-s-Lhttps://nvidia.github.io/nvidia-docker/gpgkey|\sudoapt-keyadd-distribution=$(./etc/os-release;echo$ID$VERSION_ID)curl-s-Lhttps://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list|\sudotee/etc/apt/sources.list.d/nvidia-docker.listsudoapt-getupdate#Installnvidia-docker2andreloadtheDockerdaemonconfigurationsudoapt-getinstall-ynvidia-docker2sudopkill-SIGHUPdockerd#(插入一条)设置默认运行时后,重新启动Docker守护程序以完成安装:sudosystemctlrestartdocker#Testnvidia-smiwiththelatestofficialCUDAimagedockerrun--runtime=nvidia--rmnvidia/cuda:9.0-basenvidia-smi
  1. 删除容器
    使用如下命令可以查看当前正在运行的容器
dockerps

对于已退出的容器,可以使用如下命令进行查看:

dockerps-a

删除docker中的容器可以使用如下命令:

dockerrm容器id
  1. 删除镜像
    删除docker中的镜像,我们可以使用如下命令:
dockerrmi镜像id

Docker使用说明

1.Docker下载

1.1官网

docker官网:http://www.docker.comdocker中文网站:https://www.docker-cn.com/

1.2仓库

Docker镜像库:

DockerHub官网:https://hub.docker.com/国内镜像:https://hub.daocloud.io/

2.Docker安装

2.1环境说明

官方建议使用CentOS 7及以上

2.2安装Docker

安装命令:yuminstalldocker查看Docker启动版本docker-v启动docker:servicedockerstart停止docker:servicedockerstop重启docker:servicedockerrestart查看docker状态:servicedockerstatus开机启动:systemctlenabledocker查看docker概要信息:dockerinfo查看docker帮助文档:docker--help

3.Docker镜像

3.1镜像常用命令

列出docker下的所有镜像:dockerimages搜索镜像eg:dockersearchpython拉取镜像:dockerpullXXXX查看所有正在运行容器:dockerps停止正在运行的容器:dockerstopcontainerId//containerId是容器的ID查询所有容器:dockerps-a查看所有容器IDdockerps-a-q启动所有停止的容器:dockerstart$(dockerps-a-q)停止所有容器:dockerstop$(dockerps-a-q)删除所有容器:dockerrm$(dockerps-a-q)镜像打tag:dockertag当前镜像名:TAG仓库地址/镜像名称:TAG镜像上传仓库:dockerpush仓库地址/镜像名称:TAG进入容器:dockerexec-it[containerId]/bin/sh执行命令:dockerexec[containerId]-it[command]容器控制台日志:dockerlogs-f[containerId]复制文件至容器:dockercp/目录/文件名容器ID:容器目录复制容器文件至本地:dockercp容器ID:文件路径本地路径

3.2删除镜像

dockerrmi-f镜像ID

4.Docker容器操作

查看正在运行容器:dockerps查看所有的容器:dockerps-a查看停止的容器:dockerps-fstatus=exited重启容器:dockerrestart容器ID或者容器名强制停止容器:dockerkill容器ID或者容器名文件拷贝:dockercp需要拷贝的文件或目录容器名称:容器目录删除指定的容器:dockerrm容器ID或者容器名删除所有容器:dockerrmdockerps-a-q进入容器:dockerexec-it容器IDbash

5.DockerFile 示例 ★

当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。1.从已经创建的容器中更新镜像,并且提交这个镜像2.使用Dockerfile指令来创建一个新的镜像Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。DockerFile是描述镜像的一种文件!Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

5.1Dockerfile常用指令

指令描述指令描述
FROM构造的新镜像是基于哪个镜像例如:FROM centos:v1COPY拷贝文件或者目录到镜像,用法同ADD例如:COPY ./startup.sh /startup.sh
MAINTAINER维护者信息例如:MAINTAINER yanglinENTRYPOINT运行容器时执行的shell命令例如:ENTRYPOINT ["/bin/bash","-c","/startup.sh"]ENTRYPOINT /bin/bash -c ‘/startup.sh’
RUN构建镜像时运行的shell命令例如:RUN [“yum”, “install”, “http”]RUN yum install httpdVOLUME指定容器挂载点到宿主机自动生成的目录或者其他容器例如:VOLUME ["/path/to/dir"]
CMD运行容器时执行的shell命令例如:CMD ["-c","/startup.sh"]CMD ["/usr/sbin/sshd","-D"]CMD /usr/sbin/sshd -DUSER为RUN,CMD,ENTRYPOINT执行命令指定运行用户例如:USER www镜像构建完成后,通过docker run运行容器时,可以通过-u参数来覆盖所指定的用户。
EXPOSE指定于外界交互的端口,即容器在运行时监听的端口EXPOSE 8081 8082WORKDIR为RUN,CMD,ENTRYPOINT,COPY和ADD设置工作目录例如:WORKDIR /data
ENV设置容器内环境变量例如:ENV MYSQL_ROOT_PASSWORD 123456HEALTHCHECK健康检查HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/
ADD拷贝文件或者目录到镜像,如果是URL或者压缩包会自动下载或者自动解压例如:ADD hom* /mydir/ ADD test relativeDir/ARG在构建镜像时指定一些参数例如:FROM centos:6ARG age=100

形象说明:

FROM它的妈妈是谁(基础镜像)
MAINTAINER告诉别人,你创造了它(维护者信息)
RUN你想让它干啥(把命令前面加上RUN
ADD往它肚子里放点东西(COPY文件,会自动解压)
WORKDIR我是cd(当前工作目录)
VOLUME给我一个存放行李的地方(目录挂载)
EXPOSE我要打开的门是啥(端口)
RUN奔跑吧

5.2 构建步骤

编写Dockerfile文件----->编写DockerFile文件dockerbuild----->构建镜像dockerrun----->使用镜像启动容器DockerFile就是镜像的描述文件

5.3 dockfile

FROMswr.cn-east-3.myhuaweicloud.com/algorithm-seed/algorithm-baseRUNmkdir/appcopyquartz.py/appWORKDIR/appCMD["python","quartz.py"]

5.4 docker build

#python-test-1镜像名.当前目录dockerbuild-tpython-test-1.

5.5 docker run

运行镜像dockerrun-d--name=python-test-1python-test-1

5.6.镜像导出

#例如:dockersave-o要保存的文件名要保存的镜像dockersave-opython-test.tarpython-test-1

知乎https://www.marsbigdata.com/competition/details?id=11973974199808

  • 作者:Astonc
  • 原文链接:https://blog.csdn.net/weixin_41063476/article/details/109119829
    更新时间:2022-07-01 12:26:35