Docker学习

一、概述

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.结构

img
*

  • 仓库(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环境

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值