Docker常用命令整理

因为工作需要接触到了Docker,发现这个东西是真的好用。容器带来的隔离效果对我这种强迫症患者太友好了。学一个新的框架或者数据库,docker搞起来,无论怎么糟蹋怎么设置,出现小问题啥的直接移除这个容器,再创个干净的新的重头再来,少了很多配置的烦恼,电脑上也不用装很多乱七八糟的东西!所以这篇文章就记录下最近自己整理的常用的docker命令,以便后续翻阅。

由于国内网络环境的缘故,要使用国内源安装,安装过程看这里的教程

1. 操作容器

  • 启动容器以后台方式运行(更通用的方式)
    docker run --name container_name -v /path/to/hostdir:/mnt -d -p 5000:5000 image_name

  • 在运行着的容器内部运行一条命令(比attach更好用)
    docker exec -it <id/container_name> /bin/(bash|sh)

  • 附着到正在运行的容器
    docker attach <id/container_name>

  • 实时查看日志输出
    docker logs -f <id/container_name> (类似 tail -f) (带上时间戳-t)

  • 列出当前所有正在运行的container(类似的选项就不说了 docker ps –help)
    docker ps

  • 显示一个运行的容器里面的进程信息
    docker top <id/container_name>

  • 显示容器统计信息(可选–no-stream,all等参数)
    docker stats

  • 查看容器内部详情细节
    docker inspect <id/container_name>

  • 从容器内拷贝文件到主机上(从主机拷贝到容器里将cp后面两个参数调换)
    docker cp <id/container_name>:/file/path/within/container /host/path/target

  • 保存对容器的修改(commit) 当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器
    docker commit <id/container_name> new_image_name

  • 删除单个容器(可加-f选项)
    docker rm <id/container_name>

  • 删除所有容器
    docker rm $(docker ps -a -q)

  • 查看容器内部详情细节
    docker inspect -f '{range .NetworkSettings.Networks}{.IPAddress}{end}' container_name_or_id

    注意这里format之后不是一对{} 而是两对,这里有bug,所以先这么写着

  • 停止、启动、杀死、重启一个容器
    docker stop|start|kill|restart <id/container_name>

2. 操作镜像

  • 列出镜像(可加-a ,-q选项)
    docker images

  • 从dockerhub检索image
    docker search image_name

  • 下载image
    docker pull image_name

  • 删除一个或者多个镜像(可加-f选项)
    docker rmi image_name

  • 显示一个镜像的历史
    docker history image_name

  • 发布docker镜像
    docker image push my_repo/my_image:my_tag 

  • 删除一个或者多个镜像
    docker rmi image_name

  • 保存一个镜像到一个tar文件里(反过来就是解压)
    docker save debian -o mydebian.tar
    docker load -i mydebian.tar

  • 给镜像打标签(标签指向源镜像,多生产一个)
    docker tag centos:7 mycentos7:v1

3. 其他

  • 通过Dockerfile生成新的镜像
    docker build -t new_image_name:tag .

  • 显示系统范围信息
    docker info

  • 提供docker 版本信息
    docker version

  • 查看docker0的网络(宿主机上操作)
    ip a show docker0

  • 附着到容器内部查看其内部ip:
    ip a show eth0

  •  登录到Docker registry.
    docker login 

  • 删除所有未使用的容器,未使用的网络和悬空图像(也可单独删除)
    docker system prune

4. 念念不忘