Docker
使用操作系统的系 统调用接口。这降低了运行单个容器所需的开销,也使得宿主机中可以运行更多的容器。
容器与虚拟机相比,更轻便,上手快,职责逻辑分类,快速高效的开发声明周期,鼓励使用面向服务的架构。
Docker组件
1、Docker客户端和服务器
Docker 是一个客户端-服务器(C/S)架构程序。Docker 客户端只需要向 Docker 服务器 或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。Docker 提供了 一个命令行工具 Docker 以及一整套 RESTful API。你可以在同一台宿主机上运行 Docker 守护 进程和客户端,也可以从本地的 Docker 客户端连接到运行在另一台宿主机上的远程 Docker 守护进程。
2、Docker镜像
是构建Docker的基石,用户基于镜像运行自己的容器
3、registry(注册中心)
Docker 用 Registry 来保存用户构建的镜像。Registry 分为公共和私有两种。Docker 公司 运营公共的 Registry 叫做 Docker Hub。用户可以在 Docker Hub 注册账号,分享并保存自己的 镜像(说明:在 Docker Hub 下载镜像巨慢,可以自己构建私有的 Registry)。
4、Docker容器
Docker就像集装箱,把包装好的软件部署到各个主机上。
Docker命令
- 安装Docker yum install docker
- 安装后查看Docker版本 docker -v
- 启动Docker systemctl start docker
- 停止Docker systemctl stop docker
- 重启Docker systemctl restart docker
- 查看Docker状态 systemctl status docker
- 开机启动 systemctl enable docker
- 查看概要信息 docker info
- 列出Docker所有镜像 docker images
○REPOSITORY 镜像所在仓库名称
○TAG 镜像标签
○IMAGEID 镜像ID
○CREATED 镜像创建日期(不是获取镜像的日期)
○SIZE 镜像大小
○这些镜像都是存储在 Docker 宿主机的/var/lib/docker 目录下
- 搜索镜像 docker search 镜像名称
- 拉取镜像 docker pull centos:7
- 删除指定镜像 docker rmi $IMAGE_ID
- 删除所有镜像 docker rmi `docker images -q
Docker容器操作
- 查看正在运行容器 docker ps
- 查看所有容器 docker ps -a
- 查看最后一次运行的容器 docker ps -l
- 查看停止的容器 docker ps -f status-exited
- 创建容器命令 docker run
- -i 表示运行容器
- -t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
- -name 为创建的容器命名
- -v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后 共享到容器上
- -d 在 run 后面加上-d 参数,则会创建一个守护式容器在后台运行(这样创建容器后不 会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)
- -p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射
- 交互式容器 docker run -it --name=mycentos centos:7 /bin/bash
- 退出 exit
- 守护式容器 docker run -di --name=mycentos2 centos:7
- 文件拷贝 docker cp 需要拷贝的文件或目录 容器名称:容器目录
- 目录挂载 docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos2 centos:7
- 查看容器IP 地址 docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos2 或者docker inspect mycentos2
- 删除容器 docker rm $CONTAINER_ID/NAM
- 删除所有容器 docker rm `docker ps -a -q`
- 创建MySQL容器 docker run -di --name 名称 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
- 进入MySQL容器 docker exec -it 名称 /bin/bash
- 登陆 mysql mysql -u root -p
- 拉取Nginx镜像 docker pull nginx
- 创建Nginx容器 docker run -di --name=名称 -p 80:80 nginx
- 拉取Redis 镜像 docker pull redis
- 创建Redis 容器 docker run -di --name=名称 -p 6379:6379 redis
- 容器保存为镜像 docker commit xxx_nginx mynginx
- 镜像备份 docker save -o mynginx.tar mynginx
- 镜像恢复与迁移 首先我们先删除掉 mynginx 镜像,docker load -i mynginx.tar
RESTful架构
翻译为“表现层状态转化”
项目中用到了GET/POST/PUT/DELETE四种方法
增:post 不安全,不幂等
删:delete 不安全,幂等
改:普通 不安全,幂等
查:get 安全,幂等