zoukankan      html  css  js  c++  java
  • 构建Docker容器实战

    构建Docker容器实战

    一:案例--构建nginx容器

    1:拉取centos镜像或将镜像导入到docker中(如果是在线状态,此步骤可省掉)

    [root@localhost ~]# docker pull 192.168.1.149:8000/centos1804

    [root@localhost ~]# docker load --input centos7.3.tar

    d69483a6face: Loading layer  209.5MB/209.5MB

    Loaded image: centos:latest

    2:创建dockerfile工作目录

    [root@localhost ~]# mkdir /opt/nginx

    [root@localhost ~]# cd /opt/nginx

    3:创建dockerfile

    [root@localhost nginx]# vim dockerfile

    FROM 192.168.1.149:8000/centos1804

    RUN rm -rf /etc/yum.repos.d/*

    ADD myrepo.repo /etc/yum.repos.d/myrepo.repo

    RUN yum clean all

    #RUN yum makecache

    RUN yum -y install pcre-devel zlib-devel zlib gcc* make openssl-devel

    ADD nginx-1.12.0.tar.gz /opt

    WORKDIR /opt/nginx-1.12.0

    RUN ./configure --prefix=/usr/local/nginx && make && make install

    ADD nginx.conf /usr/local/nginx/conf/nginx.conf

    EXPOSE 80

    EXPOSE 443

    RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf

    WORKDIR /root/nginx

    ADD run.sh /run.sh

    RUN chmod 775 /run.sh

    CMD ["/run.sh"]

    4:将163yum源文件拷贝到dockerfilenginx目录中

    5:编写nginx启动脚本

    [root@localhost nginx]# vim run.sh

    #!/bin/bash

    /usr/local/nginx/sbin/nginx

    6:用dockerfile创建镜像

    [root@localhost nginx]# docker build -t mynginx .

    7:启动容器

    [root@localhost nginx]# docker run -d -i -p 8080:80 mynginx

    注意:此处不带-t选项,容器中有一个run.sh的脚本,带上-t选项,这个脚本就不执行了

    或者

    [root@localhost nginx]# docker run -d -it -p 8080:80 mynginx /bin/bash -c /run.sh

    此处使用bash执行run.sh的脚本

    或者

    [root@localhost nginx]# docker run -dit -p 8081:80 -v /www:/web mynginx

    此处为容器创建了一个容器卷,并挂在到docker主机的/www目录下

    [root@localhost ~]# mkdir /nginx

    [root@localhost ~]# cp /opt/nginx/nginx.conf /nginx

    [root@localhost nginx]# docker run -dit -p 8000:80 -v /www:/web -v /opt/nginx/nginx.conf:/usr/local/nginx/conf/nginx.conf mylamp /bin/bash -c /run.sh

    8:访问nginx网站

    http://192.168.10.105:8080

    二:案例—构建Tomcat容器

    1:创建工作目录

    [root@localhost ~]# mkdir /opt/tomcat/

    [root@localhost ~]# cd /opt/tomcat/

    2:将jdk解压,并移动到工作目录

    [root@localhost ~]# tar zxvf jdk-8u91-linux-x64.tar.gz -C /opt/tomcat/

    3:创建dockerfile文件

    [root@localhost tomcat]# vim dockerfile

    FROM 192.168.1.149:8000/centos1804

    ADD jdk1.8.0_91 /usr/local/jdk-8u91

    ENV JAVA_HOME /usr/local/jdk-8u91

    ENV JAVA_BIN /usr/local/jdk-8u91

    ENV JRE_HOME /usr/local/jdk-8u91

    ENV PATH $PATH:/usr/local/jdk-8u91/bin:/usr/local/jdk-8u91/jre/bin

    ENV CLASSPATH /usr/local/jdk-8u91/jre/bin:/usr/local/jdk-8u91/lib:/usr/local/jdk-8u91/jre/lib/charsets.jar

    ADD apache-tomcat-8.5.16.tar.gz /

    RUN mv /apache-tomcat-8.5.16 /usr/local/tomcat

    EXPOSE 8080

    ADD run.sh /run.sh

    RUN chmod 775 /run.sh

    CMD ["/run.sh"]

    4:创建启动脚本

    [root@localhost tomcat]# vim run.sh

    #!/bin/bash

    /usr/local/tomcat/bin/startup.sh

    tailf /run

    5:用dockerfile生成镜像

    [root@localhost tomcat]# docker build -t mytomcat .

    6:运行容器

    [root@localhost tomcat]# docker run -d -i -p 8080:8080 mytomcat

    7:访问tomcat网站

    http://192.168.10.105:8080

    三:案例---构建mysql容器

    1:创建工作目录

    [root@localhost ~]# mkdir /opt/mysql

    2:创建dockerfile文件

    [root@localhost ~]# cd /opt/mysql/

    [root@localhost mysql]# vim dockerfile

    FROM 192.168.1.149:8000/centos1804

    RUN rm -rf /etc/yum.repos.d/*

    ADD myrepo.repo /etc/yum.repos.d/myrepo.repo

    RUN yum clean all

    RUN yum -y install mariadb mariadb-server

    RUN chown -R mysql:mysql /var/lib/mysql

    ADD init.sh /init.sh

    RUN chmod 775 /init.sh

    RUN /init.sh

    EXPOSE 3306

    CMD ["mysqld_safe"]

    3:编写mysql初始化脚本

    [root@localhost mysql]# vim init.sh

    #!/bin/bash

    mysql_install_db --user=mysql

    sleep 3

    mysqld_safe &

    sleep 3

    mysqladmin -u "root" password "123456"

    mysql -uroot -p123456 -e "grant all privileges on *.* to 'root'@'%' identified by '123456';"

    mysql -uroot -p123456 -e "grant all privileges on *.* to 'root'@'localhost' identified by '123456';"

    mysql -uroot -p123456 -e "flush privileges;"

    3:生成镜像

    [root@localhost mysql]# docker build -t mysql .

    4:创建容器

    [root@localhost mysql]# docker run -id -p 3306:3306 mysql

    四:构建php

    1:创建工作目录

    2:创建dockerfile(方法一:源码包安装)

    FROM 192.168.1.148:8000/centos1804

    MAINTAINER jacker

    ENV VERSION=5.5.38

    RUN rm -rf /etc/yum.repos.d/*

    ADD myrepo.repo /etc/yum.repos.d/myrepo.repo

    RUN yum clean all

    RUN yum install -y gcc gcc-c++ make gd-devel libxml2-devel

        libcurl-devel libjpeg-devel libpng-devel openssl-devel

        libmcrypt-devel libxslt-devel libtidy-devel autoconf

        iproute net-tools telnet wget curl &&

        yum clean all &&

        rm -rf /var/cache/yum/*

    COPY php-${VERSION}.tar.gz /

     

    RUN cd / &&

        tar zxf php-${VERSION}.tar.gz &&

        mv php-${VERSION} /usr/local/ &&

        cd /usr/local/php-${VERSION} &&

        ./configure --prefix=/usr/local/php

        --with-config-file-path=/usr/local/php/etc

        --enable-fpm --enable-opcache

        --with-mysql --with-mysqli --with-pdo-mysql

        --with-openssl --with-zlib --with-curl --with-gd

        --with-jpeg-dir --with-png-dir --with-freetype-dir

        --enable-mbstring --with-mcrypt --enable-hash &&

        make -j 4 && make install &&

        cp php.ini-production /usr/local/php/etc/php.ini &&

        cp sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf &&

        sed -i "90a daemonize = no" /usr/local/php/etc/php-fpm.conf &&

        mkdir /usr/local/php/log &&

        cd / && rm -rf php* &&

        cd /usr/local/ && rm -rf php-${VERSION} &&

        ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

     

    ENV PATH $PATH:/usr/local/php/sbin

    #COPY php.ini /usr/local/php/etc/

    #COPY php-fpm.conf /usr/local/php/etc/

    WORKDIR /usr/local/php

    EXPOSE 9000

    CMD ["php-fpm"]

    2:创建dockerfile(方法二:yum安装安装)

    FROM centos

    MAINTAINER jacker

    RUN rm -rf /etc/yum.repos.d/*

    ADD myrepo.repo /etc/yum.repos.d/myrepo.repo

    RUN yum clean all

     

    RUN yum install epel-release -y &&

        yum install -y php php-fpm php-common php-mysql

     

    EXPOSE 9000

    CMD ["php-fpm"]

    3:生成镜像

    [root@localhost php]# docker build -t myphp .

    4:启动容器

    [root@localhost php]# docker run -d -i -p 9000:9000 myphp

    ##############################################################################################

    docker run -d --name mysql -v /var/lib/mysql -p 3306:3306 mysql     //启动mysql

    docker run -d --name php --volumes-from mysql -v /web:/web -p 9000:9000 myphp     //启动php

    docker run -d --name nginx --link php:php -p 80:80 -v /web/:/web mynginx   //启动nginx

    mkdir /nginx

    cp /opt/nginx/nginx.conf /nginx

    docker run -d --name nginx --link php:php -p 80:80 -v /web/:/web -v /nginx/nginx.conf:/usr/local/nginx/conf/nginx.conf mynginx

    mkdir /web

    docker run -itd --name lnmp_php --network lnmp -p 9000:9000 --mount type=bind,src=/web,dst=/web myphp

    docker run -itd --name lnmp_nginx --network lnmp -p 80:80 --mount type=bind,src=/web,dst=/web mynginx /bin/bash

  • 相关阅读:
    docker 容器简单使用
    C++ | 程序编译连接原理
    C++ | 虚拟地址空间
    python学习笔记(十)——进程间通信
    菜鸟教程-c
    现代操作系统-第三版-疑问
    小米C++面经
    面经积累-杂
    哈希表相关题目-leetcode简单
    字符串相关题目-leetcode简单(6-10/共51道)
  • 原文地址:https://www.cnblogs.com/ccshi/p/13154477.html
Copyright © 2011-2022 走看看