docker 基本使用

d1. docker 启动image,如果启动gpu 版本必须用nvidia-docker, -d detach, -i interactive, -t  with fake terminal , -network=host 与本机一样的网络

nvidia-docker run -dit --name icdl  --network=host bash

  连接到已有容器  sudo docker exec -it 775c7c9ee1e1 /bin/bash

2.用docker 代替nvidia-docker 启动带有gpu, cuda 的container

docker run --device=/dev/nvidiactl --device=/dev/nvidia-uvm --device=/dev/nvidia0 -v nvidia_driver_367.48:/usr/local/nvidia:ro -dit --name=test7 --network=host docker.io/bvlc/caffe:gpu  /bin/bash

新版不用这么麻烦了,按照https://github.com/NVIDIA/nvidia-docker,只需docker --runtime=nvidia  ...

3.带gdb支持的container,  run 时候加上--cap-add=SYS_PTRACE

 

echo 0 /proc/sys/kernel/yama/ptrace_scope

4. docker attach 以后,使用Ctrl+P and Ctrl+Q离开

5.docker 离线安装 1)https://download.docker.com/linux/static/stable/x86_64/ 下载后,解压到/usr/local/bin下面,2)然后

 

vi /etc/fstab

#在结尾添加

none       /sys/fs/cgroup        cgroup        defaults    0    0

重启

    3)如果使用gpu, 就用2中命令启动container

 

6.有哪些container: docker ps -a

7.有哪些image: docker images

8.删除不用的container: docker rm -f face/face1:version1

9.删除image : docker rmi

10.将当前container 保存成image, commit部分,face/face1是仓库名称,version1是tag

docker commit c3f279d17e0a  face/face1:version1
将image 导出成压缩包:docker save -o /home/sam/aa.tar  face/face1:version1
导入压缩包到image :docker load --input aa.tar
11.直接把container 导出,然后导入,这样文件大小会大大缩小
docker export test20  -o ./faceexport.tar
gzip --best faceexport.tar
cat /home/faceexport.tar | docker import - face:latest

12. 添加卷

ln -s /u01 /var/lib/docker/volumes/volu01
docker volume create volu01
docker run -dit --mount source=volu01,target=/u01 --name icdl1 --network=host 93682a1555c1 bash
如果只是-d 没有it,是无法启动的, volu01后边逗号后不能有空格
13.开机启动, 之前已经对卷建立软连接,ln -s /u01 /var/lib/docker/volu01
  在/etc/rc.local里面加入如下行
systemctl start docker
docker volume create volu01
docker start icdl1
docker exec -d icdl1 starticdl.sh

 其中,starticdl.sh位于container内部/usr/bin/目录下面,内容如下,其中server.py里面,加入了守护程序

#!/bin/bash
cd /idcardDriverlisenceRecog/src/ && python server.py

 守护程序部分见:https://blog.csdn.net/northeastsqure/article/details/90515122

14. alpine极简版linux,含有busybox

   安装bash: RUN apk add --update bash && rm -rf /var/cache/apk/*

    内无管理员权限,在dockerfile里面:USER root

15.docker内部程序开机启动:

  cd /idcardDriverlisenceRecog/src/
  python /idcardDriverlisenceRecog/src/IDcardVehiclelisenceRecog_facepp_youtu.py

  exit 0

 

16. 让docker 某 container 与docker 一同起来,即永远不停机

  

docker update CONTAINER --restart always

17. 制作ubuntu1604,docker

  从这里连接制作,跟着18命令,https://github.com/tianon/docker-brew-ubuntu-core/tree/010bf9649b1d10e2c34b159a9a9b338d0fdd4939/xenial

18. 从dockerfile得到docker image

   docker build --tag='ubuntu1604:Dockerfile' .

19. 运行docker命令,比如docker ps,遇到:Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.37/containers/json: dial unix /var/run/docker.sock: connect: permission denied

  把当前用户加入到docker组,然后重新登录

 sudo usermod -a -G docker $USER

 relogin

20. 把文件夹复制到docker container里面,或者拷贝出来

  docker cp src/opencv-2.4.13.6 seetaface_ubuntu1604:/

  两个参数倒过来,就是拷出来

 

你可能感兴趣的:(打包,版本控制,深度学习,linux,gpu,好习惯)