错误修复写在前,怕忘了
2020-10-21 03:35:28.323894: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
2020-10-21 03:35:28.398097: F tensorflow/python/lib/core/bfloat16.cc:705] Check failed: PyBfloat16_Type.tp_base != nullptr
到时再改吧,目前线本地跑跑看
更改docker 储存的地方 (<,>)这个部分先不用看,部署完docker,等用到的时候就会来看了,直接从 1.安装命令开始吧!!!
如果自己的磁盘被顶掉了,可能是添加的docker路径引起的,只要删掉就好了
独立的问题 :
ubuntu 修改docker镜像位置:
1.cd /etc/systemd/system/multi-user.target.wants
2.sudo gedit docker.service
3.ExecStart=/usr/bin/dockerd --graph=/media/astonmatin/datasets/docker -H fd:// --containerd=/run/containerd/containerd.sock
4.systemctl daemon-reload
5.systemctl restart docker
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,它可以实现只导出当前项目运行所依赖的包,环境中多余的库就不会导出,在迁移环境时候很少方便。
pip3 install 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文件夹
RUN mkdir /project //project 指的是当前目录下的代码
# 3、下面这段命令指的是 将你的代码 放到你构建的镜像 的 project目录下
copy project /project
# 4、由于基础镜像无法覆盖选手代码项目中的全部依赖,所以选手需要将上面执行得到的requirement.txt执行,安装其它依赖
# 4.1、进入到存放requirements.txt 的目录
WORKDIR /project/
# 4.2、执行下载requirements.txt中的依赖
RUN pip3 install -r requirements.txt
# 5、cd 到project主程序目录下
WORKDIR /project/code
# 6、指定容器运行时的动作
CMD ["python","main.py"]
>>> cat dockerfile查看dockerfile
8.构建镜像
>>> docker build -t test .
创建镜像(注:-t 表示为该镜像起名称,另外,构建命令后面有个英文实心点,表示当前目录。)
开始构建:
test 指镜像名,这里只做示例,选手请根据要求名称构建镜像
指当前目录下(dockerfile)
构建成功:
9.成功之后运查看镜像
>>>docker images
10.运行镜像
>>> docker run test
启动方式这里只做示例
11.导出镜像
请注意:一定要使用 docker save 命令来导出镜像
>>> docker save -o 要保存的文件名 要保存的镜像
或者
>>> docker save -o 要保存的文件名 IMAGE ID
(文件过大,需要等待一段时间)
12.使用Xftp等工具、方法将test.tar导出,提交test.tar
安装nvidia-docker (虽迟但到)
# If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker
# Add the package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
# Install nvidia-docker2 and reload the Docker daemon configuration
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
# (插入一条)设置默认运行时后,重新启动Docker守护程序以完成安装:
sudo systemctl restart docker
# Test nvidia-smi with the latest official CUDA image
docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi
- 删除容器
使用如下命令可以查看当前正在运行的容器
docker ps
对于已退出的容器,可以使用如下命令进行查看:
docker ps -a
删除docker中的容器可以使用如下命令:
docker rm 容器id
- 删除镜像
删除docker中的镜像,我们可以使用如下命令:
docker rmi 镜像id
Docker使用说明
1.Docker下载
1.1官网
docker官网:http://www.docker.com
docker中文网站:https://www.docker-cn.com/
1.2仓库
Docker镜像库:
Docker Hub官网: https://hub.docker.com/
国内镜像:
https://hub.daocloud.io/
2.Docker安装
2.1环境说明
官方建议使用CentOS 7及以上
2.2安装Docker
安装命令:
yum install docker
查看Docker启动版本
docker -v
启动docker:service docker start
停止docker:service docker stop
重启docker:service docker restart
查看docker状态:service docker status
开机启动:systemctl enable docker
查看docker概要信息:docker info
查看docker帮助文档:docker --help
3.Docker镜像
3.1镜像常用命令
列出docker下的所有镜像:docker images
搜索镜像 eg:docker search python
拉取镜像:docker pull XXXX
查看所有正在运行容器: docker ps
停止正在运行的容器: docker stop containerId // containerId 是容器的ID
查询所有容器: docker ps -a
查看所有容器ID docker ps -a -q
启动所有停止的容器: docker start $(docker ps -a -q)
停止所有容器: docker stop $(docker ps -a -q)
删除所有容器: docker rm $(docker ps -a -q)
镜像打tag: docker tag 当前镜像名:TAG 仓库地址/镜像名称:TAG
镜像上传仓库: docker push仓库地址/镜像名称:TAG
进入容器: docker exec -it [containerId] /bin/sh
执行命令: docker exec [containerId] -it [command]
容器控制台日志: docker logs -f [containerId]
复制文件至容器: docker cp /目录/文件名 容器ID:容器目录
复制容器文件至本地:docker cp 容器ID:文件路径 本地路径
3.2删除镜像
docker rmi -f 镜像ID
4.Docker容器操作
查看正在运行容器: docker ps
查看所有的容器: docker ps -a
查看停止的容器: docker ps -f status=exited
重启容器: docker restart 容器ID或者容器名
强制停止容器: docker kill 容器ID或者容器名
文件拷贝: docker cp 需要拷贝的文件或目录 容器名称:容器目录
删除指定的容器: docker rm 容器ID或者容器名
删除所有容器: docker rm docker ps -a -q
进入容器:docker exec -it 容器ID bash
5.DockerFile 示例 ★
当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。
1.从已经创建的容器中更新镜像,并且提交这个镜像
2.使用 Dockerfile 指令来创建一个新的镜像
Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。DockerFile是描述镜像的一种文件!
★ Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
5.1Dockerfile常用指令
指令 | 描述 | 指令 | 描述 |
---|---|---|---|
FROM | 构造的新镜像是基于哪个镜像例如:FROM centos:v1 | COPY | 拷贝文件或者目录到镜像,用法同ADD例如:COPY ./startup.sh /startup.sh |
MAINTAINER | 维护者信息例如:MAINTAINER yanglin | ENTRYPOINT | 运行容器时执行的shell命令例如:ENTRYPOINT ["/bin/bash","-c","/startup.sh"]ENTRYPOINT /bin/bash -c ‘/startup.sh’ |
RUN | 构建镜像时运行的shell命令例如:RUN [“yum”, “install”, “http”]RUN yum install httpd | VOLUME | 指定容器挂载点到宿主机自动生成的目录或者其他容器例如:VOLUME ["/path/to/dir"] |
CMD | 运行容器时执行的shell命令例如:CMD ["-c","/startup.sh"]CMD ["/usr/sbin/sshd","-D"]CMD /usr/sbin/sshd -D | USER | 为RUN,CMD,ENTRYPOINT执行命令指定运行用户例如:USER www镜像构建完成后,通过docker run运行容器时,可以通过-u参数来覆盖所指定的用户。 |
EXPOSE | 指定于外界交互的端口,即容器在运行时监听的端口EXPOSE 8081 8082 | WORKDIR | 为RUN,CMD,ENTRYPOINT,COPY和ADD设置工作目录例如:WORKDIR /data |
ENV | 设置容器内环境变量例如:ENV MYSQL_ROOT_PASSWORD 123456 | HEALTHCHECK | 健康检查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文件
docker build -----> 构建镜像
docker run -----> 使用镜像启动容器
DockerFile就是镜像的描述文件
5.3 dockfile
FROM swr.cn-east-3.myhuaweicloud.com/algorithm-seed/algorithm-base
RUN mkdir /app
copy quartz.py /app
WORKDIR /app
CMD ["python","quartz.py"]
5.4 docker build
# python-test-1 镜像名 . 当前目录
docker build -t python-test-1 .
5.5 docker run
运行镜像
docker run -d --name=python-test-1 python-test-1
5.6.镜像导出
# 例如: docker save -o 要保存的文件名 要保存的镜像
docker save -o python-test.tar python-test-1
知乎 https://www.marsbigdata.com/competition/details?id=11973974199808