zoukankan      html  css  js  c++  java
  • day01-Docker

    1.Namespace 资源隔离

    保证应用于应用隔离

    • pid 进程编号
    • net 网络设备,网络协议栈,端口
    • ipc 信号量,消息队列,共享内存,内存隔离
    • mount 文件系统,挂载点
    • uts 主机名和主机域
    • user 操作进程的用户和用户组(linux内核在3.8以上才实现,所以centos要7以上)

    上述6个方面做到隔离,才能叫做充分隔离

    2.容器化技术探索

    chroot 切根,给应用程序切根,就好像应用程序再挂载点上运行,1979年的方案。文件系统的独立和隔离
    2000年,freebsd,
    cgroups操作系统内核,独立的控制cpu资源,内存资源
    lxc,linux container 开启了容器在生产上应用的脚步,应用程序6个维度上的隔离
    docker,2013出现,一桶容器脚本,简单,快捷,高效,便利,统一。隔离做的非常好

    一次设计,多次使用
    基于容器的,轻量级解决方案

    容器引擎

    3.核心

    内核,用的是宿主机内核。二进制空间和libs都用的自己的
    qumo,虚拟机的磁盘io,损耗大
    aufs,docker是挂载的,磁盘性能要优于虚拟化,节约成本
    帮助企业和老板,省纯利润

    4.yum源,epel源装好

    yum list docker --show-duplicates
    // 可以发现里面的版本还是1.13.1-102
    yum install -y yum-utils
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum install epel-release -y
    

    5.安装docker-ce

    yum install docker-ce -y
    

    6.启动docker引擎

    systemctl enable docker
    systemctl start docker
    

    7.docker命令

    mkdir /etc/docker
    docker info
    
    
    

    8.修改配置文件

    vim /etc/docker/daemon.json

    graph:工作目录
    registry-mirrors: 国内镜像站
    bip: docker的网络,建议容器地址和宿主机的ip地址最后2位是一样的
    exec-opts:执行参数
    live-restore:引擎死掉,用引擎起来的容器还活着
    {
        "graph":"/data/docker", 
        "storage-driver":"overlay2",
        "insecure-registries":[
            "registry.access.redhat.com",
            "quay.io"
        ],
        "registry-mirrors":[
            "https://q2qr04ke.mirror.aliyuncs.com"
        ],
        "bip":"172.7.5.0/24",
        "exec-opts":[
            "native.cgroupdriver=systemd"
        ],
        "live-restore":true
    }
    

    9.详细文档

    https://cloud.tencent.com/developer/article/1701451
    yum install docker-ce-18.03.1.ce
    

    13.docker镜像

    docker search
    docker pull

    14.docker镜像特性

    一层一层叠加的
    writable 层
    apache image(只读层)
    centos image(只读层)
    base image(只读层)
    docker镜像位于bootfs纸上
    (bootfs底层依赖的库,和内核交互的东西)

    15.docker容器的基本操作

    镜像-》实例化而来的
    (1)查看本地的容器进程

    docker ps -a
    

    (2)查看镜像

    docker images | grep hello
    

    (3)启动容器

    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    -i : 启动可交互的容器,并持续打开标准输入
    -t:表示使用终端关联到容器的标准输入上
    -d:表示容器放置后台运行
    -rm:退出后删除容器
    -name:表示定义容器唯一名称
    IMAGE:表示要运行的容器
    COMMAND:表示启动容器时要运行的命令
    

    docker run -it oldboy1103/alpine:latest /bin/sh

    docker run --rm oldboy1103/alpine:latest /bin/echo hello
    

    运行完后,docker ps -a是看不到,输出hello后就退出了,自己把它从ps -a中删了

    非交互式启动后台容器

    docker run -d --name myalpine oldboy1103/alpine:latest /bin/sleep 300
    

    运行到后台,并要指定init为1的pid

    (4)查看容器中的应用在宿主机是否能查到

    ps aux | grep sleep | grep -v grep 
    

    (5)docker 进入up状态的容器

    docker exec -it e0b7fcf28418 /bin/sh
    

    (6)停止容器

    docker ps -a 查看当前容器
    docker stop e0b7fcf28418
    docker restart e0b7fcf28418
    

    (7)删除容器
    docker rm e0b7fcf28418

    (8)批量删除宿主机上的所有容器

    for i in `docker ps -a | grep -i exit | sed '1d' | awk '{print $1}'`
    do
        docker rm -f $i
    done
    

    (9)提交修改到容器里

    docker commit -p e0b7fcf28418 oldboy1103/alpine:v3.10.3_with_1.txt  // 产生了新的镜像,固话到了只读层
    

    (10)导出镜像

    docker save  imageId > alpine:v3.10.3_with_1.txt.tar
    

    (11)干掉镜像

    docker rmi -f e0b7fcf28418
    

    (12)导入镜像

    docker load < alpine:v3.10.3_with_1.txt.tar
    docker tag e0b7fcf28418 oldboy1103/alpine:v3.10.3_with_1.txt
    

    (13)如何查看容器的日志

    docker run hello-world 2>&1 >> /dev/null
    
    docker logs e0b7fcf28418
    docker logs -f e0b7fcf28418
    

    16.docker容器的高级操作

    映射端口

    docker run -p 容器外端口:容器内端口
    (1)下载nginx镜像
    docker pull nginx:1.2.3
    (2)查看镜像
    docker images ls
    (3)打个标签
    docker tag 4037a5563b03 oldboy1103/nginx:v1.2.3
    (4)查看镜像
    docker images
    (5)映射端口
    docker run --rm -name mynginx -d -p81:80 oldboy1103/nginx:v1.2.3
    netstat -tulnp | grep 81

    curl 127.0.0.1:81

    挂载数据卷

    docker run -v 容器外目录:容器内目录
    宿主机上创建目录mkdir ~/html
    wget htpp://baidu.com -O ~/html/index.html

    docker run -d --rm --name nginx_with_baidu -p81:80 -v /root/html:/usr/share/nginx/html oldboy1103/nginx:v1.2.3
    
    docker inspect 4037a5563b03 // 容器运行的一些细节
    docker exec -it nginx_with_baidu /bin/bash
    # ls /usr/share/nginx/html
    

    看到16视频的14:23秒

    传递环境变量

    docker run -e 环境变量key:变量变量value

    容器内安装软件(工具)

    yum/apt-get/apt等

    原创:做时间的朋友
  • 相关阅读:
    WRF WPS预处理
    CVS安装
    Linux窗口最小化消失,任务栏上无法找到的解决方法
    NCARG安装配置出现error while loading shared libraries: libg2c.so.0问题额解决办法
    Netcdf安装
    Embedding R-generated Interactive HTML pages in MS PowerPoint(转)
    The leaflet package for online mapping in R(转)
    Some 3D Graphics (rgl) for Classification with Splines and Logistic Regression (from The Elements of Statistical Learning)(转)
    What does a Bayes factor feel like?(转)
    Weka算法介绍
  • 原文地址:https://www.cnblogs.com/PythonOrg/p/15239653.html
Copyright © 2011-2022 走看看