docker安装、部署docker反向代理
1.1 docker介绍
https://www.cnblogs.com/xiaonq/p/10241045.html#i4
1. 什么是docker
- Docker 是应用最广泛的开源容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中
- docker实质就像虚拟机一样,就好像是一个具有独立操作系统的真实机器
- 虚拟机是有真正的linux内核的,真实需要通过 .ios 文件安装操作系统
- 而我们的docker共享linux宿主机内核,只有一个linux文件系统
- 容器:
- 容器是一个操作系统级别下的虚拟化技术,运行一个容器就行运行一个进程一样
- 容器依赖linux内核特性:Namespace(资源隔离)和Cgroups(资源限制)
2. docker与虚拟机比较
1.2 docker镜像
1. 什么是docker镜像
- docker镜像不包含Linux内核而又精简的Linux操作系统
- 我们安装操作西宫iso文件就可以理解解为用C语言写的安装包(微信安装包)
- 我们安装操作系统的过程就好像是我们微信(就好像我们安装微信一样)
- docker镜像也像.iso安装包,但是因为操作系统已经安装linux内核,所以这个 安装包可以直接使用(这个安装包只有linux文件系统,而内核直接使用linux系统本身的就行)
- docker 镜像是 docker 容器的静态视角,docker 容器是 docker 镜像的运行状态
- 程序和进程的区别
- docker镜像----》程序(存储在我们硬盘里的代码)
- 进程-----》把我们硬盘里的代码加载到内存中运行
- 容器只是对docker镜像的引用,如果docker镜像删除,此镜像创建的容器也都失效
2. 容器读写层
容器其实是在镜像的最上面加了一层读写层,在运行容器里文件改动时,会先从镜像里要写的文件复制到容器自己的文件系统中(读写层)。
如果容器删除了,最上面的读写层也就删除了,改动也就丢失了。
所以无论多少个容器共享一个镜像,所做的写操作都是从镜像的文件系统中复制过来操作的,并不会修改镜像的源文件
若想持久化这些改动,可以通过docker commit 将容器保存成一个新镜像
1.3 docker安装
1、docker安装参考官方文档
docker官方文档:https://docs.docker.com/
centos安装docker:https://docs.docker.com/install/linux/docker-ce/centos/
注:docker CE只支持 centos7 不支持centos6
2、docker安装
# 1)安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2# 2)添加Docker软件包源(否则doker安装的不是新版本)
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo# 3)安装Docker CE
yum install -y docker-ce# 4)启动Docker服务并设置开机启动
systemctl start docker
systemctl enable docker# 5)测试docker是否安装成功(hello-world是官方提供的一个测试镜像)
docker run hello-world# 6)查看docker基本信息
docker info
docker version
3、docker简单使用(创建一个ngixn容器)
# 1、创建一个nginx容器docker run -it nginx# 2、查看docker运行的容器(可以获取到这个容器的id)docker ps# 3、访问这个容器# 进入这个nginx容器(进入的文件系统和宿主机是完全隔离的,有自己独立的文件系统)docker exec -it 73877e65c07d bash# 4、查看当前容器的 IPdocker inspect 73877e65c07d # 73877e65c07d是通过docekr ps查看到的容器IDcurl 172.17.0.2 # 测试这个nginx容器是否可以访问
1.4 docker常用管命令
1.镜像常用管理命令
[root@linux-node1 /]# docker image --help # 查docker使用方法
[root@linux-node1 /]# docker image ls # 查看本地下载的所有镜像
[root@linux-node1 /]# docker image rm nginx # 删除这个镜像
[root@linux-node1 /]# docker image inspect nginx # 查看nginx镜像详细信息
2.运行容器常用管理命令
[root@linux-node1 /]# docker run -itd nginx # 在后台启动一个docker容器
[root@linux-node1 /]# docker inspect 5a3ad030a621 # 查看docker运行容器的详细信息
[root@linux-node1 /]# curl http://172.17.0.2 #
[root@linux-node1 /]# docker run -itd --name=web2 -p 192.168.56.11:8800:80 nginx
使用--itd参数(指定后台启动这个容器),--name=web2(指定这个web容器的名字叫web2) -d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的高端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
--name="nginx-lb": 为容器指定一个名称
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
[root@linux-node1 /]# docker exec -it c9b7a480ee68 bash # 进入docker环境
1.5 dockerfile编写和应用(真实企业应用)
- dockerfile的作用
- 利用官方原始进行构建我们自己的镜像
1.dockerfile最简单使用
# Dockerfile
FROM nginx
COPY index.html /usr/share/nginx/html/index.html
# index.html
<h1>Hello 1904 logo</h1>
- 使用dockerfile构建我们自己的镜像
[root@linux-node1 nginx_v1]# docker build -t nginx:1904 -f Dockerfile .
build # 构建指令
-t nginx:1904 # 指定镜像的版本号(镜像名称:tag)
[root@linux-node1 nginx_v1]# docker image ls # 查看我们构建的镜像
[root@linux-node1 nginx_v1]# docker run -itd --name 1904 -p 192.168.56.11:1904:80 nginx:1904 # 使用我们镜像运行一个docker容器
http://192.168.56.11:1904 # 通过宿主机的映射ip地址+端口号就可以访问docker容器
2.dockerfile的其他语法
'''1.DOckerfile常用命令 '''
FROM python:3.6 # 指定拉取镜像版本
ENV PYTHONUNBUFFERED 1 # 不缓冲stdin、stdout和stderr,直接把输出重定向到文件
MAINITAINER zhangsan # 指定作者
RUN mkdri /code # 运行的linux命令
WORKDIR /code # 指定项目工作根路径
ADD . /code/ # 将宿主机文件复制到镜像中
COPY dj.conf /etc/nginx/conf.d # docker内部文件拷贝
VOLUME ["/data1","/data2"] # 将宿主机文件夹挂载到容器中
EXPOSE 8080 # 暴露端口
CMD ["sh","/code/start.sh"] # 容器启动时要运行的命令
CMD ["python", "manage.py", "runserver", "0:8000"]'''2.生成镜像并运行容器'''
docker build -t nginx:v1 -f Dockerfile-nginx . # 使用Dockerfile-nginx文件生成镜像 nginx:v1
docker push linux-node4.example.com/test/nginx:v1 # 推送镜像到harbor中
docker run -d -p 192.168.56.14:8000:8080 nginx:v1 # 运行docker容器
1.6 docker中网络部分讲解
1.网络常识问题
- 连接到 同一交换机的 相同网段 可以直接相互通信
2.NAT和PAT
3.docker服务如何发布给别人使用
1.7 docker配置反向代理
运行一个容器
- 我自己的宿主机ip :192.168.142.132
我想在运行一个web2
- –name= web2
- 192.168.142.132:82
docker run -itd --name=web1 -p 192.168.142.132:81:80 nginx:latest
http://192.168.142.132:81/
docker run -itd --name=web2 -p 192.168.142.132:82:80 nginx:latest
http://192.168.142.132:82/
[root@linux-node2 hm]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
202391fbfd2c nginx:latest "nginx -g 'daemon of…" 3 minutes ago Up 3 minutes 192.168.142.132:82->80/tcp web2
de83d9328165 nginx:latest "nginx -g 'daemon of…" 59 minutes ago Up 59 minutes 192.168.142.13[root@linux-node2 hm]# docker exec -it web1 bashroot@de83d9328165:/# cd /usr/share/nginx/html
root@de83d9328165:/usr/share/nginx/html# cat index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
root@de83d9328165:/usr/share/nginx/html# echo 'web1' > index.html #修改index.html里的内容为web1
root@de83d9328165:/usr/share/nginx/html# cat index.html #查看是否修改
web1
root@de83d9328165:/usr/share/nginx/html# exit
exit
[root@linux-node2 hm]# docker exec -it web2 bash
root@202391fbfd2c:/# cd /usr/share/nginx/html
root@202391fbfd2c:/usr/share/nginx/html# ls
50x.html index.html
root@202391fbfd2c:/usr/share/nginx/html# echo web2 > index.html
root@202391fbfd2c:/usr/share/nginx/html# cat index.html
web2
root@202391fbfd2c:/usr/share/nginx/html#
cd /etc/nginx/conf.d
vim default.conf
cp default.conf demo.conf
# 将default.conf中的内容拷贝一份到demo.conf中vim demo.conf
upstream my1904{server 192.168.56.14:81;server 192.168.56.14:82;
}
server {listen 4444;server_name localhost;#charset koi8-r;#access_log /var/log/nginx/host.access.log main;location / {proxy_pass http://my1904;}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {# proxy_pass http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {# deny all;#}
}
- 用命令
nginx -t
查看文件内是否有错
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok #文件没有错
nginx: configuration file /etc/nginx/nginx.conf test is successful
systemctl reload nginx
重启nginx- 如果页面有错误,查看nginx错误日志
- 打开Nginx配置文件
vim /etc/nginx/nginx.conf
- 找到错误日志路径
- 检查Nginx配置文件语法是否有误,没有错误则重启
nginx -t
4. 重启nginx
service nginx restart
- 运行加载某个页面,如果报错了直接进入错误日志中进行查看
vim /var/log/nginx/error.log
docker安装、部署docker反向代理相关推荐
- Docker安装部署RabbitMQ
https://blog.csdn.net/super_rd/article/details/70792746 http://muxiulin.cn/archives/category/rabbit ...
- 使用docker安装部署Spark集群来训练CNN(含Python实例)
使用docker安装部署Spark集群来训练CNN(含Python实例) 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需 ...
- Docker实战:Docker安装部署RabbitMQ
使用Docker安装部署RabbitMQ 1.docker search rabbitmq:management 2.docker pull rabbitmq:management 注意:如果dock ...
- saiku docker配置部署_【安装教程】01 Gitea Docker 安装部署 - 【SkywenCode】技术团队基...
在2016年-2019年,SkywenCode技术团队使用码云Gitee 作为线上代码库管理,基于敏捷开发和持续构建的思路,我们整体基础建设以Drone / Jenkins + Docker 的方式构 ...
- 服务器上使用docker安装部署禅道zentao
服务器上使用docker安装部署禅道zentao 目的:在服务器上安装docker禅道容器 一.查看服务器是否有禅道容器 docker ps -a 可以查看到所有容器. 二.从docker库下载禅道镜 ...
- 采用docker安装部署Nginx
四.采用docker安装部署Nginx 在主机192.168.1.138下,安装nginx,docker 的安装命令如下: docker run \ -d \ -p 8080:80 \ --name ...
- Docker安装部署及使用
Docker安装部署及使用 实验内容 安装Docker. 创建自己的第一个容器 容器使用,查看.启动.进入.停止.删除对应容器. 容器安装MySQL. Experimental environment ...
- ITOP-1 Docker安装部署itop
ITOP-1 Docker安装部署itop 一.Docker安装部署 1.下载docker源 2.yum安装docker,并运行 3.配置docker镜像加速地址 二.ITOP部署 1.登录[dock ...
- Linux安装部署docker habor私服
1.安装部署docker服务 2.安装部署docker-compose 下载页面:https://github.com/docker/compose/releases/ 下载docker-compos ...
- 【Docker】使用docker安装部署NextCloud私人网盘
[Docker]使用docker安装部署NextCloud私人网盘 1.查询并下载NextCloud镜像 执行命令 docker search nextcloud docker pull nextcl ...
最新文章
- 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(三) --高级设置一...
- SQL Server安全-加密术和SQL注入攻击
- spg app android,GitHub - spgwzp/AndEsptouch: esptouch for android ,ESP8266网关配对
- [bzoj1088]扫雷
- 一步一步详解ID3和C4.5的C++实现
- javahost(JVM虚拟DNS)解决hosts程序中hosts配置问题
- 如何处理错误消息Please install the gcc make perl packages
- Axiomatic Set Theory
- 东南亚本地商ERP仓储系统怎么样?
- 51nod 1577 线性基
- PSpice瞬态分析、交流分析和灵敏度分析
- easy_install安装,更新模块 python
- mysql byte存入数据库_byte 保存到数据库
- 用于将 InfoPath 2007 集成到 Visual Studio 2005 中的 InfoPath Designer API 概述
- 敏捷转型行动笔记:敏捷导入课程培训
- 贝叶斯公式的对数似然函数_最大似然法与似然函数
- Ubuntu: AppImage格式安装、卸载
- 2008年中国楼市悄然巨变
- 用户体系分离项目总结
- Doris(一)-简介、架构、编译、安装和数据表的基本使用
热门文章
- 服务器主板双cpu性能好吗,双CPU的电脑用起来,性能和功耗都是原来的两倍?
- 前度字符串转数组_关于前度书籍的阿里云论坛用户知识和技术交流
- 安徽阜阳计算机高中学校排名,安徽最强的五所高中,都是知名实力中学,考上就离名牌大学不远了!...
- 线性方程组/矩阵方程求解(方法汇总)
- 吵翻了!导师确认录取后却被学生放了鸽子,生气之余导师建了个“失信名单”挂到网上
- 小程序实现圆点边框 解决 dotted不兼容 小程序圆点边框兼容问题 如何在小程序实现兼容的圆点边框
- 收集了几个h5案例 与大家分享一下
- HTML教程(8)-播放音乐
- java多态的三种表现形式
- <马哲>价值规律的内容、表现形式及其作用