Docker Commands 1. 查看docker信息(version、info) docker version docker info docker inspect -f '' name # lookup the container's IP 2. 操作docker image $ docker images # 列出镜像 REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE <none> <none> 128d249664a0 7 weeks ago 5.445 GB $ docker tag 128d249664a0 yakun-gpu:latest # 给镜像打tag,命名 REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE yakun-gpu latest 128d249664a0 7 weeks ago 5.445 GB $ docker history yakun-gpu # 查询image历史 IMAGE CREATED CREATED BY SIZE 128d249664a0 7 weeks ago /bin/bash 39.08 MB e0aca483823a 5 months ago /bin/bash 24.88 MB 9516a43a7bd5 6 months ago /bin/bash 21 MB ab33a0ce9258 9 months ago /bin/sh -c apt-get -y install bash-completion 5.294 MB $ docker search caffe-gpu # 从docker hub上检索镜像 NAME DESCRIPTION STARS OFFICIAL AUTOMATED tleyden5iwx/caffe-gpu-master 20 [OK] nakosung/caffe-gpu 0 [OK] $ docker pull image-name # download image $ docker rmi image_name # delete image $ docker rmi $(docker images -a -f "dangling=true" -q) # dangling的镜像 #导出image,并在其他的机器导入 $ docker save -o save-img.tar image-name:tag $ docker load -i save-img.tar 3. 操作docker container # 启动container,挂载GPU卡和本地目录(本地主机目录:image内目录),进入交互式bash docker run -ti $DOCKER_NVIDIA_DEVICES --name container-name -v $(cd "$(dirname $0)/.."; pwd):/mnt_data1 image-name bash # 退出但不停止container: ctrl p + ctrl q; exit 和 ctrl d都会暂停container,之后需要运行start启动 # 之后进入docker(-it 交互式伪终端),ctrl+D/exit退出都不会退出container docker exec -it 102d3e949a37 bash # 删除所有已经exit的container -q(id号) -f(filter) -v:移除挂载目录(如果不加,会残留垃圾文件) docker rm -v $(docker ps -a -q -f status=exited) # 查看运行的container docker ps [-a] # 保存对容器的修改; -a, --author="" Author; -m, --message="" Commit message docker commit ID new_image_name 4. docker占用资源查询 docker stats [docker names] // 查看CPU,Memory,Network使用 docker内存限制可以在创建docker时使用-m参数:-m 256m,容器里程序可以跑到256m*2=512m后会被oom给杀死 目前cpu限制可以使用绑定到具体的线程,或者是在绑定线程基础上对线程资源权重分配。绑定线程可以使用参数--cpuset-cpus=7 5. Dockerfile # 可以从Dockerfile,自己建立image: FROM docker/whalesay:latest # 基于哪个镜像 # 安装软件用,常用,不要忘记清空lists目录,可以缩小image大小 RUN apt-get -y update && apt-get install -y fortunes && rm -rf /var/lib/apt/lists/* ENV PATH ${PATH}:/opt/tools # 设置环境变量 COPY requirements.txt /tmp/ # copying local files into the container WORKDIR /root/workdir # 设置之后所有RUN命令的工作目录 CMD /usr/games/fortune -a | cowsay # container启动时执行的命令,但只能有一条CMD命令,多条则只执行最后一条 # 之后基于此构建image whale-yk docker build -t whale-yk . # 当前目录找dockerfile 对于Centos机器,不同的地方: RUN curl -o /etc/yum.repos.d/CentOS7-Base-163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo \ && curl -o /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 https://archive.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7 \ && yum clean all \ && yum makecache \ && yum -y -t groupinstall "Development Tools" \ 。。。 && yum clean all 另,Dockerfile中每一条命令是一个step,在image中新加一层(新建一个container,然后操作,然后rm掉container,得到一个加一层的image) 所以修改某一条命令后,之前的Cache,之后的丢掉重新建