1. 就是将代码+环境一起打包,生成一个镜像的技术。
  2. 简单理解:使用配置服务器非常方便

核心概念

  1. https://hub.docker.com/
  2. 镜像(像npm的包) node/mongo
  3. 容器 通过镜像启动的应用就叫容器
  4. 仓库(像npm的仓库)

一、安装Docker

  1. curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  2. sudo systemctl start docker //启动docker
  3. docker -v //查看版本号
  4. docker info //查看docker详情

二、镜像加速

image.png
image.png
image.png

  1. vi /etc/docker/daemon.json // 配置加速地址文件
  2. {
  3. "registry-mirrors": ["https://77e997d33aa54edfabd1d2591bfa89bc.mirror.swr.myhuaweicloud.com"]
  4. }
  1. sudo systemctl daemon-reload
  2. sudo systemctl restart docker

三、卸载Docker

  1. # 查询安装的docker包 
  2. yum list installed | grep docker
  3. yum remove docker-ce.x86_64 ddocker-ce-cli.x86_64 -y
  4. rm -rf /var/lib/docker

四、Docker镜像

  1. docker pull mongo // 安装镜像
  2. docker images // 查看安装的镜像
  3. 通过mongo这个镜像,-d在后台运行,运行了一个名字为myapp这样的容器,容器主机的10010端口,映射
  4. 容器的27017这个端口
  5. -d表示后台运行。-p表示指定端口映射
  6. 主机的10010端口 映射容器的27017这个端口
  7. docker run -d --name myapp -p 10010:27017 mongo // 启动mongo服务
  8. docker ps 查看正在运行的docker服务

五、运行服务

  1. docker run -d --name myapp -p 10010:27017 mongo // 启动mongo服务
  2. docker ps 查看正在运行的docker服务
  3. docker exec -it myapp /bin/bash // 进入容器
  4. mongo //进入数据库
  5. show dbs //显示数据库中有几个库
  6. use movies //新建一个数据库
  7. db.top250.insert({name:"chengchao"}) //新建top250表,插入一段数据

六、使用docker实现图形化界面

  1. docker pull mongo-express
  2. docker run -d --link myapp:mongo -p 8081:8081 mongo-express
  3. 然后在华为云上开启8081端口
  4. 在浏览器输入http://119.3.158.140:8081/

七、systemctl系统命令

  1. systemctl stop docker // 停止docker
  2. systemctl restart docker // 重启docker
  3. systemctl start docker // 开始docker
  4. systemctl status docker // 查看docker运行状态

八、Docker常用命令

1、docker信息

  1. ##查看docker容器版本
  2. docker version
  3. ##查看docker容器信息
  4. docker info
  5. ##查看docker容器帮助
  6. docker --help

2、镜像操作

  1. ##列出本地images
  2. docker images
  3. ##含中间映像层
  4. docker images -a
  5. ##只显示镜像ID
  6. docker images -q
  7. ##含中间映像层
  8. docker images -qa
  9. ##搜索仓库MySQL镜像
  10. docker search mysql
  11. ## --filter=stars=600:只显示 starts>=600 的镜像
  12. docker search --filter=stars=600 mysql
  13. ## --no-trunc 显示镜像完整 DESCRIPTION 描述
  14. docker search --no-trunc mysql
  15. ## --automated :只列出 AUTOMATED=OK 的镜像
  16. docker search --automated mysql
  17. ##下载Redis官方最新镜像,相当于:docker pull redis:latest
  18. docker pull redis
  19. ##下载仓库所有Redis镜像
  20. docker pull -a redis
  21. ##下载私人仓库镜像
  22. docker pull bitnami/redis
  23. ##单个镜像删除,相当于:docker rmi redis:latest
  24. docker rmi redis
  25. ##强制删除(针对基于镜像有运行的容器进程)
  26. docker rmi -f redis
  27. ##多个镜像删除,不同镜像间以空格间隔
  28. docker rmi -f redis tomcat nginx
  29. ##删除本地全部镜像
  30. docker rmi -f $(docker images -q)

3、容器操作

  1. ##新建并启动容器,参数:-i 以交互模式运行容器;-t 为容器重新分配一个伪输入终端;
  2. --name 为容器指定一个名称
  3. docker run -i -t --name mycentos
  4. ##后台启动容器,参数:-d 已守护方式启动容器
  5. docker run -d mycentos
  6. ##启动一个或多个已经被停止的容器
  7. docker start redis
  8. ##重启容器
  9. docker restart redis
  10. ##top支持 ps 命令参数,格式:docker top [OPTIONS] CONTAINER [ps OPTIONS]
  11. ##列出redis容器中运行进程
  12. docker top redis
  13. ##查看所有运行容器的进程信息
  14. for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done
  15. ##查看redis容器日志,默认参数
  16. docker logs rabbitmq
  17. ##查看redis容器日志,参数:-f 跟踪日志输出;-t 显示时间戳;--tail 仅列出最新N条容器日志;
  18. docker logs -f -t --tail=20 redis
  19. ##查看容器redis20190521日后的最新10条日志。
  20. docker logs --since="2019-05-21" --tail=10 redis
  21. ##使用run方式在创建时进入
  22. docker run -it centos /bin/bash
  23. ##关闭容器并退出
  24. exit
  25. ##仅退出容器,不关闭
  26. 快捷键:Ctrl + P + Q
  27. ##直接进入centos 容器启动命令的终端,不会启动新进程,多个attach连接共享容器屏幕,参数:
  28. --sig-proxy=false 确保CTRL-DCTRL-C不会关闭容器
  29. docker attach --sig-proxy=false centos
  30. ##在 centos 容器中打开新的交互模式终端,可以启动新进程,参数:-i 即使没有附加也保持STDIN 打开;
  31. -t 分配一个伪终端
  32. docker exec -i -t centos /bin/bash
  33. ##以交互模式在容器中执行命令,结果返回到当前终端屏幕
  34. docker exec -i -t centos ls -l /tmp
  35. ##以分离模式在容器中执行命令,程序后台运行,结果不会反馈到当前终端
  36. docker exec -d centos touch cache.txt
  37. ##查看正在运行的容器
  38. docker ps
  39. ##查看正在运行的容器的ID
  40. docker ps -q
  41. ##查看正在运行+历史运行过的容器
  42. docker ps -a
  43. ##显示运行容器总文件大小
  44. docker ps -s
  45. ##显示最近创建容器
  46. docker ps -l
  47. ##显示最近创建的3个容器
  48. docker ps -n 3
  49. ##不截断输出
  50. docker ps --no-trunc
  51. ##获取镜像redis的元信息
  52. docker inspect redis
  53. ##获取正在运行的容器redis IP
  54. docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis
  55. ##停止一个运行中的容器
  56. docker stop redis
  57. ##杀掉一个运行中的容器
  58. docker kill redis
  59. ##删除一个已停止的容器
  60. docker rm redis
  61. ##删除一个运行中的容器
  62. docker rm -f redis
  63. ##删除多个容器
  64. docker rm -f $(docker ps -a -q)
  65. docker ps -a -q | xargs docker rm
  66. ## -l 移除容器间的网络连接,连接名为 db
  67. docker rm -l db
  68. ## -v 删除容器,并删除容器挂载的数据卷
  69. docker rm -v redis