「docker实战篇」python的docker-docker系统管理-基本命令(29)
2019-07-02 10:36:31
李明
  • 访问次数: 377
  • 注册日期: 2018-07-09
  • 最后登录: 2019-10-30

经常使用linux、mac的系统的老铁,都习惯使用命令,要灵活的使用一种操作系统,必须要熟悉里面的命令,并不是所有都可以进行界面化的。来一起熟悉下docker的命令。

命令合集

管理命令:
  container   管理容器
  image       管理镜像
  network     管理网络
  node        管理Swarm节点
  plugin      管理插件
  secret      管理Docker secrets
  service     管理服务
  stack       管理Docker stacks
  swarm       管理Swarm集群
  system      查看系统信息
  volume      管理卷
  如:docker container ls 显示所有容器
普通命令:
  attach     进入一个运行的容器
  build      从一个DockerFile构建镜像
  commit     从容器创建一个镜像
  cp          从容器和主机文件系统之间拷贝文件 
  create      创建一个容器
  diff        检查容器文件系统上的更改
  events      从服务器获取实时事件
  exec        在正在运行的容器中运行命令
  export      将容器的文件系统导出为tar存档
  history     显示镜像的历史记录
  images      查看镜像列表
  import      从归档文件中创建镜像
  info        显示系统范围的信息
  inspect     返回Docker对象的低级信息
  kill        kill运行中的容器
  load        从存档或者STDIN加载镜像
  login       登陆docker镜像仓库
  logout      退出docker镜像仓库
  logs        获取一个容器的日志
  pause       暂停一个或多个容器中的所有进程
  port        查看端口映射或容器的特定映射列表
  ps          查看容器列表
  pull        从镜像仓库拉取镜像
  push        将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
  rename      重命名容器
  restart     重启容器
  rm          删除容器
  rmi         删除镜像
  run         创建一个新的容器并运行一个命令
  save        将指定镜像保存成 tar 归档文件
  search      从Docker Hub搜索镜像
  start       启动容器
  stats       实时显示容器资源使用情况的统计信息
  stop       停止容器
  tag         标记本地镜像,将其归入某一仓库
  top         展示一个容器中运行的进程
  unpause     恢复容器中所有的进程
  update      更新容器配置
  version    显示Docker的版本信息
  wait        阻塞直到容器停止,然后打印退出代码
  如:docker images 显示所有镜像
  • 让容器长期运行
docker run -d centos /bin/bash -c "while true; do sleep 1;done"

  • 进入容器查看容器运行的情况
docker attach 容器ID

  • 进入容器内部
docker exec -it 容器ID /bin/bash

attach 与 exec 主要区别如下
1.attach 直接进入容器启动命令的终端,不会启动新的线程。
2.exec 则是在容器中打开新的终端,并且可以启动新的线程。
3.如果想直接在终端中查看启动命令的输出,用attach;其他情况使用exec。

  • 容器运行
    >docker客户端使用docker命令来运行的,run的参数表名客户端要运行一个新的客户端
    >1.这个容器从哪个镜像创建,这里是centos,基本的centos镜像
    >2.在容器要运行的命令,这里是/bin/bash,在容器中运行Bash shell。
docker run -it centos /bin/bash

那么运行上边的命令之后在底层发生了什么呢?
按照顺序,docker做了这些事情:
1.拉取centos镜像:docker检查centos镜像是否存在,如果本地没有镜像,docker会在docker hub下载,如果镜像已经存在,docker会使用它来创建新的容器。
2.创建新的容器:当docker有了这个镜像之后,docker会用它来创建一个容器。
3.分配文件系统并且挂载一个可读写的层:容器会在文件系统中创建,并且一个可读写的层被添加到镜像中。
4.分配网络/桥接接口:创建一个允许容器与本地主机通信的网络接口。
5.设置一个IP地址:从池中寻找一个可用的IP地址并且附加到容器上。
6.运行你指定的程序:运行指定的程序
7.捕获并且提供应用输出:连接并且记录标准输出,输入和错误让你可以看到你的程序是如何运行的。

  • 批量删除结束的容器
#因为目前没有退出的容器,所以报错。
docker rm -v $(docker ps -aq -f statue=exited)

  • 启动、停止、重启、删除docker容器
#启动容器
docker start <ContainerId(或者name)>
#停止容器
docker stop <ContainerId(或者name)>
#重启容器
docker restart <ContainerId(或者name)>
#删除容器
docker rm <ContainerId(或者name)>
#删除所有容器
docker rm $(docker ps -a -q)
  • 更多实战详细的docker命令详解
    >建议看我关于docker【初级篇】 和【中级篇】

PS:docker的基本命令很重要,但是如果会使用help这个功能官方介绍的更清楚,我这里也是把英文做了翻译。主要还是理解原理。