1. 基础环境准备
(1)登录到实训系统,在#后输入service docker restart命令,然后按Enter键,重启docker服务。示例代码如下:
[root@xxx ~]# service docker restart
重启docker服务截图,如图1所示:
(2)修改docker配置文件,在#后输入vi /etc/sysconfig/docker命令,然后按Enter键,编辑docker配置文件。示例代码如下:
[root@xxx ~]# vi /etc/sysconfig/docker
将两行代码注释,如下所示(在下面两行代码前加个“#”号):
#ADD_REGISTRY='--add-registry 127.0.0.1:5000'
#INSECURE_REGISTRY='--insecure-registry 127.0.0.1:5000'
注释代码,如图2所示:
保存退出docker配置文件。
(3)在#后输入service docker restart命令,然后按Enter键,重启docker服务。示例代码如下:
[root@xxx ~]# service docker restart
重启docker服务截图,如图3所示:
以下步骤中需注意,下载镜像前,请配置加速器,具体步骤参考实验五。
(4)下载镜像,在#后输入docker pull nginx命令,然后按Enter键,下载nginx镜像。示例代码如下:
[root@xxx ~]# docker pull nginx
下载nginx镜像成功截,如图4所示:
(5)下载镜像,在#后输入docker pull tomcat命令,然后按Enter键,下载tomcat镜像。示例代码如下:
[root@xxx ~]# docker pull tomcat
下载tomcat镜像成功截图,如图5所示:
(6)查询镜像,在#后输入docker images命令,然后按Enter键,查看镜像列表。示例代码如下:
[root@xxx ~]# docker images
镜像列表截图,如图6所示:
- 创建发布目录
(1)创建www1、www2目录,并写一个默认欢迎页面,在#后面输入mkdir www1 www2命令,创建www1和www2目录,示例代码如下:
root@xxx ~]# mkdir www1 www2
(2) 在#后输入cd www1命令,然后按Enter键,进入www1目录,示例代码如下:
[root@xxx ~]# cd www1/
[root@xxx www1]#
(3)创建www1目录下的index.jsp文件,在#后输入vi index.jsp命令,然后按Enter键,创建index.jsp文件,示例代码如下:
[root@xxx www1]# vi index.jsp
index.jsp文件的内容,如下所示:
<html>
<head>
<title>Tomcat1</title>
</head>
<body>
<%
out.println("this is Tomcat1");
%>
</body>
</html>
(4) 创建www2目录下的index.jsp文件,在#后输入cd …命令,然后#后输入cd www2命令,接着#后输入vi index.jsp命令,创建index.jsp文件,示例代码如下:
[root@xxx www1]# cd …
[root@xxx ~]# cd www2/
[root@xxx www2]# vi index.jsp
index.jsp文件的内容,如下所示:
<html>
<head>
<title>Tomcat2</title>
</head>
<body>
<%
out.println("this is Tomcat2");
%>
</body>
</html>
在#后输入cd命令退回根目录。
3. 创建tomcat容器
(1)启动tomcat1容器,在#后面输入docker run -ti -d -P -h tomcat1 -v /root/www1:/usr/local/tomcat/webapps/ROOT tomcat:latest /bin/bash命令,创建容器,示例代码如下:
[root@xxx ~]# docker run -ti -d -P -h tomcat1 -v /root/www1:/usr/local/tomcat/webapps/ROOT tomcat:latest /bin/bash
启动容器成功,如图7所示:
(2)进入tomcat1容器,启动服务,在#后面输入docker exec -it 41a42d053761 /bin/bash命令(41a42d053761为容器ID,可以通过docker ps -a查询到),然后输入cd bin,接着输入startup.sh,(启动服务需要等待一段时间,约5分钟)示例代码如下:
[root@xxx ~]# docker exec -it 41a42d053761 /bin/bash
root@tomcat1:/usr/local/tomcat# cd bin
root@tomcat1:/usr/local/tomcat/bin# startup.sh
效果代码如图8所示:
(3)退出tomcat1容器,在#后面输入exit命令,然后按Enter键,退出容器,示例代码如下:
root@tomcat1:/usr/local/tomcat/bin# exit
exit
[root@xxx ~]#
(4)启动tomcat2容器,在#后面输入docker run -ti -d -P -h tomcat2 -v /root/www2:/usr/local/tomcat/webapps/ROOT tomcat:latest /bin/bash命令,创建容器,示例代码如下:
[root@xxx ~]# docker run -ti -d -P -h tomcat2 -v /root/www2:/usr/local/tomcat/webapps/ROOT tomcat:latest /bin/bash
启动容器成功,如图9所示:
(5)进入tomcat2容器,启动服务,在#后面输入docker exec -it 2f7386a4401c /bin/bash命令(2f7386a4401c为容器ID,可以通过docker ps -a查询到),然后输入cd bin,接着输入startup.sh,(启动服务需要等待一段时间,约5分钟)示例代码如下:
[root@xxx ~]# docker exec -it 2f7386a4401c /bin/bash
root@tomcat1:/usr/local/tomcat# cd bin
root@tomcat1:/usr/local/tomcat/bin# startup.sh
效果代码如图10所示:
(6)查询tomcat1效果,在#后面输入curl 10.24.2.45:32769命令(ip为宿主机ip,可以通过ip a查询到;端口号为容器的端口号,可以用docker ps -a查询到),然后按Enter键,示例代码如下:
[root@xxx ~]# curl 10.24.2.45:32769
<html>
<head>
<title>Tomcat1</title>
</head>
<body>
this is Tomcat1
</body>
</html>
curl效果代码如图11所示:
(7)查询tomcat2效果,在#后面输入curl 10.24.2.45:32770命令(ip为宿主机ip,可以通过ip a查询到;端口号为容器的端口号,可以用docker ps -a查询到),然后按Enter键,示例代码如下:
[root@xxx ~]# curl 10.24.2.45:32770
<html>
<head>
<title>Tomcat2</title>
</head>
<body>
this is Tomcat2
</body>
</html>
curl效果代码如图12所示:
4. 创建nginx容器,实现负载均衡
(1)创建nginx容器,在#后面输入docker run -itd -p 80:80 --name nginx nginx:latest /bin/bash命令(创建nginx容器的时候注意端口80是不是被占用,如果被占用可以选择使用其他端口。),然后按Enter键,示例代码如下:
[root@xxx ~]# docker run -itd -p 80:80 --name nginx nginx:latest /bin/bash 2abcd7ee80536e4c65366ed59d962603b7c5a7ecd88d0e69046bb07011d65b66
创建nginx如图13所示:
(2)编写nginx.conf文件,在#后面输入vi nginx.conf命令,然后按Enter键,示例代码如下:
[root@xxx ~]# vi nginx.conf
nginx.conf的内容,如下所示( 文件内容中的三处ip要修改成自己的本地ip和端口):
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
upstream wei {
server 10.24.2.45:32769;
server 10.24.2.45:32770;
}
server {
listen 80;
server_name 10.24.2.45;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
proxy_pass http://wei;
}
}
}
(3)将nginx.conf配置拷贝到nginx容器中,在#后面输入docker cp /root/nginx.conf 2abcd7ee8053:/etc/nginx/nginx.conf命令(id为nginx容器的id,可以用docker ps -a查询),然后按Enter键,示例代码如下:
[root@xxx ~]# docker cp /root/nginx.conf 2abcd7ee8053:/etc/nginx/nginx.conf
(4)进入容器,启动nginx服务,在#后面输入docker exec -it 2abcd7ee8053 /bin/bash命令(id为nginx容器的id,可以用docker ps -a查询),然后按Enter键;接着在#后面输入/usr/sbin/nginx,按Enter键,示例代码如下:
[root@xxx ~]# docker exec -it 2abcd7ee8053 /bin/bash
root@2abcd7ee8053:# /usr/sbin/nginx
(5)退出nginx容器,在#后面输入exit命令,然后按Enter键,退出容器,示例代码如下(若退出时间较长,可以刷新浏览器页面):
root@2abcd7ee8053:# exit
exit
[root@xxx ~]#
(6)查看实现效果,在#后面输入for i in ``seq 1 4 ` ;do curl 10.24.2.45;done(ip为本机ip,可以用ip a命令查询)命令,然后按Enter键,查看效果,示例代码如下:
[root@xxx ~]# for i in `seq 1 4`;do curl 10.24.2.45;done
实现效果如图14所示:
通过访问的结果可以看出,我们访问nginx代理站点,能够访问Tomcat1和Tomcat2的服务,实现的负载均衡的效果。