赞
踩
记录时间 [2024-4-8]
前置文章:
Docker学习笔记(一):入门篇,Docker概述、基本组成等,对Docker有一个初步的认识
Docker学习笔记(二):在Linux中部署Docker(Centos7下安装docker、环境配置,以及镜像简单使用)
Docker 学习笔记(三):Centos7 中 Docker 使用,镜像、容器,以及操作等常用命令小结
笔者对关于Docker
学习的文章进行了整理,需要的朋友可以参考上面专栏哦。
学前准备工作:
在前几篇文章中,笔者讲述了关于Docker
学习的入门知识,相信大家对Docker
有了一定的了解,会进行安装,还会一些常用的操作,如查看镜像、创建容器等等。
接下来,本文主要是关于Centos7
中Docker
学习的几个小练习,通过以下练习,相信大家在使用Docker
时会更加得心应手。
Docker
部署Nginx
Docker
部署Tomcat
Docker
部署ES + Kibana
使用docker search
命令搜索nginx
镜像:
docker search nginx
也可在远程仓库中查看nginx
相关信息,快速部署方式:
docker run --name some-nginx -d -p 8080:80 some-content-nginx
查看一些版本信息:
先去远程仓库拉取nginx
镜像,然后下载到本地:
docker pull nginx
下载完成后查看一下:
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 2 years ago 141MB
使用docker run
命令创建容器并运行,参数如下:
-d
:后台运行--name
:给容器命名-p
:暴露端口# 暴露端口 -p 宿主机端口:容器内部端口
docker run -d --name nginx01 -p 3344:80 nginx
使用docker ps
查看容器是否运行
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a794a5252a40 nginx "/docker-entrypoint.…" 16 seconds ago Up 15 seconds 0.0.0.0:3344->80/tcp nginx01
进入宿主机暴露的端口查看:
curl localhost:3344
结果如下:
[root@localhost ~]# curl localhost:3344
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
...
容器端口与宿主机端口之间的联系,如图所示。
http://ip:3344
docker exec -it nginx01 /bin/bash
查看nginx
:
whereis nginx
结果如下:
root@a794a5252a40:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
# 进入 nginx 目录
root@a794a5252a40:/# cd /etc/nginx
# 查看目录下文件
root@a794a5252a40:/etc/nginx# ls
conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
每次改动nginx
配置文件,都需要进入容器内部吗?
显然这十分的麻烦,解决方法是-v
数据卷技术。提供一个映射路径,便可在容器外部对容器内部进行修改。
可在远程仓库中查看tomcat
相关信息,官方使用:
docker run -it --rm tomcat:9.0
对比之前在后台启动,当容器停止后,我们依然可以在宿主机查询到容器的相关信息;
--rm
一般用于测试,当容器停止后,镜像相关的内容就被完全删除了。
docker pull tomcat
下载完成查看一下:
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest fb5657adc892 2 years ago 680MB
启动运行:
docker run -d -p 3355:8080 --name tomcat01 tomcat
启动后可以在浏览器测试访问:
http://ip:3355
发现能成功访问,但是状态为404
未找到!为什么呢?
因为阿里云镜像中默认是最小的镜像,所有不必要的东西都被剔除掉了,只保证最小可运行的环境。
tomcat
不是完整版;Linux
命令不完整;webapps
目录下没有内容。先进入tomcat01
容器:
docker exec -it tomcat01 /bin/bash
查看下当前目录,发现存在webapps.dist
目录
root@704918de29fa:/usr/local/tomcat# ls
BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
进入该目录查看下里面的内容,发现里面正是webapps
目录下所需要的内容
root@704918de29fa:/usr/local/tomcat# cd webapps.dist
root@704918de29fa:/usr/local/tomcat/webapps.dist# ls
ROOT docs examples host-manager manager
回到上一级目录
cd ../
把webapps.dist
目录下的所有内容拷贝到webapps
目录
cp -r webapps.dist/* webapps
查看是否拷贝成功:
root@704918de29fa:/usr/local/tomcat# cd webapps
root@704918de29fa:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
然后浏览器测试一下,刷新404
界面,可以看到服务启动成功了。
如果每次都要进入容器中部署项目,是否十分麻烦?
解决思路:在容器外部提供一个映射路径webapps
,在外部放置项目就能自动同步到容器内部。
可在远程仓库中查看elasticsearch
相关信息,elasticsearch
更多信息。
官方使用:
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
部署elasticsearch
需要注意的地方:
--net somenetwork
# 启动 elasticsearch
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
注意:启动之后 Linux 会非常卡!非常卡!
curl localhost:9200
成功
[root@localhost ~]# curl localhost:9200
{
......
"tagline" : "You Know, for Search"
}
用docker stats
查看下CPU
状态:
docker stats
结果如下,elasticsearch
占据了很大部分内存,所以就卡住了。
[root@localhost ~]# docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT
5164b9a709df elasticsearch 9.02% 1.257GiB / 1.694GiB
弄完赶紧关掉吧
docker stop 容器id
限制内存方法:修改配置文件,使用-e
修改环境配置。
重新运行一个带参数的elasticsearch
:
docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
查看CPU
状态就会发现,它正常很多了,不会卡了。
那么,Kibana
和ES
如何连接呢?
Docker
容器之间是隔离的!Linux
的内部网络进行转发,涉及网络原理。本文讲述了三个Centos7
中Docker
学习的小练习,通过练习,我们对Docker
暴露端口、进入容器操作,以及容器配置文件修改等有了更加深入的认识。
一些参考资料
狂神说系列Docker
教程:https://www.bilibili.com/video/BV1og4y1q7M4/
Docker
官方文档:https://docs.docker.com/engine/install/centos/
Docker
远程仓库:https://hub.docker.com/
FinalShell
下载:http://www.hostbuf.com/t/988.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。