各类环境搭建笔记

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%\docker\config\daemon.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 '$a\ServerName 127.0.0.1'  /etc/apache2/apache2.conf&&service apache2 restart
RUN chown -R mysql:mysql /var/lib/mysql&&\
    #sed -i  "N;32a\secure_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 '$a\ServerName 127.0.0.1'  /etc/apache2/apache2.conf&&service apache2 restart&&\
    #sed -i  "N;32a\secure_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 "\ndaemon 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

qemu

构建环境

非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
其他操作系统与上述此类似

qemu使用

直接使用qemu启动qcow2文件

qemu-system-x86_64 -m 4096 -smp 1 -cdrom virtio-win-0.1.171.iso -drive file=windows-disk1.qcow2,if=virtio,id=drive-virtio-disk0 -boot c -net nic

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:\Users\windows\Desktop\xxxx-disk1.vmdk

第三种:

img

mac下

常规->清理虚拟机

img

img

ubuntu

网卡修改:

16.04

/etc/network/interfaces ,注意包含文件

auto lo
iface lo inet loopback

# The primary network interface
auto ens33
iface ens33 inet static
address 40.129.11.1
netmask 255.255.255.128
gateway 40.129.11.126

18.04

/etc/netplan/10-eth0.yaml

network:
    ethernets:
        ens33:
            dhcp4: no
            dhcp6: no
            addresses: [40.129.11.1/24]
            gateway4: 40.129.11.126
    version: 2

修改后执行netplay apply

posted @ 2020-12-21 18:31  ~kagi~  阅读(162)  评论(0编辑  收藏  举报