zoukankan      html  css  js  c++  java
  • Docker基本概念

    1、什么是虚拟化

    虚拟的环境并不在真实的硬件上,而是虚拟出一套硬件
    在一台物理机上,可以通过虚拟化技术,虚拟出很多虚拟机

    2、Docker与虚拟机的区别

    Docker
        启动速度快
        占用系统资源少
        容器之间隔离
    
    
    虚拟机
        启动速度慢
        占用系统资源多
        虚拟机之间完全隔离

    3、Docker中的三大概念

    镜像、容器、 仓库

    4、什么是镜像

    启动容器的模板

    5、什么是容器

    对外提供服务的实例

    6、什么是镜像仓库

    存放镜像的仓库

    7、简要说明一下docker网络

    安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host

    8、docker网络的原理有哪些

    Docker 本身的技术依赖于 Linux 内核虚拟化技术的发展
    所以 Docker 对 Linux 内核的特性有很强的依赖
    其中 Docker 使用到的与 Linux 网络有关的技术分别有:网络名称空间、Veth、网桥、Iptables、路由

    9、Linux网络隔离的方式

    因为 命名空间的存在
    这些独立的协议栈被隔离到不同的命名空间中
    处于不同的命名空间的网络协议栈是完全隔离的,彼此之间无法进行网络通信,就好像两个“平行宇宙”

    10、Linux不同网络之间互联的方式

    Veth设备:只能一对一
    网桥:支持多对多
    Iptables:内核级别的网络转发(但是规则比较复杂)

    11、Docker网络模式

    host 模式
    none 模式
    container 模式
    bridge 模式(默认)

    12、Docker网络模式的实现原理

    host:共享根命名空间的网络
    none:只提供本地回环网络127.0.0.1
    container:共享某个容器的网络
    bridge:所有容器连接同一个网桥,通过网桥来进行转发

    13、怎么实现使用在宿主主机使用127.0.0.1访问容器

    # 在容器运行的时候 映射端口 网络模式不指定 就使用默认的bridge
    
    docker run -dit -p 80:80 --name nginx01 nginx:latest

    14、怎么共享一个容器的网络

    # 使用 container 网络模式
    
    docker run -itd --name test01 nginx
    docker run -itd --name test02 --network "container:test01" nginx

    15、怎么实现一个容器完全的网络隔离

    # 使用 none 网络模式
    
    docker run -itd --name test01 --network none nginx

    16、怎么实现多对多网络互联

    # 使用 bridge 网络模式
    
    docker run -itd --name test01 --network bridge busybox
    docker run -itd --name test02 --network bridge busybox
    docker run -itd --name test03 --network bridge busybox

    17、创建一个容器

    docker run -d busybox

    18、随机映射端口

    # -P
    
    docker run -P busybox

    19、固定映射端口

    # -p [宿主机的端口号]:[容器内部的端口号]
    
    docker run -p 80:80 nginx

    20、挂载存储卷

    # -v [宿主机的路径]:[容器内的路径]
    
    
    docker run -v /home/darker:/data nginx

    21、为容器设置一个名字

    # --name [自定义容器名]
    
    docker run --name nginx01 nginx

    22、以守护进程方式运行一个容器

    # -d
    
    docker run -d nginx

    23、构建一个Django容器

    创建 Dockerfile
    vim Dockerfile
    Dockerfile 内容
    # 1.指定基础镜像
    FROM python:3.6.8
    
    # 2.安装django
    RUN pip3 install django==2.2.2 -i https://pypi.douban.com/simple/
    
    # 3.创建1个django项目
    RUN django-admin startproject blog
    RUN cd blog && python3 manage.py startapp app01
    
    # 4.设置启动命令
    CMD cd /root && python3 manage.py runserver 0.0.0.0:8000
    
    # 5.暴露8000端口
    EXPOSE 8000
    构建镜像命令
    docker build -t django:v1 .
    启动容器
    docker run -dit -p 8000:8000 --name django01 django:v1 bash

    24、构建一个NGINX容器

    创建 nginx.repo
    vim nginx.repo
    nginx.repo 内容
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    创建 Dockerfile
    vim Dockerfile
    Dockerfile 内容
    # 设置基础镜像
    FROM centos
    
    # 安装wget
    RUN yum install wget -y
    
    # 换源
    RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    RUN cd /etc/yum.repos.d && wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
    RUN mv /etc/yum.repos.d/CentOS7-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo
    
    # 添加nginx源的文件
    ADD nginx.repo /etc/yum.repos.d/ 
    
    # 刷新yum缓存
    RUN yum makecache
    
    # 安装yum工具
    RUN yum install yum-utils -y
    
    # 安装Nginx
    RUN yum install nginx -y
    
    # 添加配置文件
    ADD default.conf /etc/nginx/conf.d/
    
    # 设置启动命令
    CMD nginx -g 'daemon off;'
    构建镜像命令
    docker build -t nginx:v1 .
    启动容器
    docker run -dit -p 80:80 --name nginx01 nginx:v1 bash

    25、使用NGINX代理Django

    创建 default.conf
    vim default.conf
    default.conf 内容
    upstream django {
        server django:8000;
    }
    
    server {
        listen 80;
        server_name _;
        location / {
            proxy_pass http://django;
            index index.html index.htm;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

    26、将以上镜像上传到镜像仓库

    # 1.登录阿里云Docker Registry
    docker login --username=用户名 [仓库URL] 
    
    
    # 2.为镜像添加标签(标记版本)
    docker tag [镜像ID] [仓库URL]/[命名空间]/[仓库名称]:[镜像版本号]
    # 实例
    docker tag 74d107221092 registry.cn-hangzhou.aliyuncs.com/darker-x/common_software:redis_v1
    
    
    # 3.将本地镜像推送到Registry
    docker push [仓库URL]/[命名空间]/[仓库名称]:[镜像版本号]
    # 实例
    docker push registry.cn-hangzhou.aliyuncs.com/darker-x/common_software:redis_v1

    1、什么是虚拟化

    虚拟的环境并不在真实的硬件上,而是虚拟出一套硬件
    在一台物理机上,可以通过虚拟化技术,虚拟出很多虚拟机
     
    Text
     

    2、Docker与虚拟机的区别

    Docker
        启动速度快
        占用系统资源少
        容器之间隔离
    
    
    虚拟机
        启动速度慢
        占用系统资源多
        虚拟机之间完全隔离
     
    Text
     

    3、Docker中的三大概念

    镜像、容器、 仓库
     
    Text
     

    4、什么是镜像

    启动容器的模板
     
    Text
     

    5、什么是容器

    对外提供服务的实例
     
    Text
     

    6、什么是镜像仓库

    存放镜像的仓库
     
    Text
     

    7、简要说明一下docker网络

    安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host
     
    Text
     

    8、docker网络的原理有哪些

    Docker 本身的技术依赖于 Linux 内核虚拟化技术的发展
    所以 Docker 对 Linux 内核的特性有很强的依赖
    其中 Docker 使用到的与 Linux 网络有关的技术分别有:网络名称空间、Veth、网桥、Iptables、路由
     
    Text
     

    9、Linux网络隔离的方式

    因为 命名空间的存在
    这些独立的协议栈被隔离到不同的命名空间中
    处于不同的命名空间的网络协议栈是完全隔离的,彼此之间无法进行网络通信,就好像两个“平行宇宙”
     
    Text
     

    10、Linux不同网络之间互联的方式

    Veth设备:只能一对一
    网桥:支持多对多
    Iptables:内核级别的网络转发(但是规则比较复杂)
     
    Text
     

    11、Docker网络模式

    host 模式
    none 模式
    container 模式
    bridge 模式(默认)
     
    Text
     

    12、Docker网络模式的实现原理

    host:共享根命名空间的网络
    none:只提供本地回环网络127.0.0.1
    container:共享某个容器的网络
    bridge:所有容器连接同一个网桥,通过网桥来进行转发
     
    Text
     

    13、怎么实现使用在宿主主机使用127.0.0.1访问容器

    # 在容器运行的时候 映射端口 网络模式不指定 就使用默认的bridge
    
    docker run -dit -p 80:80 --name nginx01 nginx:latest
     
    Bash
     

    14、怎么共享一个容器的网络

    # 使用 container 网络模式
    
    docker run -itd --name test01 nginx
    docker run -itd --name test02 --network "container:test01" nginx
     
    Bash
     

    15、怎么实现一个容器完全的网络隔离

    # 使用 none 网络模式
    
    docker run -itd --name test01 --network none nginx
     
    Bash
     

    16、怎么实现多对多网络互联

    # 使用 bridge 网络模式
    
    docker run -itd --name test01 --network bridge busybox
    docker run -itd --name test02 --network bridge busybox
    docker run -itd --name test03 --network bridge busybox
     
    Bash
     

    17、创建一个容器

    docker run busybox
     
    Bash
     

    18、随机映射端口

    # -P
    
    docker run -P busybox
     
    Text
     

    19、固定映射端口

    # -p [宿主机的端口号]:[容器内部的端口号]
    
    docker run -p 80:80 nginx
     
    Bash
     

    20、挂载存储卷

    # -v [宿主机的路径]:[容器内的路径]
    
    
    docker run -v /home/darker:/data nginx
     
    Bash
     

    21、为容器设置一个名字

    # --name [自定义容器名]
    
    docker run --name nginx01 nginx
     
    Bash
     

    22、以守护进程方式运行一个容器

    # -d
    
    docker run -d nginx
     
    Bash
     

    23、构建一个Django容器

    创建 Dockerfile
    vim Dockerfile
     
    Bash
    Dockerfile 内容
    # 1.指定基础镜像
    FROM python:3.6.8
    
    # 2.安装django
    RUN pip3 install django==2.2.2 -i https://pypi.douban.com/simple/
    
    # 3.创建1个django项目
    RUN django-admin startproject blog
    RUN cd blog && python3 manage.py startapp app01
    
    # 4.设置启动命令
    CMD cd /root && python3 manage.py runserver 0.0.0.0:8000
    
    # 5.暴露8000端口
    EXPOSE 8000
     
    Dockerfile
    构建镜像命令
    docker build -t django:v1 .
     
    Bash
    启动容器
    docker run -dit -p 8000:8000 --name django01 django:v1 bash
     
    Bash
     

    24、构建一个NGINX容器

    创建 nginx.repo
    vim nginx.repo
     
    Bash
    nginx.repo 内容
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
     
    nginx
    创建 Dockerfile
    vim Dockerfile
     
    Bash
    Dockerfile 内容
    # 设置基础镜像
    FROM centos
    
    # 安装wget
    RUN yum install wget -y
    
    # 换源
    RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    RUN cd /etc/yum.repos.d && wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
    RUN mv /etc/yum.repos.d/CentOS7-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo
    
    # 添加nginx源的文件
    ADD nginx.repo /etc/yum.repos.d/ 
    
    # 刷新yum缓存
    RUN yum makecache
    
    # 安装yum工具
    RUN yum install yum-utils -y
    
    # 安装Nginx
    RUN yum install nginx -y
    
    # 添加配置文件
    ADD default.conf /etc/nginx/conf.d/
    
    # 设置启动命令
    CMD nginx -g 'daemon off;'
     
    Dockerfile
    构建镜像命令
    docker build -t nginx:v1 .
     
    Bash
    启动容器
    docker run -dit -p 80:80 --name nginx01 nginx:v1 bash
     
    Bash
     

    25、使用NGINX代理Django

    创建 default.conf
    vim default.conf
     
    Bash
    default.conf 内容
    upstream django {
        server django:8000;
    }
    
    server {
        listen 80;
        server_name _;
        location / {
            proxy_pass http://django;
            index index.html index.htm;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
     
    nginx
     

    26、将以上镜像上传到镜像仓库

    # 1.登录阿里云Docker Registry
    docker login --username=用户名 [仓库URL] 
    
    
    # 2.为镜像添加标签(标记版本)
    docker tag [镜像ID] [仓库URL]/[命名空间]/[仓库名称]:[镜像版本号]
    # 实例
    docker tag 74d107221092 registry.cn-hangzhou.aliyuncs.com/darker-x/common_software:redis_v1
    
    
    # 3.将本地镜像推送到Registry
    docker push [仓库URL]/[命名空间]/[仓库名称]:[镜像版本号]
    # 实例
    docker push registry.cn-hangzhou.aliyuncs.com/darker-x/common_software:redis_v1
  • 相关阅读:
    Restful WCF问题总结
    vs2010发布、打包安装程序(超全超详细)
    WCF and Android Part I
    GCC安装及配置
    mysql5.58的编译安装(转)
    源于魔兽!《植物大战僵尸》成功奥秘 (转)
    mysql5.5.8安装问题解决方法(转)
    RHEL5(CentOS)下nginx+php+mysql+tomcat+memchached配置全过程(转)
    已经安装curses,但cmake安装mysql时,依然提示No curses/termcap library found(转)
    centos5安装飞信机器人监控web服务器(转)
  • 原文地址:https://www.cnblogs.com/ltyc/p/14093634.html
Copyright © 2011-2022 走看看