docker软件命令

查看docker版本:

docker version
docker -v

重启docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

镜像相关

参考资源:https://www.runoob.com/docker/docker-image-usage.html">https://www.runoob.com/docker/docker-image-usage.html查看本地已经安装的Docker镜像:

docker images
or
docker image ls

搜索镜像:

docker search <image_name>

如:

docker search opencv

运行镜像:

docker run <image_name>

删除镜像:http://blog.51yip.com/cloud/1859.html">http://blog.51yip.com/cloud/1859.html

  • 删除指定镜像:
docker rmi hello-world:latest
  • 删除none镜像:
# 删除none镜像
# 可能需要先删除与该none镜像相关的运行的容器
docker rmi $(docker images | grep "none" | awk '{print $3}')

 或者直接用命令直接删除该镜像相关的容器和镜像,最好先确认下确实用不上了该镜像再执行
 docker rmi --force $(docker images | grep "none" | awk '{print $3}')

镜像的离线保存与加载:

  • 保存镜像文件到tar格式的离线文件:
docker save -o <file_name>.tar <image_name>
or
docker save <image_name>  -o <file_name>.tar
如
docker save -o py36_torch.tar python36/pytorch:lastest
  • 加载离线镜像文件:
docker load < <file_name>.tar
如
docker load < py36_torch.tar

容器相关

运行容器:
docker会通过镜像名找到需要运行的容器,载入该容器,并运行在这个容器中的指定命令。

docker run <各种选项> <镜像名>

有关docker的运行命令选项众多,可以了解一些常用选项,满足日常需求即可:
1、基础版本
启动一个带有终端交互的容器

docker run -it <镜像名:Tag> bash

2、启动一个使用宿主机网络的容器
常在带有代理的环境下有用
https://www.debugself.com/2018/01/17/docker_network/">https://www.debugself.com/2018/01/17/docker_network

docker run --network=host -it <image_name>

显示正在运行的容器:

docker ps
or
docker container ls

显示所有运行容器(包括已经终止的,即运行过的容器):

docker ps -a

格式化显示运行的容器:
https://zju.date/docker-ps-format/">https://zju.date/docker-ps-format/

docker ps --format 'table {{.Names}}\t{{.Image}}'

终止容器运行:

docker stop <the-container-id>

清除容器:

docker rm <container-name or container-id> #删除容器
docker container prune # 删除所有已经终止的容器

终止并删除容器:

docker rm -f <the-container-id>

查看镜像或容器信息:

docker inspect <镜像名或容器ID>

从容器commit创建新的镜像:

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:

-a :提交的镜像作者;

-c :使用Dockerfile指令来创建镜像;

-m :提交时的说明文字;

-p :在commit时,将容器暂停。

其中CONTAINER可以为当前运行容器的ID或名字,REPOSITORY即为创建的镜像名。

进入(关联)到已启动的容器:

会同步操作:
docker attach 44fc0f0582d9
Ctrl+C
或
异步操作:推荐
docker exec -it 775c7c9ee1e1 /bin/bash

容器退出后重新进入:

docker restart <container_name>

这样就会直接进入到容器退出前的状态,不用再次重新启动容器

空间占用分析:

具体操作请参考Docker Tips: Clean Up Your Local Machine

查看空间占用情况:

docker system df

查看详细空间占用情况:

docker system df -v

代理设置

如果你使用docker的机器处在代理环境中,如果不配置代理的话在执行docker pull hello-world可能会出现报错:

Get https://registry-1.docker.io/v2/: authenticationrequired

配置方法:

修改/etc/default/docker文件,最后添加:

export http_proxy=http://username:password@proxy.xxx.com:port
export no_proxy="localhost,127.0.0.1,.xxx.com"
DOCKER_OPTS="--insecure-registry rnd-dockerhub.xxx.com"

然后重启docker服务:systemctl restart docker

此时直接docker pull hello-world能够成功。