各类环境搭建笔记
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
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
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
第三种:
mac下
常规->清理虚拟机
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