Docker为什么出现

环境的不一致, 从开发到部署上线, 应用的配置很复杂, 特别是集群的配置, 而利用Docker技术, 直接将jar和环境打包放入Docker商店, 需要的时候, 直接进入Docker中下载就行.

并且Docker利用隔离的思想, 将每个应用打包装箱, 相互隔离, 可以将服务器利用到极致

容器化技术并不是一个完整的系统

Docker的组成

image.png

Docker常用命令

  1. docker version #显示docker版本信息
  2. docker info #显示docker系统信息
  3. docker 命令 --help #帮助命令
  4. #可选项
  5. -a, --all #列出所有的对象
  6. -q, --quiet #只显示镜像的id

镜像命令

  1. docker images

查看本地主机上所有的镜像

  1. root@master:/home/lkh# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. hello-world latest feb5d9fea6a5 5 months ago 13.3kB

repository: 镜像的仓库
tag: 镜像的标签
image id: 镜像的ID
created: 创建时间
size: 大小

docker search images_name搜索镜像

  1. docker search mysql
  2. #可选项, 过滤, 搜索stars超过3000的
  3. docker search mysql --filter=stars=3000

docker pull 镜像名 [:tag]

如果不写tag, 默认下载最新的文件

  1. docker pull mysql :5.8

docker rmi 删除镜像

  1. docker rmi -f 镜像id [镜像id]...# 删除一个镜像或者多个镜像
  2. docker rmi -f ${docker images -aq} # 删除全部的镜像

容器的命令

拉取centos测试

  1. docker pull centos

新建容器并启动

  1. docker run [可选参数] image
  2. # 参数说明
  3. --name="Name" 容器的名字, tomcat1, tomcat2, 用来区分容器
  4. -d 后台方式运行
  5. -it 使用交互的方式运行, 进入容器查看内容
  6. -p 指定容器的端口
  7. -p ip:主机端口:容器端口
  8. -p 主机端口:容器端口
  9. -p 容器端口
  10. 容器端口
  11. -P(大写的P) 随机端口

查看运行的容器

  1. docker ps # 查看正在运行的程序
  2. docker ps -a # 查看曾经运行过的容器
  3. docker -n=? # 查看最近n个运行的容器
  4. docker -q # 只显示容器的编号
  5. exit # 直接停止容器并退出
  6. ctrl+q+p # 退出, 后台挂起

删除容器

  1. docker rm 容器id #删除指定的容器
  2. docker rm -f $(docker ps -aq) #删除所有的容器
  3. docker ps -a -q|xargs docker rm #删除所有的容器

启动和停止容器的操作

  1. docker start 容器id # 启动容器
  2. docker restart 容器id # 重启容器
  3. docker kill 容器id # 强制停止容器
  4. docker stop 容器id # 停止当前的容器

常用的其他容器

后台启动

  1. docker run -d centos
  2. # 使用docker ps, 发现centos停止,docker容器使用后台运行, 就必须要有一个前台进程, docker发现没有应用, 就会自动停止

查看日志

  1. docker logs -f -t --tail 个数
  2. #
  3. # tail 显示日志的个数

image.png

查看容器的元数据

  1. docker inspect 容器id

进入当前正在运行的容器

  1. docker exec -it 容器id bashShell