下面介绍一些docker的常用命令。如果是sudo权限,请自行在docker和脚本前加上。这里为了显示简介,就没有加。
1 docker pull(拉镜像)
docker images # 显示所有docker镜像
docker pull nvidia/cuda:8.0-cudnn7-devel # 拉镜像
2 docker run(运行容器)
nvidia-docker run -it -d --name=test_docker \ # docker name
--device=/dev/nvidia0:/dev/nvidia0 \ # 指定GPU 0
--device=/dev/nvidia1:/dev/nvidia1 \
-v /data/aidata:/data \ # 指定 映射路径,前面为服务器,后面为docker
-v /data1/aidata:/data1 \
-p 18307:9096 \ # 指定 端口,前面为服务器,后面为docker
-p 18217:226 \
nvidia/cuda:8.0-cudnn7-devel /bin/bash –D 指定 镜像
(1)保存上面的脚本为 docker_run.sh。
(2)执行命令:sh docker_run.sh。
说明:
(1)用(netstat -tunlp)查看未使用的端口号。
(2)如果想从服务镜像中恢复原来的环境,而不启动工程,则需在设置中加上 --entrypoint=bash
3 docker exec(进入容器)
docker ps -a # 显示所有docker容器 ,可以看到 容器ID、容器name、对应镜像
docker exec -it xxx bash # 运行docker容器(xxx)。如果xxx是容器ID,则可以只是开头的部分字符串;如果是容器name,则需要是全程。
Ctrl-D或 exit # 退出容器
4 docker commit(封装容器为镜像)
docker commit xxx yyy:zzz # 将容器ID(xxx)打包成镜像(yyy:zzz),镜像REPOSITORY(yyy) 和 镜像TAG(zzz)
5 docker rm/rmi(删除容器和镜像)
docker stop xxx # 删除容器或镜像前需要停止容器,xxx为容器ID
docker rm xxx # 删除运行的容器(xxx)
docker rmi yyy:zzz # 删除运行的镜像(yyy:zzz)
6 docker tag(更改镜像REPOSITORY 和 TAG)
docker tag iii yyy:zzz # 更改镜像ID(iii)的REPOSITORY(yyy) 和 TAG(zzz)
7 docker push(推镜像)
(1)登录镜像仓库
docker login xxx.com.cn # 登录镜像仓库,需输入密码
(docker logout xxx.com.cn # 退出登录的镜像仓库)
(2)镜像名字更改为指定镜像库地址
docker tag iii yyy:zzz # 更改镜像ID(iii)的REPOSITORY 和 TAG
(3)push
docker push yyy:zzz # 推镜像
8 Dockerfile(封装镜像)
# ======== Base images 基础镜像
FROM nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04
# ======== 添加源
RUN sed -i "s/archive.ubuntu.com/mirrors.aliyun.com/" /etc/apt/sources.list && \
sed -i "s/security.ubuntu.com/mirrors.aliyun.com/" /etc/apt/sources.list
# ======== apt-get安装基础软件
RUN apt-get update && apt-get install --no-install-recommends -y \
build-essential \
git \
gcc \
g++ \
make \
automake \
autoconf \
bzip2 \
wget \
curl \
gawk \
libtool \
libatlas3-base \
zlib1g-dev \
python \
python-pip \
python-dev \
subversion \
unzip \
flac \
libjansson-dev \
lrzsz \
vim && \
apt-get clean all && \
rm -rf /var/lib/apt/lists/*
# =========== 安装 tensorflow、keras
# initial environment configuration
RUN apt update && \
apt install -y python-dev python-pip python-nose gcc g++ git gfortran vim
# install Acceleration library
RUN apt install -y libopenblas-dev liblapack-dev libatlas-base-dev && \
apt-get clean all && \
rm -rf /var/lib/apt/lists/*
# updata pip
RUN pip install --upgrade pip
RUN pip install -U --pre setuptools
# Install keras and related development kits
RUN pip install -U --pre numpy scipy matplotlib scikit-learn scikit-image && \
pip install -U --pre tensorflow-gpu==1.9 && \
pip install -U --pre keras
# =========== 安装 ffmpeg
# install yasm
RUN apt-get update && apt-get install --no-install-recommends -y \
yasm && \
apt-get clean all && \
rm -rf /var/lib/apt/lists/*
# install ffmpeg
RUN wget http://ffmpeg.org/releases/ffmpeg-3.1.3.tar.gz && \
tar -zxvf ffmpeg-3.1.3.tar.gz && \
cd ffmpeg-3.1.3 && \
./configure && \
make && \
make install && \
cd .. && \
rm -rf ffmpeg-3.1.3.tar.gz && \
rm -rf ffmpeg-3.1.3
# install tqdm
RUN pip install tqdm
# ========== 安装 opencv
RUN pip install opencv-python scipy
(1)保存上面的脚本到文件Dockerfile。
(2)执行下面命令,运行Dockerfile(路径为Dockerfile当前路径)。
docker build -t yyy:zzz . # 执行Dockerfile文件,生成镜像(yyy:zzz)
9 镜像 《=》 压缩文件(.tar)
docker save -o yolov5.tar ultralytics/yolov5:latest # 镜像打包成文件
docker load < yolov5.tar # 导入文件为镜像
docker load --input yolov5.tar # 同上
10 其他
docker image history yyy:zzz # 查看镜像(yyy:zzz)的之前,添加的层