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安装参考官方文档

  1. 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错误日志
  1. 打开Nginx配置文件
vim /etc/nginx/nginx.conf
  1. 找到错误日志路径
  2. 检查Nginx配置文件语法是否有误,没有错误则重启
nginx -t


4. 重启nginx

service nginx restart
  1. 运行加载某个页面,如果报错了直接进入错误日志中进行查看
vim /var/log/nginx/error.log

docker安装、部署docker反向代理相关推荐

  1. Docker安装部署RabbitMQ

    https://blog.csdn.net/super_rd/article/details/70792746  http://muxiulin.cn/archives/category/rabbit ...

  2. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需 ...

  3. Docker实战:Docker安装部署RabbitMQ

    使用Docker安装部署RabbitMQ 1.docker search rabbitmq:management 2.docker pull rabbitmq:management 注意:如果dock ...

  4. saiku docker配置部署_【安装教程】01 Gitea Docker 安装部署 - 【SkywenCode】技术团队基...

    在2016年-2019年,SkywenCode技术团队使用码云Gitee 作为线上代码库管理,基于敏捷开发和持续构建的思路,我们整体基础建设以Drone / Jenkins + Docker 的方式构 ...

  5. 服务器上使用docker安装部署禅道zentao

    服务器上使用docker安装部署禅道zentao 目的:在服务器上安装docker禅道容器 一.查看服务器是否有禅道容器 docker ps -a 可以查看到所有容器. 二.从docker库下载禅道镜 ...

  6. 采用docker安装部署Nginx

    四.采用docker安装部署Nginx 在主机192.168.1.138下,安装nginx,docker 的安装命令如下: docker run \ -d \ -p 8080:80 \ --name ...

  7. Docker安装部署及使用

    Docker安装部署及使用 实验内容 安装Docker. 创建自己的第一个容器 容器使用,查看.启动.进入.停止.删除对应容器. 容器安装MySQL. Experimental environment ...

  8. ITOP-1 Docker安装部署itop

    ITOP-1 Docker安装部署itop 一.Docker安装部署 1.下载docker源 2.yum安装docker,并运行 3.配置docker镜像加速地址 二.ITOP部署 1.登录[dock ...

  9. Linux安装部署docker habor私服

    1.安装部署docker服务 2.安装部署docker-compose 下载页面:https://github.com/docker/compose/releases/ 下载docker-compos ...

  10. 【Docker】使用docker安装部署NextCloud私人网盘

    [Docker]使用docker安装部署NextCloud私人网盘 1.查询并下载NextCloud镜像 执行命令 docker search nextcloud docker pull nextcl ...

最新文章

  1. 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(三) --高级设置一...
  2. SQL Server安全-加密术和SQL注入攻击
  3. spg app android,GitHub - spgwzp/AndEsptouch: esptouch for android ,ESP8266网关配对
  4. [bzoj1088]扫雷
  5. 一步一步详解ID3和C4.5的C++实现
  6. javahost(JVM虚拟DNS)解决hosts程序中hosts配置问题
  7. 如何处理错误消息Please install the gcc make perl packages
  8. Axiomatic Set Theory
  9. 东南亚本地商ERP仓储系统怎么样?
  10. 51nod 1577 线性基
  11. PSpice瞬态分析、交流分析和灵敏度分析
  12. easy_install安装,更新模块 python
  13. mysql byte存入数据库_byte 保存到数据库
  14. 用于将 InfoPath 2007 集成到 Visual Studio 2005 中的 InfoPath Designer API 概述
  15. 敏捷转型行动笔记:敏捷导入课程培训
  16. 贝叶斯公式的对数似然函数_最大似然法与似然函数
  17. Ubuntu: AppImage格式安装、卸载
  18. 2008年中国楼市悄然巨变
  19. 用户体系分离项目总结
  20. Doris(一)-简介、架构、编译、安装和数据表的基本使用

热门文章

  1. 服务器主板双cpu性能好吗,双CPU的电脑用起来,性能和功耗都是原来的两倍?
  2. 前度字符串转数组_关于前度书籍的阿里云论坛用户知识和技术交流
  3. 安徽阜阳计算机高中学校排名,安徽最强的五所高中,都是知名实力中学,考上就离名牌大学不远了!...
  4. 线性方程组/矩阵方程求解(方法汇总)
  5. 吵翻了!导师确认录取后却被学生放了鸽子,生气之余导师建了个“失信名单”挂到网上
  6. 小程序实现圆点边框 解决 dotted不兼容 小程序圆点边框兼容问题 如何在小程序实现兼容的圆点边框
  7. 收集了几个h5案例 与大家分享一下
  8. HTML教程(8)-播放音乐
  9. java多态的三种表现形式
  10. <马哲>价值规律的内容、表现形式及其作用