以前的虚拟机存在 资源占用多、冗余步骤多、启动慢的缺点。传统的虚拟机是虚拟出一套操作操作硬件,在其后运行一个完整的操作系统,在该系统上再运行所需要的系统进程。

现在Linux发展出另外一种虚拟化技术: Linux容器(Linux container)。Linux 容器 不是模拟一个完整的操作系统, 而是对进程的隔离。有了容器,就可以将软件运行所需要的资源打包到一个隔离的容器中。 容器与虚拟机不同,不需要捆绑到一整套操作系统,只需要软件工作所需要的资源和配置。系统因此变得更加高效轻量,并保证部署到任何环境中的软件都能如一的运行。

1. 基本操作及镜像管理

  1. $ docker version
  2. $ docker info
  3. $ docker --help
  4. # 镜像管理
  5. $ docker images # 列出本地的镜像
  6. $ docker search xxx # 去dockerhub上查找
  7. $ docker pull xxx || $ docker pull xxx:latest # 去dockerhub拉去镜像
  8. $ docker rmi xxx || $ docker rmi xxx:3.2 # 删除某个镜像
  9. $ docker rmi -f xxx # 强制删除某个镜像
  10. $ docker rmi -f xxx: xxxx: #强制删除多个镜像
  11. $ docker rmi -f $(docker images -qa) # 删除所有
  12. $ docker rmi $(docker images -f "dangling=true" -q) # 删除<none>镜像

2. 容器的创建

  1. $ docker create --name 容器名称 -p 宿主端口号:容器端口号 镜像名称:版本号
  2. # 案例:
  3. $ docker create --name tomcat -p 8080:8080 docker.io/tomcat

只是创建

3. 容器的运行

  1. # 创建并启动容器:
  2. $ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  3. OPTIONS说明:
  4. --name="容器名字": 为容器指定一个名称;
  5. -d: 后台运行容器,并返回容器ID,也即启动守护式容器;
  6. -i:以交互模式运行容器,通常与 -t 同时使用;
  7. -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  8. -p: 指定端口映射,hostPort:containerPort
  9. -e: 设置环境变量;
  10. -v: 挂载卷,可以写多个
  11. $ docker run -it --name 容器别名 #(-it 启动交互式容器)

创建并运行

4. 容器的管理(启动、停止及删除)

  1. # 列出正在运行的所有容器
  2. $ docker ps
  3. -a:当前运行和以往运行过的所有容器
  4. -l:最近运行过的容器
  5. -q:只显示容器标识
  6. -s: 输出表格新增一个SIZE字段,用于描述容器的大小
  7. # 退出容器:
  8. exit 容器停止并退出
  9. ctrl+P+Q 容器不停止退出
  10. # 启动容器:
  11. $ docker start 容器名称或容器ID
  12. # 重启容器:
  13. $ docker restart 容器名称或容器ID
  14. # 终止容器:
  15. $ docker stop 容器名称或容器ID
  16. # 强制停止容器:
  17. $ docker kill 容器名称或容器ID
  18. # 删除容器:
  19. $ docker rm 容器名称 #(注意:容器必须是停止状态)
  20. $ docker rm -f # 强制删除
  21. $ docker rm -f $(docker ps -a -q) # 一次性删除多个容器

5. 容器的运行状态监控

  1. # 查看容器的日志
  2. $ docker logs -f -t --tail 10 容器ID
  3. -t 是加入时间戳
  4. -f 跟随最新的日志打印
  5. --tail xx 显示最后多少条
  6. # 查看容器内运行的进程
  7. $ docker top 容器ID
  8. # 查看容器内部的详细信息
  9. $ docker inspect 容器名称/容器id

6. 进入容器及操作

  1. $ docker exec -it 容器ID bashShell
  2. # 比如:
  3. $ docker exec -it 0c571c81d0b9 /bin/bash
  4. $ exit # 退出容器
  5. $ apt-get install vim
  6. # commit 命令
  7. # commit命令可以将一个容器(该容器可能做了某些修改),提交生成一个新的镜像
  8. $ docker commit 容器id [新的镜像名称[:tag]]
  9. # 比如:
  10. $ docker commit 9a990c39e5df mytomcat:8
  11. $ docker run --name tomcat -d -p 8080:8080 mytomcat:8