02. 第一个Docker部署应用

目录

1、前言

2、Docker部署Nginx

3、修改镜像存储路径

3.1、默认存储路径

3.2、自定义存储路径

3.2.1、创建自定义的镜像存储路径

3.2.2、创建Docker守护进程的配置文件

3.2.3、重启docker服务

3.2.4、重新查看docker路径

4、配置镜像加速

4.1、配置阿里镜像加速器

4.1.1、访问阿里云

4.1.2、修改/etc/docker下配置

4.1.3、验证加速器

5、拉取Tomcat镜像

5.1、拉取Tomcat

5.2、运行tomcat

5.3、创建一个Tomcat应用


1、前言

上一篇文章我们认识了什么是Docker,以及搭建Docker基础环境。那么今天我们就来使用Docker部署我们的第一个应用,从部署中我们加深认识关于Docker的各个组件和概念,记住这张体系结构图。

2、Docker部署Nginx

先尝试简单部署个Nginx,初步了解下Docker是如何拉取镜像的。

按照上述的体系结构图。

1)首先,我们需要到镜像仓库中搜索Nginx的镜像。

docker search nginx

我们可以看到OFFICIAL列有几个显示[OK]。这些表示该镜像是Docker官方提供的。

2)从镜像库中拉取Nginx镜像到本地(宿主机)。

这里默认拉取docker.io/library/nginx镜像,即官方提供的Nginx镜像:

docker pull nginx

3)查看本地镜像。

docker images

4)创建Nginx容器。

docker run -d -p 1111:80 nginx
  • -d:启动容器守护进程(deamon)。
  • -p:将容器内端口(80)映射到宿主机端口(1111)。这样相当于宿主机端口(1111)就可以访问容器内部(80)端口了。

5)查看容器信息。

docker ps

6)访问Nginx。

这里每个人虚拟机IP不一样,可以使用ifconfig自行查看。

http://虚拟机IP:111。 可以看到nginx界面已经出来了。

7)销毁容器和镜像。

如果需要终止容器,或销毁容器,则销毁容器命令和销毁镜像命令:

# 停止容器
docker stop 容器ID或名称# 移除容器
docker rm -f 容器ID或名称# 销毁镜像
docker rmi  镜像ID

3、修改镜像存储路径

上一节中,就是基础的docker构建第一个应用的基础流程。其中第一步我们是需要拉取镜像仓库中的文件到我们本地仓库。那么不知道有没留意到,我们至始至终是都没有指定任何本地(宿主机)存储这些镜像文件的路径的,那么他们是存储在哪里的?

3.1、默认存储路径

我们查看下docker信息:

docker info

我们可以看到“Docker Root Dir”:/var/lib/docker。没错,这里就是默认的镜像存储路径。

可以使用docker info | grep "Root Dir"可以更直接看到。

那么我们进去该目录看下:

看这个结构,好像确实是docker的存储信息,因为有我们熟悉的containers(容器),image(镜像)等。但是没有我们上面存储的nginx镜像啊?别急。

使用我们的镜像ID来查找我们的镜像文件:

find . -name 镜像ID*

3.2、自定义存储路径

然而在实际生产环境中,Docker默认的路径一般都为系统盘,因此我们往往都需要指定我们自己的数据盘路径来存储镜像。

3.2.1、创建自定义的镜像存储路径

我自定义的路径为/data/docker

3.2.2、创建Docker守护进程的配置文件

cd /etc/docker
vim daemon.json

deamon.json中添加内容:

{"graph": "/data/docker"
}

3.2.3、重启docker服务

systemctl daemon-reload
systemctl restart docker

3.2.4、重新查看docker路径

已经变更为我们自定义的新路径。

4、配置镜像加速

在搭建基础环境那一篇中,我们介绍到了Docker有一个基础的公有镜像仓库Docker Hub。我们上面使用docker search和docker pull命令都是从Docker Hub中拉取的。

有时候,我们发现这样的拉取速度很慢。这是因为Docker Hub是国外的镜像仓库,因此我们通常需要配置国内的镜像加速器。Docker可以配置国内镜像加速器,比如阿里云,网易蜂巢,Docker中国区官方加速器等。

以下使用阿里云镜像加速为例。

4.1、配置阿里镜像加速器

4.1.1、访问阿里云

首先注册一个阿里云账号。进入阿里云官网搜索容器镜像。进入容器镜像服务网站:

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

4.1.2、修改/etc/docker下配置

按照操作文档,我们虚拟机是CentOS。可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxxxxxxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

4.1.3、验证加速器

docker info | tail

可以看到Registry Mirrors已经设置成阿里云的镜像加速器。

5、拉取Tomcat镜像

上面配置完自定义存储路径和加速器后,我们再来拉取一个Tomcat镜像来试验一下。

5.1、拉取Tomcat

docker pull tomcat

我们可以看到拉取速度快了很多。

5.2、运行tomcat

docker run --name mytomcat -d -p 8081:8080 tomcat

访问http://ip:8081可以看到tomcat页面,404是因为都还未部署应用。

5.3、创建一个Tomcat应用

进入tomcat容器内部。

docker exec -it 容器ID /bin/bash# 退出容器可以使用exit
exit

写入一个简单的html页面。

mkdir webapps/demo
echo "<h1>my docker first tomcat demo</h1>" > webapps/demo/index.html

接着在访问http://ip:8081/demo/index.html。我们便能看到我们创建的页面效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/28228.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】继承

本篇文章会对c中的继承进行讲解。其中讲解了继承的概念及定义、基类和派生类对象赋值转换、继承中的作用域、派生类的默认成员函数 和 复杂的菱形继承及菱形虚拟继承等内容。希望本篇文章会对你有所帮助。 文章目录 一、继承的概念及定义 1、1 继承的概念 1、2 继承的定义 二、…

OpenMMLab MMTracking目标跟踪环境搭建(一)

1、环境搭建 创建conda虚拟环境并激活。 conda create -n mmtrack python3.8 -y conda activate mmtrack 按照官方说明安装 PyTorch 和 torchvision 可以通过指定版本号切换到其他版本。 #如果网不好&#xff0c;可以这样安装 pip3 install torch1.8.2cu102 torchvision0.9…

低代码或将颠覆开发行业?

文章目录 前言一、什么是低代码开发平台二、强大的平台总结 前言 传统的软件开发过程往往需要耗费大量的时间和精力&#xff0c;因为开发人员需编写复杂的代码以完成各种功能。 低代码行业的发展&#xff0c;正好解决了这个问题&#xff0c;让复杂的代码编写一去不复返了。 …

阿里云GPU服务器使用教程_创建_连接_GPU驱动_实践教程

阿里云GPU服务器怎么使用&#xff1f;先创建GPU实例、GPU云服务器远程连接&#xff0c;为GPU云服务器安装GPU驱动、安装GRID驱动等&#xff0c;使用GPU服务器部署NGC环境、GPU AI模型训练教程、在GPU实例上使用RAPIDS加速机器学习任务、RAPIDS加速机器学习等使用教程&#xff0…

Redis数据类型与常用命令

文章目录 前言一、Redis数据类型1. Redis数据类型简介2. Redis数据类型特点 二、Redis常用命令1. 字符串string 操作命令2. 哈希hash 操作命令3. 列表list 操作命令4. 集合set操作命令5. 有序集合 sorted set 操作命令6. 通用命令 总结 前言 为了巩固所学的知识&#xff0c;作…

0基础学习VR全景平台篇 第62篇:基本功能-如何发布VR视频

戳我先了解“全景视频上传规范” 1、点击【上传】按钮&#xff0c;打开本地文件夹&#xff0c;上传符合要求的全景视频素材&#xff0c;可以选择单个或多个视频同时上传。 2、视频上传成功以后&#xff0c;需要处理一段时间&#xff0c;请耐心等待。 视频处理好以后&#xff0…

element-plus坑总结

reactive和ref对比 // 定义变量 import { reactive } from vue; const person reactive({name: "John",age: 25, });// 赋值修改 person.name "Tom"; person.age 26;// 使用变量 <div>{{ person.name }}</div> <button click"perso…

java用 postman输入 数字 会加上单引号 和逗号,方便查询

java用 postman输入 数字 会加上单引号 和逗号&#xff0c;方便查询 /*** 输入12575726* 891006* 12575726* 891006* 返回* 12575726,* 891006,* 12575726,* 891006* 方便查询数据* param data* return*/RequestMapping(value "l…

MySQL八股学习记录5MySQL锁from小林coding

MySQL八股学习记录5MySQL锁from小林coding 锁的总览全局锁表级锁表锁元数据锁意向锁AUTO-INC锁 行级锁Record LockGap LockNext-Key-Lock插入意向锁行级锁是如何作用的唯一索引等值查询 唯一索引范围查询非唯一索引等值查询 锁的总览 MySQL锁分为三种,分别是全局锁,表级锁,行级…

从零开始学习 Java:简单易懂的入门指南(一)

Java基础语法 1. 人机交互1.1 什么是cmd&#xff1f;1.2 如何打开CMD窗口&#xff1f;1.3 常用CMD命令1.4 CMD练习1.5 环境变量 2. Java概述1.1 Java是什么&#xff1f;1.2下载和安装1.2.1 下载1.2.2 安装1.2.3 JDK的安装目录介绍 1.3 HelloWorld小案例1.3.1 Java程序开发运行…

RK3588+FPGA视频实时处理与双屏显示、存储解决方案

主板平台的主要功能电路示意图 在ARM端: 脚踏开关是电平输入10 口&#xff0c;双路。 触摸面板与主板的连接方式为 UART 外加12V 电源。 键盘为自开发产品&#xff0c;通过USB透传 UART&#xff0c;并传递12V电源USB、千兆网络为主板上的接口&#xff0c;USB 为3.0版本host 接口…

【iOS】编译与链接

前言 计算机语言分为机器语言、汇编语言和高级语言。 可以将高级语言分为两种&#xff1a;编译语言和解释型语言&#xff08;直译式语言&#xff09;。 解释型语言&#xff08;逐步进行解释执行&#xff09; 解释语言编写的程序在每次运行时都需要通过解释器对程序进行动态…