设置容器的端口映射
docker run -pP
-P,--publish-all=true|false 默认是false
docker run -P -it ubuntu /bin/sh
-p,--publish=[]
containerPort#只指定容器的端口,宿主机端口随机映射
docker run -p 80 -it ubuntu /bin/sh
hostPort:containerPort#同时指定宿主机端口和容器端口
docker run -p 8080:80 -it ubuntu
ip::containerPort#指定ip和容器端口
docker run -p 0.0.0.0::80 -it ubuntu /bin/sh
ip:hostPort:containerPort#指定ip,宿主机端口和容器端口
docker run -p 0.0.0.0:8080:80 -it ubuntu /bin/sh
Nginx部署流程
- 创建映射80端口的交互式容器
- 安装Nginx
- 安装vim
- 创建静态页面
- 修改Nginx配置文件
- 运行Nginx
- 验证网站访问
docker run -p 80 --name=web -it ubuntu /bin/sh
apt-get update
apt-get install -y nginx
apt-get install -y vim
mkdir -p /var/www/html
cd /var/www/html
vim index.html
<html>
<head>
<title>Nginx in docker</title>
</head>
<body>
<h1>Hello,I'm website in docker.</h1>
</body>
</html>
where nginx
vim /etc/nginx/sites-enabled/defalut
server{root /var/www/html;}
cd /
nginx
ps -ef#查看进程
ctrl + pq#退出bash并保持后台运行
docker ps
docker port web
docker top web
#使用主机的ip地址来访问
curl http://127.0.0.1:49163
#成功就返回主页值
#使用容器ip来访问
docker inspect web
IPAddress "x.x.x.0"
curl http://x.x.x.0
docker stop web
docker start -i web
ps -ef
#重新启动的容器中没有运行Nginx
ctrl+pq
docker exec web nginx
docker top web
curl http://x.x.x.0
#无法访问
docker inspect web
IPAddress x.x.x.1
Ports{80/tcp:{HostPort:49169(changed)}}
#当重启一个容器时,原来的ip和端口映射都会发生改变
curl http://x.x.x.1
#成功