echo "deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse" > /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse" >> /etc/apt/sources.list
这样就可以替换为国内的阿里源,当然也可以替换为其他的源。这里有个问题就是源和镜像对应版本的问题,xenial对应16.04(LTS),Ubuntu Bionic 18.04 (LTS),Ubuntu Focal 20.04 (LTS),Ubuntu Groovy 20.10,最好这样,是否不对应也可以并没有尝试过。
也可以在Dockerfile文件中加入替换sources.list的命令来实现源的替换
ADD sources.list /etc/apt/sources.list
sources.list填写国内的源,例如阿里源
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
sudo docker run -it --name shuailing --ipc=host --gpus all -v /mnt:/mnt hub.phigent.io/dlp/pytorch/pytorch:1.11.0-cuda11.3-cudnn8-devel-mmflow-v2-cuda bash
sudo docker run -it -v /mnt:/mnt -v $your_path/:/home/docker hub.phigent.io/ti/edgeai-tidl-tools-08_04_00_06.x86:v1.5
sudo docker run -it --user `id -u $USER`:`id -g $USER` --ipc=host --gpus all -v /mnt:/mnt -v $PWD:$PWD -w $PWD hub.phigent.io/dlp/pytorch/pytorch:1.11.0-cuda11.3-cudnn8-devel-mmflow-v3-mmseg-cmake bash
docker run -it -v /home/cheng.huang/gitPro/:/home/docker -v /mnt/:/mnt hub.phigent.io/avp/cuda11.3.1-trt8.0.3.4-ros2-desktop-ubuntu20.04:v2.0
docker ps #列出正在运行的容器
docker ps -a #列出所有的容器,运行和非运行的
docker rm -f ID #删除容器
sudo docker stop #停止容器
sudo docker attach 容器ID/容器名 #进入正在运行中的容器
exit #退出容器,或者ctrl+D,启动容器docker start 容器ID/容器名
docker start 容器ID/容器名 #启动容器
docker #查看所有的docker命令
docker CMD --help #查看命令CMD的具体用法
docker rm -f ID #删除容器
docker attach ID #进入后台运行的容器,exit推出容器终端后,容器即停止,如果重启容器时没有进入到交互式shell,可以试试这个命令
docker exec ID #类似docker attach ID, exit推出容器终端后,容器不停止
docker exec -it containerID /bin/bash
sudo docker start containerName #重启已经停止的容器
docker top containerName #查看容器内的所有进程
RUN: docker build时运行
CMD:docker run时默认运行的应用程序(只能一个,若多个只最后一个有效,故若docker run有参数,则CMD被覆盖)
ENTRYPOINT:与CMD的区别时不会被docker run的参数覆盖(且docker run的参数会传到ENTRYPOINT中,同样只最后一个生效)
#FROM nvidia/cuda:8.0-cudnn6-devel-ubuntu16.04
FROM hackeryx/ubuntu:16.04
MAINTAINER zhaoshuailing
# environment variables
ARG DEBIAN_FRONTEND=noninteractive
# 替换源
#COPY sources.list /etc/apt/sources.list
RUN mkdir /work && mkdir /software/
COPY testDocker.py /work
WORKDIR /work/ #work后的‘/’必须有,否则找不到应用程序。该命令使得容器运行时,直接到/work/目录下,所以有该命令,后面执行时应用时就变成了python testDocker.py,没有该命令执行应用时就变成了python /work/testDocker.py 否则找不到testDocker.py
#ENTRYPOINT python testDocker.py
docker build -t helloworld:v1 ./
docker images
stable
repository and the GPG key) distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
nvidia-docker2
package (and dependencies) after updating the package listing) sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
如果成功会显示显卡信息
一些参考资料
安装nvidia-docker2.0的详细步骤(推荐)
中文博客参考
已经弃用的官网文档
Docker(三):Dockerfile 命令详解 - 纯洁的微笑 - 博客园
打开/etc/apt/sources.list,把相应的行注释掉就可以了,因为这两个地方指定了同一个源,所以重复了
将用户改成非root用户操作,按照官网步骤就可以,如果还是出错,就reboot机器
查看docker服务活docker守护进程是否启动:
systemctl status docker
若未启动,则启动docker服务:
sudo systemctl start docker
The following packages have unmet dependencies: vim : Depends: libpython3.5 ,依赖什么就装什么,一直安装下去,虽然麻烦但可以解决问题
sudo docker start containerName #重启已经停止的容器
sudo docker attach containerName #如果重启容器时没有进入到交互式shell,可以试试这个命令
制作镜像时需要指定自己的账户docker hub,这里必须是自己的账户zhaosl为前缀,否则上传不成功
sudo docker build -t="zhaosl/static_web:v05" .
登录自己的账户,必须登录,因为登录成功后会在本机生成一个密码文件/home/zhaosl/.docker/config.json.,push的时候会使用到,不登录push会出错
sudo docker login
查看生成的images
docker images
上传镜像
sudo docker push zhaosl/static_web:v05
sudo docker rmi zhaosl/static_web:v03
如果报错类似什么容器在使用镜像,无法删除Error response from daemon: conflict: unable to remove repository reference "jamtur01/static_web:v03" (must force) - container 3de555f7b1fb is using its referenced image 880678979b3d,那么就需要把使用该镜像的所有容器删除后再删除该镜像,根据提示的容器id,3de555f7b1fb,进行删除
sudo docker rm 3de555f7b1fb
然后重新删除镜像,途中可以使用docker ps -a和docker images查看所有的容器和镜像,以及是否删除成功
可能是docker服务没有起来,所以需要重启docker服务sudo systemctl start docker
使用Docker搭建Anaconda Python3.6的练习环境_SnailTyan的博客-CSDN博客,这其中可能需要修改的地方为文章中是网址下载安装的,a.我们可以下载 Anaconda3-5.0.1-Linux-x86_64.sh下载后add(拷贝)到docker上下文中安装,b.它指定的安装目录/opt/conda,我们可以默认目录即/root/Anaconda3
首先编写完整的dockerfile文件,里面安装完成自己需要的环境和工具,然后编译生成镜像,打包,拷贝到需要运行的服务器上,解压并加载镜像,运行该docker容器,这样这个容器就是一个类似虚拟机一样的东西了,完全隔离的环境供自己使用,最后在客户端ssh向连接服务器一样连接该容器就可以了完整的dockerfile文件的内容在 百度网盘->工作->python_project->dockerLearning->Dockerfile,操作步骤的命令如下
sudo docker build -t="zhaosl/pytorch1.5:latest" .# 生成镜像
sudo docker save zhaosl/pytorch1.5:latest | gzip > zhaosl_pytorch1.5.tar.gz #打包镜像
scp zhaosl_pytorch1.5.tar.gz [email protected]:/home/zhaosl/python_project #拷贝到服务器上
gunzip -c zhaosl_pytorch1.5.tar.gz | sudo docker load #解压并加载镜像
sudo docker run --ipc=host -p 49154:22 -it zhaosl/pytorch1.5:latest #在服务器上运行容器
ssh -X [email protected] -p 49154 #在客户端上连接
解释1,解释2
docker视频教程
Docker 命令大全 - Docker 教程 - 菜鸟学堂-脚本之家