• docker学习笔记二


    知识点:

    1)手动构建镜像

    2)Dockerfile快速构建镜像

    阿里云yum源
    https://opsx.alibaba.com/mirror

    镜像制作
    nginx镜像实例

    创建并运行centos容器

    [root@izm5edykqg8tzid352ga0iz mysql]# docker pull centos   //以centos为基础
    [root@izm5edykqg8tzid352ga0iz mysql]# docker run -it centos /bin/bash
    [root@696cd0ad637b /]#   //已经进入容器

    更新容器yum源并安装nginx

    [root@8ab2b9d7afab yum.repos.d]# wget http://mirrors.aliyun.com/repo/Centos-7.repo
    [root@8ab2b9d7afab yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    [root@8ab2b9d7afab yum.repos.d]# yum -y install nginx

    退出该容器,然后基于该容器做一个镜像

    [root@izm5edykqg8tzid352ga0iz mysql]# docker commit -m "my nginx" e1edeef7375f(容器名or容器ID) danny/nginx:v1(镜像名:版本号)
    sha256:a5d464ef190c80411161ec6193b877eb5592a1961aeb318e341a9f9c46a39d05
    [root@izm5edykqg8tzid352ga0iz mysql]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    danny/nginx         v1                  a5d464ef190c        2 minutes ago       427 MB      //基于mynginx容器制作的镜像
    docker.io/nginx     latest              71c43202b8ac        4 days ago          109 MB
    docker.io/centos    latest              5182e96772bf        3 weeks ago         200 MB
    docker.io/alpine    latest              11cd0b38bc3c        8 weeks ago         4.41 MB
    
    [root@izm5edykqg8tzid352ga0iz mysql]# docker run -dit --name nginxv1 danny/nginx:v1
    [root@92c8d3a4bc2a /]# 
    [root@92c8d3a4bc2a /]# ps -ef  //已经进入容器
    UID        PID  PPID  C STIME TTY          TIME CMD
    root         1     0  0 08:21 ?        00:00:00 /bin/bash
    root        16     1  0 08:21 ?        00:00:00 ps -ef
    [root@92c8d3a4bc2a /]# vim /etc/nginx/nginx.conf    //修改配置文件添加 daemon off;      //不在后台运行
    [root@92c8d3a4bc2a /]# nginx -t        //验证配置文件语法是否有误
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    [root@92c8d3a4bc2a /]# exit
    exit
    
    [root@izm5edykqg8tzid352ga0iz mysql]# docker commit -m "my nginx" 92c8d3a4bc2a danny/nginx:v2        //再次提交修改版本v2
    sha256:062c8ef6e694b94fec7213bc8c65a055d75dc968fe2b671d97826381e0259f48
    
    [root@izm5edykqg8tzid352ga0iz mysql]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    danny/nginx         v2                  062c8ef6e694        9 seconds ago       427 MB        //修改后提交的版本
    danny/nginx         v1                  a5d464ef190c        12 minutes ago      427 MB
    docker.io/nginx     latest              71c43202b8ac        4 days ago          109 MB
    docker.io/centos    latest              5182e96772bf        3 weeks ago         200 MB
    docker.io/alpine    latest              11cd0b38bc3c        8 weeks ago         4.41 MB
    
    [root@izm5edykqg8tzid352ga0iz mysql]# docker run -it -p 82:80 danny/nginx:v2 /usr/sbin/nginx        //启动v2版本的容器
    08df10e92f9df846a840d61d10d07c045397e40ff06d9b4afdc09e4840266d23
    
    [root@izm5edykqg8tzid352ga0iz mysql]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES
    08df10e92f9d        danny/nginx:v2      "/usr/sbin/nginx"   13 seconds ago      Up 12 seconds       0.0.0.0:82->80/tcp   optimistic_bardeen

    然后就可以通过82端口访问了 http://IP:82

    Dockerfile构建(快速构建镜像)

    常用指令
    FROM   指定基础镜像
    MAINTAINER   维护者信息
    RUN   加在命令前执行命令
    ADD   copy文件,会自动解压
    WORKDIR   相当于cd进目录
    VOLUME   目录挂载
    EXPOSE    端口

    vim /opt/dockerfile/nginx/dockerfile
    #This docker file
    #VERSION 1
    #Author:danny
    #Base image
    FROM centos
    
    #
    MAINTAINER danny  danny@qq.com
    
    #Commands
    RUN rpm -ivh https://mirrors.aliyun.com/centos/7.5.1804/extras/x86_64/Packages/epel-release-7-9.noarch.rpm
    
    RUN yum -y install nginx
    
    ADD index.html  /usr/share/nginx/html/index.html   #ADD会自动解压
    
    RUN echo "daemon off;" >> /etc/nginx/nginx.conf
    
    EXPOSE 80
    
    CMD ["nginx"]
    
    [root@izm5edykqg8tzid352ga0iz nginx]# docker build -t mynginx:v3 /opt/dockerfile/nginx/

    查看镜像制作结果

    [root@izm5edykqg8tzid352ga0iz nginx]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    mynginx             v3                  3cf3c3308849        8 minutes ago       429 MB
    danny/nginx         v2                  062c8ef6e694        2 hours ago         427 MB
    danny/nginx         v1                  a5d464ef190c        2 hours ago         427 MB
    docker.io/nginx     latest              71c43202b8ac        4 days ago          109 MB
    docker.io/centos    latest              5182e96772bf        3 weeks ago         200 MB
    docker.io/alpine    latest              11cd0b38bc3c        8 weeks ago         4.41 MB
    
    制作并启动容器
    [root@izm5edykqg8tzid352ga0iz nginx]# docker run -dit -p 82:80 --name mynginx_1 mynginx:v3 /usr/sbin/nginx
    c373c95329937126d3e879e78c24843f026547975185ce1b6ea655f8f8d5420d
    [root@izm5edykqg8tzid352ga0iz nginx]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES
    c373c9532993        mynginx:v3          "nginx"             4 seconds ago       Up 4 seconds        0.0.0.0:82->80/tcp   mynginx_1
    
    [root@izm5edykqg8tzid352ga0iz nginx]# curl -I http://localhost:82
    HTTP/1.1 200 OK
    ...
  • 相关阅读:
    linux下C++程序开发范例
    a list of compiler books — 汗牛充栋的编译器参考资料
    中国象棋将帅问题
    CPU利用率问题:操作系统原理和API
    算法性能分析
    MySQL时间分组查询
    在MongoDB的MapReduce上踩过的坑
    C++双缓冲多线程分析大文件词频
    MongoDB进行MapReduce的数据类型
    得到内网域管理员的5种常见方法<转>
  • 原文地址:https://www.cnblogs.com/dannylinux/p/9579487.html
Copyright © 2020-2023  润新知