端口映射
客户端访问容器的时候,不能直接访问 ,只能跟宿机绑定端口后才能访问
绑定端口
- -p 宿主机端口:容器端口
docker run -d --name cat3 -p 8001:8080 tomcat
访问测试 : 192.168.64.150:8001
部署一个 Hell world web应用
首先知道容器的部署路径
宿主机中创建目录 并且里面写 jsp 代码
mkdir /opt/web
cat <<EOF >/opt/web/index.jsp
<h1>Hello world!</h1>
<h1>Hello <%=request.getParameter("name")%>!</h1>
EOF
创建 命名是cat4 的容器 端口绑定,挂载目录
docker run -d --name cat4 \
-p 8088:8080 \
-v /opt/web:/usr/local/tomcat/webapps/ROOT \
tomcat
浏览器访问服务器映射的 8088 端口
http://192.168.64.150:8088 http://192.168.64.150:8088/?name=zhangsan
容器互联
创建虚拟网路
创建前 保证没有相似的虚拟网路 做个删除操作
docker network rm my-net
1 - 创建虚拟网路 my-net
docker network create my-net
2 - 查看虚拟网路
docker network ls
docker inspect my-net
3 - 宿主机上会新建虚拟网卡,连接虚拟网络
ifconfig
虚拟网路:br-xxxxxxx
链接容器
1 - 启动容器连接到 my-net 网络
如果没设置虚拟ip的话,自动分批虚拟ip
docker run -d --name cat5 \
--net my-net \
tomcat
两个容器链接到 1 个虚拟网路
docker run -d --name cat6 \
--net my-net \
tomcat
2 - 查看容器的ip
docker inspect cat5
docker inspect cat6
3 - 从宿主机ping两个容器的ip
ping 172.18.0.2
ping 172.18.0.3
4 - 进入 cat5 容器,ping宿主机和cat6
docker exec -it cat5 ping 172.18.0.1
docker exec -it cat5 ping 172.18.0.3
docker exec -it cat5 ping cat6
DockerFile
是配置镜像构建的流程 ———— 相当于是装机过程,配置的是一个装机的流程
如果我不想从官网上下载镜像,而且自己做一个镜像 那么使用此方法
构建tomcat镜像:
- 选择一个基础镜像(可以是一个空操作系统镜像)
- 添加 jdk 文件和 tomcat 文件
- 配置环境变量
- 设置默认的启动命令
1 - 准备
- centos:7镜像
- jdk压缩包
jdk-8u212-linux-x64.tar.gz
- tomcat7压缩包
apache-tomcat-7.0.96.tar.gz
2 - 配置Dockerfile文件
- Dockerfile 名字固定的不能改
- Dockerfile 文件中不能注释,不能写汉字
vm Dockerfile
FROM centos:7
ADD jdk-8u212-linux-x64.tar.gz /opt/
ADD apache-tomcat-7.0.96.tar.gz /usr/
RUN mv /usr/apache-tomcat-7.0.96 /usr/tomcat
ENV JAVA_HOME=/opt/jdk1.8.0_212 \
CATALINA_HOME=/usr/tomcat \
PATH=$PATH:/opt/jdk1.8.0_212/bin:/usr/tomcat/bin
EXPOSE 8080
ENTRYPOINT /usr/tomcat/bin/startup.sh && tail -F /usr/tomcat/logs/catalina.out
配置里面包含 :
- 导入了空的 centos7 镜像
- 导入jdk 和 tomcat 压缩包
- 名字长 改了名字
- 配置了 环境变量
- 暴露了端口
- 生成镜像
3 - 使用 Dockerfile 构建镜像
docker build -t tomcat:7 /root/tomcat7/
docker build -t 镜像名:标签 文件夹路径
4- 启动容器
docker run -d --name cat7 \
-p 80:8080 \
-v /opt/web:/usr/tomcat/webapps/ROOT \
tomcat:7
把我们做的镜像 启动 里面的 端口 给了 80 容器和宿机 挂载
http://192.168.64.150