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。我们便能看到我们创建的页面效果: