• Docker容器的学习


    1.docker的三大概念

    镜像  ,理解为系统盘dvd镜像 ,轻量级的镜像文件          class  
            把运行路飞学诚的应用程序,打包成一个docker镜像 


    仓库,存储docker镜像的 

    容器 ,是基于镜像运行出的,容器实例 

    2.安装及配置

    1.安装docker,由于网速问题,选择阿里云的yum源下载 
    yum install docker -y 

    2.启动docker
    systemctl start docker

    3.docker加速器,加速下载
    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
    会生成一个docker配置文件,路径是/etc/docker/daemon.json

    4.配置了加速器,需要重启docker

    systemctl restart docker     

    出现报错 : 打开 /etc/docker/daemon.json  去掉结尾的逗号


    3.基本命令的学习


    #下载docker镜像
    docker pull hello-world
    #运行docker镜像,产生容器实例

    #运行docker镜像,ubuntu系统
    docker run ubuntu  

    #交互式的运行ubuntu 容器,进入容器空间内

    docker run -it  ubuntu  /bin/bash 
        #参数解释
        -i 交互式的命令操作
        -t 开启一个终端提供访问
        /bin/bash   指定shell解释器
        
    #打包构建一个携带vim的centos镜像文件
        1.先运行一个centos基础镜像
        docker run -it centos /bin/bash 
        2.在容器空间内,安装vim
        yum install vim -y 
        3.退出容器空间,提交这个容器,为新的镜像

          退出:exit
          docker commit   1d5698b91178    yuchao163/s17centos-vim
        

    docker run -it  --rm  94e  /bin/bash
        --rm  运行容器,退出后,删除容器记录

    #给容器记录命名
    docker run  --name  myredis 94e  /bin/bash

    #后台不间断运行一个 shell语句
    docker run -d centos /bin/sh -c "while true;do echo 好嗨哦,感觉人生到达了巅峰; sleep 1;done"
        -d 后台运行 
        centos  指定镜像文件 
        /bin/sh    指定shell解释器
        -C 指定一个shell语句

        


    #导出本地的镜像文件
    docker save  0fc9d49cb739   > /opt/s17centos.tar.gz
        
    #导入镜像文件,    
    docker load  <  /opt/s17centos.tar.gz

    #删除容器记录

    docker rm  容器id 

    #批量删除容器记录
    docker  rm `docker ps -aq`

    #强制删除所有容器记录

    docker rm -f  `docker ps -aq`

    #删除镜像记录

    docker rmi  镜像id 

    #批量删除镜像文件
    docker rmi `docker images -aq`  

    #修改docker镜像名,tag标记名
    docker tag  镜像id   新的标记名 


    #运行过docker镜像后,会产生容器记录

    #差看docker镜像的命令

    docker  image ls  
    docker  images   #等同于上述命令,查看镜像 


    #查看正在运行的容器进程,
    docker container ls  
    docker ps 

    #docker ps只能查看正在运行的容器
    docker ps -a  查看所有的容器记录 

    #docker容器,必须有后台程序在运行,否则容器就退出

    #查询docker镜像记录 

    docker search centos 

    #查看容器空间内的日志 
    docker logs 容器id 

    docker logs -f  容器id #不间断打印容器内日志信息

    #进入正在运行的容器空间

    docker exec -it 容器id   /bin/bash 

    #启停docker容器

    docker start  容器id 
    docker stop  容器id

    docker端口映射

    docker run -d   -p 4567:5000      training/webapp    #指定宿主机的4567端口,映射到容器的5000端口

    -d   后台运行容器

    -p  指定映射端口

    #进入到这个容器空间
    docker exec -it 616(容器id)  /bin/bash 

    Dockerfile

    #指定一个基础镜像

    FROM scratch #制作base image 基础镜像,尽量使用官方的image作为base image
    FROM centos #使用base image
    FROM ubuntu:14.04 #带有tag的base image

    LABEL version=“1.0” #容器元信息,帮助信息,Metadata,类似于代码注释
    LABEL maintainer=“yc_uuu@163.com"

    #对于复杂的RUN命令,避免无用的分层,多条命令用反斜线换行,合成一条命令!
    RUN yum update && yum install -y vim
                                Python-dev #反斜线换行
    RUN /bin/bash -c "source $HOME/.bashrc;echo $HOME”

    #run指令是一个万能指令 


    WORKDIR /root #相当于linux的cd命令,改变目录,尽量使用绝对路径!!!不要用RUN cd
    WORKDIR /test #如果没有就自动创建
    WORKDIR demo #再进入demo文件夹

    #ADD是添加文件,从物理机本地,添加到容器空间内 

    ADD and COPY 
    ADD hello /  #把本地文件添加到镜像中,吧本地的hello可执行文件拷贝到镜像的/目录
    ADD test.tar.gz   /tmp    #添加到根目录并解压


    #并且ADD指令还有 解压缩的功能 

    WORKDIR /root
    ADD hello test/  #进入/root/ 添加hello可执行命令到test目录下,也就是/root/test/hello 一个绝对路径
    COPY hello test/  #等同于上述ADD效果

    ADD与COPY
       - 优先使用COPY命令
        -ADD除了COPY功能还有解压功能
    添加远程文件/目录使用curl或wget

    #环境变量,ENV 尽可能使用ENV增加可维护性
    ENV MYSQL_VERSION 5.6 #设置一个mysql常量


    ENV MYSQL_VERSION 6.7
    RUN yum install -y mysql-server=“${MYSQL_VERSION}” 
    RUN yum install -y mysql-server=“${MYSQL_VERSION}” 
    RUN yum install -y mysql-server=“${MYSQL_VERSION}” 

    打包flask程序与dockerfile

    1.准备一个flask代码文件
    [root@master mydocker]# cat my-flask.py 

    #coding:utf8
    from flask import Flask
    app=Flask(__name__)
    @app.route('/')
    def hello():
        return " Me 宇宙无敌"
    if __name__=="__main__":
        app.run(host='0.0.0.0',port=8080)

    2.准备构建dockerfile,用于生成镜像(touch Dockerfile)(必须是大写D)

    FROM centos     #指定一个基础镜像 
    COPY CentOS-Base.repo /etc/yum.repos.d/  #拷贝本地的yum仓库,到容器空间内               
    COPY epel.repo /etc/yum.repos.d/    #  
    RUN yum clean all 
    RUN yum install python-setuptools -y
    RUN easy_install flask
    COPY s17-flask.py /opt/
    WORKDIR /opt       
    EXPOSE 8080     #暴露容器的8080端口,供给物理机去映射访问
    CMD ["python","s17-flask.py"]       #cmd代表执行命令  

    3.准备 CentOS-Base.repo  epel.repo  

    4.确保 dockerfiel,flask代码,yum仓库文件,在同一层目录

    5.构建镜像
    docker build .  

    6.检查docker镜像文件,是否有自己创建的镜像

    7.修改镜像的名字

    docket tag 镜像名  新的镜像名

    8.运行镜像,生成容器实例
    docker run -p 8080:8080  -d  04b

    9.检查docker端口映射状态
    docker port 容器id

    10.访问windows,找到容器内的应用

  • 相关阅读:
    Django模型层进阶
    Django模型层相关
    BOM与DOM
    JavaScript入门
    HTML基础
    子查询/联合分组/all与any/视图/事务
    表的查询
    mysql的多表关系
    Mysql基本操作
    Spider_基础总结2_Requests异常
  • 原文地址:https://www.cnblogs.com/Wj-Li/p/10864902.html
Copyright © 2020-2023  润新知