一、概述
1.应用背景
- 环境配置非常麻烦,每一个机器都要部署环境(集群Redis,ES,Hadoop…)
- 发布一个项目(jar+(redis MySQL jdk ES)),项目带上环境安装打包
- 传统:开发jar,运维来做
- 现在:开发打包部署上线,一套流程做完
- java— jar(环境)—打包项目带上环境(镜像)----(Docker仓库:商店)----下载发布的镜像—直接运行即可!
2.特点
- 隔离是Docker的核心思想!打包装箱!每个箱子是互相隔离的,Docker通过隔离机制,可以将服务器利用到极致
- Docker相对于虚拟机来说,十分的轻巧
- Docker基于Golang开发
- DevOps(开发、运维):更快速的交付和部署
- Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器
3.相关文档地址
- 官网:www.docker.com
- 文档地址:docs.docker.com
- 仓库地址:https://hub.docker.com
4.结构

*
- 仓库(repository):存放镜像的地方,分为公有仓库和私有仓库
5.应用场景
- Web 应用的自动化打包和发布
- 自动化测试和持续集成、发布
- 在服务型环境中部署和调整数据库或其他的后台应用
- 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境
二、Docker命令
1.启动Docker
systemctl start docker
2.查看Docker版本
docker version # 完整显示
docker -v # 缩略显示
3.查看Docker系统信息
docker info [OPTIONS]
4.管理Docker
1.docker system df
查看docker磁盘使用量
docker system df [options]
- -v:查看详细信息
2.docker system prune
移除未使用的数据
docker system prune [OPTIONS]
- -a:删除所有未使用的数据
- -f:直接删除无需询问
- –volumes:删除数据卷
二、镜像
镜像(image):就相当于是一个 root 文件系统,就好比是一个模板,可以通过这个模板来创建容器服务,通过该镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)
1.镜像参数
- REPOSITORY:表示镜像的仓库源
- TAG:镜像的标签
- IMAGE ID:镜像ID
- CREATED:镜像创建时间
- SIZE:镜像大小
2.指令大全
| 指令 | 描述 |
|---|---|
| docker image build | 从Dockerfile中构建一个镜像 |
| docker image inspect | 显示一个或多个镜像的信息 |
| docker images | 列出所有镜像 |
| docker pull | 下载镜像 |
| docker search | 搜索镜像 |
| docker image push | 上传镜像 |
| docker rmi | 删除镜像 |
| docker image tag | 创建一个目标镜像指向源镜像 |
| docker image history | 显示一个镜像的历史 |
1.docker image build
从Dockerfile中构建一个镜像
docker image build [OPTIONS] PATH | URL | -
2.docker images
列出所有镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
- –all, -a:列出所有镜像
- –quiet, -q:只显示镜像的ID
- –format:格式化输出
docker images --format "{{.ID}}: {{.Repository}}"
77af4d6b9913: <none>
b6fa739cedf5: committ
78a85c484f71: <none>
30557a29d5ab: docker
5ed6274db6ce: <none>
746b819f315e: postgres
746b819f315e: postgres
746b819f315e: postgres
746b819f315e: postgres
3.docker search
在Docker Hub上搜索镜像
docker search [OPTIONS] TERM
4.docker pull
下载镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
- 记得配置加速镜像
- 如果不写tag,默认就是最新版
- 分层下载,docker image的核心——联合文件系统
5.docker rmi
删除一个或多个镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
- -f:强制删除
三、容器
容器(container):docker利用容器技术,独立运行一个或一个组应用,通过镜像来创建,启动、停止、删除等基本命令,目前可以把容器理解为一个简易的linux系统。镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
1.指令大全
| 指令 | 描述 |
|---|---|
| docker create | 新建一个容器但不启动 |
| docker run | 启动一个容器 |
| docker ps | 列出所有容器 |
| docker stop | 停止一个或多个容器 |
| docker start | 启动一个或多个停止的容器 |
| docker restart | 重启容器 |
| docker stats | 实时显示容器的资源使用量 |
| docker kill | 杀死容器 |
| docker rm | 删除容器 |
| docker exec | 在运行的容器中执行命令 |
| docker port | 列出容器的端口映射或特定映射 |
1.docker create
新建一个容器但不启动
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
2.docker run
启动一个容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
- –name:给容器起名
- -d:以后台形式运行容器,并输出容器id
- -p:指定容器端口
- -P:暴露随机端口
- -v:数据卷挂载
- -e:配置环境变量
- -it:以交互的方式运行容器
- –volumes-from:从指定容器挂载数据卷
- –network:连接网络
docker run -it --rm tomcat:9.0 # 用完删除,多用于测试
docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
# 默认绑定tcp端口,如果要绑定UDP端口,在端口后面加上/udp
docker run -itd --name test1 --network test-net ubuntu /bin/bash
# 运行一个容器并连接到新建的test-net网络
- docker容器使用后台运行时,必须要有一个前台进程,docker发现没有应用,就会自动停止
3.docker ps
列出所有容器
docker ps [OPTIONS]
- -a:列出所有容器(默认只列出正在运行的容器)
- -n:列出近n条使用的容器
- -q:只显示容器的ID
- -s:显示容器大小
4.docker stop
停止一个或多个运行的容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]
5.docker start
启动一个或多个停止的容器
docker start [OPTIONS] CONTAINER [CONTAINER...]
- -t:在杀死一个容器前指定等待时间(默认为10s)
6.docker stats
实时显示容器的资源使用量
docker stats [OPTIONS] [CONTAINER...]
- -a:显示所有容器(默认为运行的容器)
- –no-stream:只显示第一个结果
7.docker kill
杀死一个或多个运行的容器
docker kill [OPTIONS] CONTAINER [CONTAINER...]
8.docker rm
删除一个或多个容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
- -f:强制删除
- -v:删除与容器关联的匿名数据卷
9.docker port
列出容器的端口映射或特定映射
docker port CONTAINER [PRIVATE_PORT[/PROTO]]
docker port test
docker port test 7890/tcp
docker port test 7890/udp
仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像
2.Docker容器互联
端口映射并不是唯一把 docker 连接到另一个容器的方法。docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。
四、Dockerfile
Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明
1.指令大全
1.FROM
dockerfile开始于from指令,从一个Base Image开始构建镜像
FROM [--platform=<platform>] <image> [AS <name>]
2.ARG
构建时指定的一些参数
3.RUN
构建镜像时运行的指令
4.CMD
运行容器时执行的shell环境

1977

被折叠的 条评论
为什么被折叠?



