一、docker方式安装httpbin链接

  1. docker pull kennethreitz/httpbin
  2. docker run -d -p 6001:80 --name httpbin --restart=always kennethreitz/httpbin:latest
  3. 宿主机的port6001,然后映射到docker容器中的httbin监听的80端口

二、docker方式安装nginx

1、nginx挂载目录说明

image.png
nginx.conf nginx的主配置文件;conf主配置文件目录,nginx.conf文件路径/etc/nginx/nginx.conf
default.conf nginx虚拟主机配置文件,conf.d 虚拟主机配置文件目录,default.conf文件路径/etc/nginx/conf.d/default.conf
index.html nginx主页,html主页目录路径/usr/share/nginx/html
logs 日志目录,目录/var/log/nginx

2、拷贝配置文件到宿主机

在宿主机创建挂载目录:mkdir -p /nginx/{conf,conf.d,html,logs}
启动nginx :docker pull nginx ; docker run -i -t nginx /bin/bash
拷贝 nginx.conf : docker cp ID:/etc/nginx/nginx.conf /nginx/conf
拷贝default.conf: docke cp ID:/etc/nginx/conf.d/default.conf /nginx/conf.d
拷贝 index.html : docke cp ID:/usr/share/nginx/html /nginx/html

3、配置nginx反向代理

在conf.d中新增配置 :vi xxx.xxcode.ink.conf(域名已解析)

  1. server {
  2. listen 80;
  3. server_name 访问域名xxx.xxcode.ink;
  4. location / {
  5. proxy_set_header Host $http_host;
  6. proxy_set_header X-Real-IP $remote_addr;
  7. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  8. proxy_pass http://宿主机公网ip:httpbin端口/get;
  9. }
  10. }

3、启动nginx,挂载目录

删除已启动的nginx:docker ps -a ;docker stop nginx ; docker rm nginx

  1. docker run --net=host -d -p 80:80 --name nginx \
  2. -e "TZ=Asia/Shanghai" \
  3. -v /nginx/html:/usr/share/nginx/html \
  4. -v /nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  5. -v /nginx/logs:/var/log/nginx \
  6. -v /nginx/conf.d/:/etc/nginx/conf.d \
  7. nginx

4、防火墙开启80端口

  1. 查询已开放端口:
  2. firewall-cmd --list-ports
  3. 开发80端口:
  4. firewall-cmd --zone=public --add-port=80/tcp --permanent
  5. 提示 success后重新加载 Firewalld
  6. firewall-cmd --reload

三、其他

docker四种网络模式区别链接

  1. 1.host模式
  2. host表示容器共享宿主机的ip和端口号。容器中不会虚拟自己的网卡和ip,当你查看容器ip的时候,其实是宿主机的ip
  3. 如:创建nginx容器
  4. docker run -tid --net=host --name nginx nginx:1.13.12
  5. 你访问主机的http://ip:80其实就是容器的80端口,不用做端口映射了。
  6. 2.Container模式(未测试)
  7. container是共享容器ip地址和端口
  8. docker run -tid --net=container:nginx --name mysql mysql:5.7
  9. 3.None模式
  10. 使用none模式时容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP
  11. docker run -tid --net=none --name nginx2 nginx:1.13.12
  12. 4.bridge模式
  13. bridge模式是docker默认的网络模式,这种模式容器直接可以互相通讯,但无法和宿主机通讯。
  14. 注:bridge不支持自定义容器ip
  15. 如: docker run -itd --net bridge --ip 172.18.0.10 nginx:latest /bin/bash
  16. 会报错:
  17. docker: Error response from daemon: User specified IP address is supported on user defined networks only.
  18. 跨主机通信:
  19. 直接路由方式、桥接方式(如pipework)、Overlay隧道方式(如flannelovs+gre

docker 常用命令

下载镜像:doker pull Name:Tags
进入到docker容器:docker exec -it ID/NAME /bin/bash /bin/sh 是固定写法
查看所有容器,包括关闭的:docker ps -a
镜像管理 :docker image ls(查看已下载镜像)
删除镜像:docker rmi Name
删除容器:docker stop ID ;docker rm ID
在新容器中执行命令:docker run
在 Docker Hub 中搜索镜像 :docker search

docker 参数说明

docker重启时自动重启容器: —restart=always
容器命名:—name Name