• 各类环境搭建笔记


    Docker安装

    Ubuntu 14.04 16.04 (使用apt-get进行安装)
    
    # step 1: 安装必要的一些系统工具
    
    sudo apt-get update
    
    sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
    
    # step 2: 安装GPG证书
    
    curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    
    # Step 3: 写入软件源信息
    
    sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    
    # Step 4: 更新并安装 Docker-CE
    
    sudo apt-get -y update
    
    sudo apt-get -y install docker-ce
    
    # 安装指定版本的Docker-CE:
    
    # Step 1: 查找Docker-CE的版本:
    
    # apt-cache madison docker-ce
    
    # docker-ce | 17.03.1~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
    
    # docker-ce | 17.03.0~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
    
    # Step 2: 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.1~ce-0~ubuntu-xenial)
    
    # sudo apt-get -y install docker-ce=[VERSION]
     
    
    CentOS 7 (使用yum进行安装)
    
    # step 1: 安装必要的一些系统工具
    
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
    # Step 2: 添加软件源信息
    
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    # Step 3: 更新并安装 Docker-CE
    
    sudo yum makecache fast
    
    sudo yum -y install docker-ce
    
    # Step 4: 开启Docker服务
    
    sudo service docker start
    
    # 注意:
    
    # 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,你可以通过以下方式开启。同理可以开启各种测试版本等。
    
    # vim /etc/yum.repos.d/docker-ee.repo
    
    # 将 [docker-ce-test] 下方的 enabled=0 修改为 enabled=1
    
    #
    
    # 安装指定版本的Docker-CE:
    
    # Step 1: 查找Docker-CE的版本:
    
    # yum list docker-ce.x86_64 --showduplicates | sort -r
    
    # Loading mirror speeds from cached hostfile
    
    # Loaded plugins: branch, fastestmirror, langpacks
    
    # docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
    
    # docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
    
    # docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
    
    # Available Packages
    
    # Step2 : 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.0.ce.1-1.el7.centos)
    
    # sudo yum -y install docker-ce-[VERSION]
     
    
    
    新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%dockerconfigdaemon.json(Windows) 来配置 Daemon。
    
    请在该配置文件中加入(没有该文件的话,请先建一个):
    
    {"registry-mirrors": ["http://h2htys9o.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn"]}
    

    一键 :

    apt-get update
    apt-get -y install apt-transport-https ca-certificates curl software-properties-common
    sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    apt-get -y update
    apt-get -y install docker-ce
    
    

    Docker 操作命令

    相关文档:https://doc.yonyoucloud.com/doc/docker_practice/image/create.html

    创建镜像

    docker build -t web_demo .
    

    常见docker构建命令,运行后生成一个镜像,-t指定image name

    创建容器container

    docker run -itp 80:80 --restart always  --name web1 -m 512m web_demo /bin/bash
    

    如果镜像没有指定CMD或者entrypoint则,可以在最后添加入口命令

    常见docker运行命令,运行后生成一个container,-it 指定镜像名或者镜像id,--name指定container名字,--restart always 设置重启,-m限制占用内存大小。一般php,python对内存占用较小,mysql占用100-200m左右,tomcat占用较大256M-1G,可以修改参数进行限制。

    如下:

    java -Djava.util.logging.config.file=/opt/apache-tomcat-8.5.39/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms64m -Xmx128m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=128m -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /opt/apache-tomcat-8.5.39/bin/bootstrap.jar:/opt/apache-tomcat-8.5.39/bin/tomcat-juli.jar -Dcatalina.base=/opt/apache-tomcat-8.5.39 -Dcatalina.home=/opt/apache-tomcat-8.5.39 -Djava.io.tmpdir=/opt/apache-tomcat-8.5.39/temp org.apache.catalina.startup.Bootstrap start
    
    -Xms64m -Xmx128m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=128m 为限制参数
    -Xms64m JVM初始分配的堆内存
    -Xmx128m JVM最大允许分配的堆内存,按需分配
    -XX:PermSize=128M JVM初始分配的非堆内存
    -XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配
    

    tomcat中需要添加在bin下catalina.sh 里,位置cygwin=false前 。

    # OS specific support.  $var _must_ be set to either true or false.
    JAVA_OPTS="$JAVA_OPTS -Xms64m -Xmx128m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=128m"
    cygwin=false
    

    停止及启动容器container

    docker stop 容器id              #停止单个
    docker stop `docker ps -aq`    #停止所有
    docker stop $(docker ps -aq)	 #停止所有
    docker start 容器id             #启动单个
    docker start `docker ps -aq`   #启动所有
    docker start $(docker ps -aq)  #启动所有
    

    进入正在运行的容器

    docker ps #获取容器id
    docker exec -it 容器id /bin/bash #当bash不存在时,使用/bin/sh
    

    删除容器container 及 删除镜像images

    docker rm 容器id               #删除单个容器
    docker rmi 镜像id            	 #删除单个镜像
    docker stop `docker ps -aq`   #关闭所有容器
    docker rm `docker ps -aq`     #删除所有容器
    docker rm -f `docker ps -aq`  #一次性删除所有容器
    docker rmi `docker images`   //删除所有镜像,只有先执行前两个命令才可用第三个命令,不然会报错
    

    重命名镜像

    docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)
    

    查看容器ip

    docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container-ID> 
    或
    docker inspect <container id> 
    或
    docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
    

    查看镜像构建历史

    docker history 镜像名       #查看镜像大致构建历史
    docker history --no-trunc  #查看镜像完整构建历史,docker history --no-trunc>1.txt方便查看
    

    搜索镜像

    docker search tomcat      # 搜索结果根据STARS排序,且标注是否为官方镜像(OFFICIAL),需要查看tag需要前往dockerhub搜索
    
    NAME                          DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
    tomcat                        Apache Tomcat is an open source implementati…   2903                [OK]                
    tomee                         Apache TomEE is an all-Apache Java EE certif…   85                  [OK]                
    dordoka/tomcat                Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base…   55                                      [OK]
    bitnami/tomcat                Bitnami Tomcat Docker Image                     37                                      [OK]
    kubeguide/tomcat-app          Tomcat image for Chapter 1                      29                                      
    consol/tomcat-7.0             Tomcat 7.0.57, 8080, "admin/admin"              17                                      [OK]
    cloudesire/tomcat             Tomcat server, 6/7/8                            15                                      [OK]
    aallam/tomcat-mysql           Debian, Oracle JDK, Tomcat & MySQL              13                                      [OK]
    

    下载镜像

    docker pull joomla:3.7.0      #下载镜像,部分下载过慢的镜像可以强制加速使用如 
    docker pull h2htys9o.mirror.aliyuncs.com/vulhub/joomla:3.7.0
    

    导出导入镜像及容器

    docker save web|gzip>web.tar.gz #导出镜像
    docker load <web.tar.gz         #导入镜像
    docker export 容器id             #导出容器,只是把文件保存了下来
    docker import 容器id             #导入容器,
    

    将容器保存为镜像

    docker commit 容器id 镜像名
    

    查看容器日志

    docker logs 容器id
    

    查看容器状态

    docker stats
    
    CONTAINER ID        NAME                     CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
    8b67cd812c31        reverent_proskuriakova   0.02%               22.32MiB / 512MiB   4.36%               22.3kB / 3.39kB     0B / 0B             2
    

    Dockerfile

    lamp

    ubuntu:14.04+php5+mysql5

    Dockerfile

    FROM ubuntu:14.04
    
    RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list&&
        sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
    RUN apt-get update
    RUN apt-get install -y apache2 php libapache2-mod-php php-mysql php-curl php-gd mysql-server vim curl
    
    COPY start.sh /root/start.sh
    COPY www /var/www/html/
    COPY sql.sql /root/sql.sql
    RUN chmod +x /root/start.sh
    RUN sed -i '$aServerName 127.0.0.1'  /etc/apache2/apache2.conf&&service apache2 restart
    RUN chown -R mysql:mysql /var/lib/mysql&&
        #sed -i  "N;32asecure_file_priv=/" /etc/mysql/my.cnf&&
        find /var/lib/mysql -type f -exec touch {} ; &&
        service mysql start &&
        mysqladmin -uroot password root&&
        mysql -uroot -proot -e "CREATE USER 'user'@'localhost' IDENTIFIED BY 'user';"&&
        mysql -uroot -proot -e "grant ALL on *.* to user@'localhost' identified by 'user';"&&
        mysql -uroot -proot -e "flush privileges;"&&   
        mysql -uroot -proot -e "flush privileges;"&&
        mysql -uroot -proot -e "create database sql;"&&
        mysql -uroot -proot sql < /root/sql.sql&&
        rm /var/www/html/index.html
        
    EXPOSE 80
    CMD ["/root/start.sh"]
    

    start.sh

    #!/bin/bash
    
    /etc/init.d/apache2 restart
    find /var/lib/mysql -type f -exec touch {} ; && service mysql start 
    /bin/bash
    tail -f /var/log/apache2/access.log
    

    没有tty的情况/bin/bash会自动结束,所以添加taif -f

    ubuntu:18.04+php7+mysql5

    Dockerfile

    FROM ubuntu:18.04
    ENV DEBIAN_FRONTEND noninteractive
    RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list&&
        sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
    #安装apahce,php,mysql及php相关扩展
    RUN apt-get update
    RUN apt-get install -y apache2 php libapache2-mod-php php-mysql php-curl php-gd mysql-server vim curl
    
    COPY start.sh /root/start.sh
    COPY www /var/www/html/
    RUN chmod +x /root/start.sh
    
    RUN sed -i '$aServerName 127.0.0.1'  /etc/apache2/apache2.conf&&service apache2 restart&&
        #sed -i  "N;32asecure_file_priv=/" /etc/mysql/my.cnf&&
        find /var/lib/mysql -type f -exec touch {} ; && service mysql start&&
        mysql -uroot -e 'use mysql;update user set plugin="mysql_native_password";update user set authentication_string=password("root") where user="root";'&&
        #mysqlamdin不生效
        mysql -uroot -proot -e "CREATE USER 'user'@'localhost' IDENTIFIED BY 'user';"&&
        mysql -uroot -proot -e "grant ALL on *.* to user@'localhost' identified by 'user';"&&
        mysql -uroot -proot -e "flush privileges;"&&   
        mysql -uroot -proot -e "flush privileges;"&&
        mysql -uroot -proot -e "create database sql;"&&
        mysql -uroot -proot sql < /root/sql.sql&&
        rm /var/www/html/index.html
        
    EXPOSE 80 3306
    CMD ["/root/start.sh"]
    

    start.sh

    #!/bin/bash
    
    /etc/init.d/apache2 restart
    find /var/lib/mysql -type f -exec touch {} ; && service mysql start 
    /bin/bash
    tail -f /var/log/apache2/access.log
    

    lnmp

    Dockerfile

    FROM ubuntu:14.04
    
    RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/' /etc/apt/sources.list
    RUN apt-get update
    RUN apt-get update && apt-get -y install 
        nginx 
        php5-fpm 
        php5-cli 
        php5-mysql 
        php5-curl 
        php5-mcrypt 
        php5-gd 
        php5-redis
        
    RUN apt-get install -y mysql-server
    COPY gopher.so /usr/lib/php5/20121212/gopher.so
    RUN echo "extension=gopher.so">>/etc/php5/fpm/conf.d/gopher.ini
    RUN echo "
    daemon off;" >> /etc/nginx/nginx.conf
    
    # Backup the default configurations
    RUN cp /etc/php5/fpm/php.ini /etc/php5/fpm/php.ini.original.bak
    RUN mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.original
    
    # Configure PHP settings
    RUN sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php5/fpm/php.ini
    RUN sed -i -e 's/allow_url_fopen = Off/allow_url_fopen = On/g' /etc/php5/fpm/php.ini
    RUN sed -i -e 's/expose_php = On/expose_php = Off/g' /etc/php5/fpm/php.ini
    
    # Copy default site conf
    COPY default.conf /etc/nginx/sites-available/default
    
    ADD run.sh /root/run.sh
    ADD web.tar /var/www/html
    ADD ultrax.sql /root/ultrax.sql
    RUN chmod +x /root/run.sh
    
    RUN chown -R mysql:mysql /var/lib/mysql
    RUN find /var/lib/mysql -type f -exec touch {} ; && service mysql start &&
        mysqladmin -uroot password root&&
        mysql -uroot -proot -e "create database ultrax;"&&
        mysql -uroot -proot ultrax < /root/ultrax.sql
    RUN chmod -R 755 /var/www/html/
    RUN rm -rf /var/www/html/index.html
    RUN chmod -R 777 /var/www/html
    CMD ["/root/run.sh"]
    

    run.sh

    #!/bin/sh
    service php5-fpm start
    nohup nginx &
    find /var/lib/mysql -type f -exec touch {} ; && service mysql start
    /bin/bash
    tail -f /var/log/nginx/access.log
    

    flask

    不推荐使用apache+wsgi模式,并发极差

    Dockerfile

    FROM ubuntu:18.04      
    
    RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
    RUN sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
    
    COPY web /app
    COPY supervisord.conf /etc/supervisord.conf
    
    RUN apt -y update && 
        apt -y install python-setuptools  python python-pip supervisor gunicorn && 
        mkdir -p /var/log/supervisor
    
    RUN sudo pip install -i flask http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple && 
        useradd server
        
    CMD ["/usr/bin/supervisord"]
    

    supervisord.conf

    [supervisord]
    nodaemon=true
    
    [program:app]
    user = root
    startsecs = 3
    autorestart=true
    directory = /app
    command = gunicorn --config=config.py -w 1 -t 5 -u server app:app
    # 推荐的进程数和线程数:进程数*线程数 = cpu核心数*2+1
    

    tomcat

    springboot

    FROM ubuntu:18.04      
    
    RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
    RUN sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
    
    COPY app.jar /app
    COPY supervisord.conf /etc/supervisord.conf
    
    RUN apt -y update && 
        apt -y install  openjdk-8-jdk supervisor  && 
        mkdir -p /var/log/supervisor
    
    RUN useradd server
        
    CMD ["/usr/bin/supervisord"]
    

    supervisord.conf

    [supervisord]
    nodaemon=true
    
    [program:app]
    user = root
    startsecs = 3
    directory = /app
    autorestart=true
    command = java -jar app.jar
    

    qcow2

    构建环境

    非kvm环境安装virtio后,使用 qemu-img convert -c -f vmdk -O qcow2 weblogic-disk1.vmdk weblogic-disk1.qcow2 即可

    windows

    windows需要在虚拟机中安装virtio驱动,下载地址:https://pan.baidu.com/s/16T63-Gp5ofWPjqKy6q0BBQ 密码: kgwi

    在我的电脑->管理->设备管理器中的网络适配器和存储适配器分别根据系统安装virtio中的NetKVM和viostor。

    右键网络适配器->更新驱动程序软件->浏览计算机以查找驱动程序软件->从计算机设备驱动程序列表中选择->从磁盘中安装->浏览->找到virtio下NetKvm,选择系统安装

    右键存储控制器->更新驱动程序软件->浏览计算机以查找驱动程序软件->从计算机设备驱动程序列表中选择->从磁盘中安装->浏览->找到virtio下viostor,选择系统安装

    centos

    可用的centos7下载地址: 链接: https://pan.baidu.com/s/1YgcQOIMa3AaOtbikFDempg 提取码: kj9x
    root/root

    目前从vmware中导出的vmdk的centos,只支持centos7,需要配置virtio驱动,并开启网卡dhcp

    参考链接:
    https://cloud.tencent.com/document/product/213/9929
    https://help.aliyun.com/document_detail/62423.html

    ubuntu

    可用的ubuntu:16.04下载地址: https://pan.baidu.com/s/1ZQujk7X13NBwhv47GtHr5g 密码: rn6g
    root/root

    ubuntu需要手动配置一个名为ens3的网卡,并开启dhcp。具体根据ubuntu具体版本进行查询。以下举例ubuntu16.04,18.04

    ubuntu:16.04: /etc/network/interfaces
    ubuntu:18.04: /etc/netplan/50-cloud-init.yaml
    其他操作系统与上述此类似

    vmdk

    压缩vmdk大小

    linux

    cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill
    
    /usr/bin/vmware-toolbox-cmd disk shrinkonly
    

    至于原理,第一句是将硬盘空余地方全部填0,第二句是vmware的工具

    windows

    第一种:右键我的电脑->管理->存储->磁盘管理->右键任意磁盘->压缩卷->压缩

    第二种:vmware安装目录下,vmware-vdiskmanager.exe -k vmdk路径

    D:VMware>vmware-vdiskmanager.exe -k  C:UserswindowsDesktopxxxx-disk1.vmdk
    

    第三种:

    img

    mac下

    常规->清理虚拟机

    img

    img

  • 相关阅读:
    PHP基本语法
    SQL-还原数据库,数据库提示正在还原中的处理办法
    MyBatis学习笔记
    Java byte数据转换和处理总结
    JS和JQUERY的区别
    .NET 之 ORM 性能评测
    你必须知道的 SmartSql !
    SmartSql 介绍
    SmartSql 入门
    SmartCode.ETL 这不是先有鸡还是蛋的问题!
  • 原文地址:https://www.cnblogs.com/kagari/p/14169317.html
Copyright © 2020-2023  润新知