02. 第一个Docker部署应用

2023-08-14 13:11:16 浏览数 (1)

1、前言

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

2、Docker部署Nginx

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

按照上述的体系结构图。

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

代码语言:shell复制
docker search nginx

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

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

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

代码语言:javascript复制
docker pull nginx

3)查看本地镜像。

代码语言:javascript复制
docker images

4)创建Nginx容器。

代码语言:javascript复制
docker run -d -p 1111:80 nginx

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

5)查看容器信息。

代码语言:javascript复制
docker ps

6)访问Nginx。

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

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

7)销毁容器和镜像。

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

代码语言:shell复制
# 停止容器
docker stop 容器ID或名称  
# 移除容器 
docker rm -f 容器ID或名称 
# 销毁镜像 
docker rmi  镜像ID

3、修改镜像存储路径

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

3.1、默认存储路径

我们查看下docker信息:

代码语言:javascript复制
docker info

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

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

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

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

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

代码语言:javascript复制
find . -name 镜像ID*

3.2、自定义存储路径

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

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

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

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

代码语言:javascript复制
cd /etc/docker 
vim daemon.json

deamon.json中添加内容:

代码语言:json复制
{     
    "graph": "/data/docker" 
}

3.2.3、重启docker服务

代码语言:javascript复制
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、访问阿里云

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

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

4.1.2、修改/etc/docker下配置

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

代码语言:shell复制
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、验证加速器

代码语言:javascript复制
docker info | tail

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

5、拉取Tomcat镜像

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

5.1、拉取Tomcat

代码语言:javascript复制
docker pull tomcat

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

5.2、运行tomcat

代码语言:javascript复制
docker run --name mytomcat -d -p 8081:8080 tomcat

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

5.3、创建一个Tomcat应用

进入tomcat容器内部。

代码语言:javascript复制
docker exec -it 容器ID /bin/bash  

# 退出容器可以使用exit 
exit

写入一个简单的html页面。

代码语言:javascript复制
mkdir webapps/demo echo "<h1>my docker first tomcat demo</h1>" > webapps/demo/index.html

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

0 人点赞