Docker常用操作
有些深度学习环境依赖非常棘手,编译总是不通过,即使编译通过运行又会出现库链接问题,非常烦人。掌握Docker的基本操作,直接把别人配置好的docker镜像pull下来,能省很多麻烦。这里主要记录自己常用的docker命令。
#查看docker 容器
docker ps
#查看docker 镜像
docker images
#和宿主之间复制文件
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
#e.g.
docker cp /home/han fce289e99eb9:/tmp/ #/tmp/表示拷贝到该目录下
docker cp /home/han fce289e99eb9:/tmp #/tmp表示重命名为tmp
docker cp fce289e99eb9:/tmp /tmp/
#删除镜像或者容器(删除镜像之前必须退出包含该镜像的所有容器)
rm Remove one or more containers
rmi Remove one or more images
#查看所有退出的容器()
docker ps -a
Docker运行
han@MS:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest fce289e99eb9 11 days ago 1.84kB
zzhikun/non_local_net v1.0 9a5153e5ece1 4 months ago 3.94GB
# run docker
sudo docker run -i -t 9a5153e5ece1 /bin/bash
# 其中,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i 则让容器的标准输入保持打开。
Docker目录映射
载入home路径到docker的container
需要注意的是一旦你退出某个container,所有你做的东西都不会保存,所以为了保存数据和代码,我们可以把某个目录载入到container中,这样我们在docker中对该目录所做的修改都会保存到本机了。
nvidia-docker run -v /home/han/:$(pwd) -it zzhikun/non_local_net:latest
Docker 取消sudo限制
han@MS:~$ cat /etc/group | grep docker
docker:x:999:
han@MS:~$ groups
han adm cdrom sudo dip plugdev lpadmin sambashare
han@MS:~$ sudo gpasswd -a ${USER} docker
[sudo] han 的密码:
正在将用户“han”加入到“docker”组中
han@MS:~$ cat /etc/group | grep docker
docker:x:999:han
han@MS:~$ sudo service docker restart
han@MS:~$ docker images
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.39/images/json: dial unix /var/run/docker.sock: connect: permission denied
han@MS:~$ newgrp - `groups ${USER} | cut -d' ' -f1`;
han@MS:~$ sudo service docker restart
han@MS:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest fce289e99eb9 11 days ago 1.84kB
zzhikun/non_local_net v1.0 9a5153e5ece1 4 months ago 3.94GB