2021-10-14windows docker入门

这篇博客介绍了Docker的基础知识,包括应用场景、核心概念(镜像、容器、仓库)、常用命令,以及数据管理和容器互联。此外,还讲解了如何使用DockerFile创建镜像,并演示了在Docker容器中部署Tomcat服务和管理war包的过程。
摘要由CSDN通过智能技术生成

docker应用场景

  • Web应用的自动化打包和发布(√)
  • 自动化测试和持续集成、发布
  • 在服务型环境中部署和调整数据库或其他后台应用
  • 从头编译或扩展现有的OpenShift或Cloud Foundry平台来搭建PaaS环境

三大概念

  1. 镜像:一个模板,类似app应用
  2. 容器:装东西的,类似于沙盒,是动态的,保证每个app有自己的环境,相互隔离
  3. 仓库:存放镜像文件的,是静态的,类似app应用商店

命令

  • Docker帮助文档
    在这里插入图片描述
  • Docker 测试(过程包括):
  1. Docker client与Docker Daemon连接
  2. Docker Daemon从Docker Hub中拉取一个hello-world的镜像image
  3. Docker根据镜像image创建容器container
  4. Docker Daemon将输入发给Docker Client

在这里插入图片描述

  • 获取镜像
    在这里插入图片描述
//这条命令可以从默认的公共仓库拉取最新的hello-world镜像
docker pull hello-world:latest
  • 查看镜像
    具体使用可以看
docker images --help

在这里插入图片描述
图片中的tag是给镜像做的标签

  • 使用inspect查看详细信息
    具体使用可以看
docker inspect --help

在这里插入图片描述

  • 使用history查看镜像历史记录
    在这里插入图片描述
  • 镜像查找
    具体使用可以看
docker search --help

查找stars大于3且包含hello-world的镜像
在这里插入图片描述

  • 删除镜像
// 具体使用可以看
docker search --help
//使用标签删除镜像
docker rmi myhello-world:latest
//使用镜像ID删除镜像,注意如果当前被删除正在被容器使用就要先停掉容器
docker rmi 你的镜像ID
  • 查看容器
    在这里插入图片描述
  • 创建镜像
  1. 基于已有镜像的容器创建
// 具体使用可以看
docker commit --help
//创建cuiyw-hello-world镜像
docker commit -m "add a image" -a "cuiyw" 你的容器ID cuiyw-hello-world

  1. 基于本地模板导入
 
	 //1. 创建本地模板
	// 具体使用可以看
	docker export --help
	//导出tar包
	docker export 你的容器ID -o G:\hello-world.tar
	//2. 导出文件并设置新名字
	docker import G:\hello-world.tar  hello-world-import:latest
  • docker另存和载入镜像(以文件形式)
	// 保存镜像,具体使用可以看
	docker save --help
	docker save -o G:\helloworld-save.tar hello-world
	//导出镜像
	docker load -i G:\helloword-save.tar

  • 新建与启动容器
//新建容器
docker create -it ubuntu
 //查看ubuntu
docker ps -a
//启动容器后,再看状态变成up
docker start 你的容器id
//docker run -it ubuntu

docker run标准操作
1. 检查本地是否存在指定的镜像,不存在就在共有仓库中下载
2. 利用镜像创建一个容器并启动
3. 分配一个文件系统给容器,并在制度的镜像层外面挂在一层可读写层
4. 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器
5. 从网桥的地址配置一个IP地址给容器
6. 执行用户指定的应用程序
7. 执行完毕后容器自动终止

  • 守护态运行
    有时需要让docker容器在后台以守护态形式运行,可以通过 -d来实现
    在这里插入图片描述
  • 终止容器
    在这里插入图片描述
  • 进入容器
    启动容器后就是进入容器
docker exec keen_golick bin/bash

在这里插入图片描述
按ctrl+D和ctrl+P组合退出容器

  • 容器的导入与导出
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 搭建本地私有仓库
  1. 搭建仓库(在容器中搭建一个仓库镜像)
    这里的-p 5000:5000的作用是用来进行端口映射的,映射本机5000端口到虚拟机的5000端口。在启动容器时,如果不匹配宿主机器与虚拟机的端口映射,外部程序就会因为没有端口而无法访问虚拟机。
    在这里插入图片描述

  2. 给待上传镜像设置tag(给registry设置tag)
    在这里插入图片描述

  3. 上传到仓库(上传镜像到仓库)
    在这里插入图片描述

数据管理

在Docker中,可能需要对数据进行持久化或需要在多个容器间进行数据共享,会涉及到容器的数据管理操作。两种方式:数据卷;数据卷容器;

数据卷是一个可供容器使用的特殊目录,将主机操作系统目录直接映射进容器,特性:

  1. 数据卷可以在容器之间共享和重用,容器间传递数据将变得高效方便。
  2. 对数据卷内数据的操作会立马生效,无论是容器内还是本地操作。
  3. 对数据卷的更新不会影响镜像,解耦了应用与数据。
  4. 卷一直存在,直到没有容器使用,可以安全地卸载它。
    数据卷可以有两种方式存在:一是挂载主机目录作为数据卷;二是在容器内创建一个数据卷。
  • 挂载主机目录作为数据卷,创建了一个ubuntu镜像的容器test
    在这里插入图片描述
  • 在容器内创建一个数据卷,创建了一个ubuntu镜像的容器vtest
    在这里插入图片描述
  • 数据卷容器
    把test作为数据卷容器,另外创建了db1、db2两个容器,使用–volumes-from参数挂载test容器中的数据卷
    在这里插入图片描述

通过docker run --help
可以看到-p(指定端口绑定一个容器)与-P(随机49000~49900)的区别
在这里插入图片描述

容器互联

实际应用往往需要多个容器交互,一个数据库容器提供db服务,多个应用容器来部署应用,使用端口访问会暴露端口,不太安全
学习使用link,但link只针对单宿主主机。

  1. 启动mysql server
    在这里插入图片描述
  2. 使用link关联两个容器关联相当于在它们之间创建了一个虚拟通道,而且不用映射端口到宿主主机上。通过两种方式为容器公开连接信息:一是更新环境变量,二是更新/etc/hosts文件
    在这里插入图片描述
    进入容器webapp查看它的环境变量和hosts文件
    在这里插入图片描述

DockerFile

DockerFile是一个包含用于组合映像的命令的文本文档,可以在docker build命令中使用 -f标志指向文件系统中任何位置的Dockerfile

docker build -f /path/to/a/Dockerfile

Docker容器Tomcat部署war包

  1. 创建tomcat容器
    在这里插入图片描述
    访问http://localhost:8080/失败
    阿里云导致的失败

  2. 上传war包到tomcat容器
    在这里插入图片描述

  3. 重启容器
    在这里插入图片描述

  4. 访问应用
    在这里插入图片描述
    报错

  5. 访问应用以挂载方式启动
    上述执行会有一个弊端,容器重启后项目会不存在,可以以挂载方式启动
    在这里插入图片描述
    失误

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。1

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值