01. 镜像相关命令
-
查看镜像: 查看本地所有的镜像
docker images docker images -q #查看所有镜像的id
-
搜索镜像: 从网络中查找需要的镜像
docker search 镜像名称
-
拉取镜像
docker pull 镜像名称:版本号
-
删除镜像: 删除本地镜像
docker rmi 镜像id #删除指定本地镜像 docker rmi `docker image -q` #删除所有本地镜像
02. 容器相关命令
-
查看容器
docker ps #查看正在运行的容器 docker ps -a #查看所有容器
-
创建并启动容器
docker run 参数 容器名 镜像
-
参数说明:
-
-i: 保持容器运行.通常与 -t 连用,加入这两个参数后,容器创建后自动进入容器中,退出( exit )容器后,容器自动关闭
-
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-
-d: 以守护 (后台) 模式运行容器,创建一个容器在后台运行,进入容器,退出后,容器不会关闭
-
进入容器:
docker exec 参数 容器id 路径
-
-
-it: 创建的容器一般称为交互式容器
-
–name: 为创建的容器命名
-
-
停止容器:
docker stop 容器名
-
启动容器:
docker start 容器名
-
删除容器:
docker rm 容器名 | id #无法删除正在运行的容器 docker rm `docker ps -aq` #删除所有的容器
-
查看容器信息:
docker inspect 容器名称
03. 数据卷
-
是宿主机中的一个目录或文件
-
当容器目录和数据卷目录绑定后,对方的修改会立即同步
-
作用:
- 容器数据持久化
- 外部及其和容器间的通信
- 容器之间的数据交换
-
实例:
// 创建启动容器时,使用 -v 参数设置数据卷 docker run 参数 容器名 -v 宿主机目录(文件):容器内目录(文件) 镜像 路径
- 目录必须是绝对路径
- 如果目录不存在,会自动创建
- 可以挂载多个数据卷
3.1 数据卷容器
-
方便多个容器进行数据交换
-
创建启动c3数据卷容器,使用 -v 参数设置数据卷目录
docker run -it --name=c3 -v 宿主机目录:容器目录 centos:7 /bin/bash
-
创建启动 c1 c2 容器,使用 --volumes-from 参数,让其他容器继承该容器的数据卷
docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash
-
创建一个容器,挂载一个目录,让其他容器继承自该容器(–volime-from)
-
通过简单方式实现数据卷配置
04. 应用部署
#第一步: 拉取镜像
docker pull 镜像名
#第二步: 创建目录并进入目录
mkdir 目录名
#第二步: 应用部署
docker run -id -p 宿主机端口:容器端口 容器名 -v $pwd/data:var/lib/mysql 镜像
#部署mysql
docker run -id -p 3306:3306 --name=c_mysql -v /root/data:/root/data -e MYSQL_ROOT_PASSWORD=1234 mysql
05. 镜像制作
-
镜像的本质是多个叠加的文件系统,最底层的称为基础镜像,可以提高复用性
-
容器转为镜像:
#容器转为镜像: docker commit 容器id 镜像名称:版本号 #压缩镜像: #挂载在镜像上的文件无法被压缩 docker save -o 压缩文件名称 镜像名称:版本号 #解压镜像: docker load -i 压缩文件名称
-
Dockerfile:
-
概念: 是一个文本文件,包含了一条条指令,每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
-
常用关键字:
关键字 作用 备注 FROM 指定父镜像 基于那个镜像来构建 MAINTAINER 作者信息 标注作者 LABEL 标签 表名dockerfile的标签,最终可以在docker image中看见 RUN 创建执行命令 默认 /bin/bash CMD 容器启动执行命令 提供启动容器启动时的默认命令,和ENTRYPOINIT配合使用,格式: command param1 params ADD 添加文件 build的时候添加文件到umage中,也可以添加远程文件 VOLUME 定义外部可以挂载的数据卷 指定容器的那些目录可以挂载到系统文件,启动的时候使用 -v 绑定数据卷 EPOSE 暴露端口 定义容器运行时监听的端口, 启动容器时使用 -p 来绑定端口 WORKDIR 工作目录 进入容器时停靠的位置 -
自定义Dcokerfile文件:
# 1.定义父镜像 FROM java:8 # 2.定义作者信息 MAINTAINER 信息 # 3.定义容器启动执行的命令 CMD java -jar jar包
-
执行文件:
# . 将来寻址的路径 docker build -f 文件位置 -t 镜像名称:版本号
-
06. 服务编排
-
按照一定的业务规则批量管理容器
-
Docker Compose:
- 编排多容器的分布式部署工具,提供命令集管理容器化的完整开发周期
-
安装Docker Compose
// 安装 sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose // 设置权限 chmod +x docker-compose // 查看版本号 docker-compose -v // 卸载Docker Compose rm /use/local/bin/docker-compose
-
部署Spring boot项目:
-
使用步骤:
-
1, 利用Dockerfile定义运行环境镜像
-
2,使用docker-compose.yml定义组成的应用的各服务
// 版本号 version: '3' // 定义容器名 services: eureka-server: image: microservice/eureka-server build: platform-cloud-eureka volumes: - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime restart : always ports: - "8080:8080" privileged: true networks: - miconet config-server: image: microservice/config-server build: platform-cloud-config volumes: - ./logs:/logs - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime restart : always ports: - "8081:8081" links: - "eureka-server" command: sh -c './wait-for-it.sh eureka-server:8080 -t 0 -- java -Djava.security.egd=file:/dev/./urandom -jar /app.jar' privileged: true networks: - miconet system-server: image: microservice/system-server build: platform-cloud-system-server volumes: - ./logs:/logs - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime restart : always ports: - "8082:8082" command: sh -c './wait-for-it.sh config-server:8081 -t 0 -- java -Djava.security.egd=file:/dev/./urandom -jar /app.jar' privileged: true networks: - miconet networks: miconet:
-
3,运行docker-compose.up
docker-compose up -d/后台运行
-