在工作中,可以将需要的系统和kernel以及fio、iperf直接打包成一个镜像
使用centos7及以上系统(内核版本3.10及以上)
docker的特性与虚拟机的异同: 1、安装VMware软件,在此虚拟机软件上安装操作系统,把操作系统的虚拟机软件在电脑上面其他位置进行备份,随时复制并启动 2、在linux上安装docker应用程序,从镜像仓库拉取(pull)操作系统或应用环境,基于该镜像文件创建一个容器(运行环境),备份容器以供下次使用(直接export容器,将容器提交(commit)为本地镜像) 3、虚拟机环境直接完全模拟一套全新的硬件环境,docker环境不虚拟硬件,直接使用宿主机资源(docker默认下不限制cpu、内存资源),也可以直接指定分配某个容器的cou或内存资源 4、虚拟机可以直接与宿主机或局域网连接,分配IP地址(Brige、net)、docker容器无法获取IP地址(跟随于宿主机的IP地址)
插眼:docker基本命令
国内镜像:特别方便有各种镜像的下载详细步骤等等
# 查看网络ip addr# 可以安装网络包来使用ifconfig命令yum install net-tools# 在centos6及以前的版本使用的是service,chkconfig主要用来更新和查询系统服务的运行信息,也被xyxtemctl取代systemctl list-unit-files |grep docker# 查看当前启动的容器docker psdocker imagesdocker search centos# 默认情况会拉取最新版本镜像,如果需要指定版本,需要添加tag标签docker pull mysql:5.6.46docker create hello-world:latest# 查看所有的容器docker container ls -a# 因为在创建的时候没有指定容器的名称,所以系统随机了一个,启动容器docker start keen_lehmann# 停止容器的运行docker stop hello-docker# 删除容器docker rm keen_lehmanndocker create hello-world:latest# 删除镜像docker rmi hello-world# 指定容器的名称docker create --name hello-docker hello-world# 新建容器并启动docker run --name hello-docker hello-world

Docker配置mysql容器*
端口映射
docker pull daocloud.io/library/mysql:5.7.5-m15# 启动mysql服务docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d daocloud.io/mysql:tag# 使用navicat来连mysqlifconfig -a192.168.112.135# 使用docker ps查看mysql的端口号:3306只是容器里面的端口,在外部没办法使用# 需要在容器创建的时候映射一个端口,或者在容器创建后,手动修改配置文件# 先退出mysql容器docker stop some-mysqlcd /var/lib/dockercd containers/cd 72384720720017/# hostconfig.json 中修改:"PortBindings":{"3306/tcp":[{"HostIp":"","HostPort":"3307"}]}# 并确认"ExposedPorts":{"3306/tcp":{}} 在config.v2.json文件中# 重启docker服务systemctl restart docker# 直接在创建容器的时候映射docker rum --name mysql-5.6 -e MYSQL_ROOT_PASSWORD=123456 -P 3307:3306 -d daocloud.io/mysql:tag
Docker配置tomcat*
SecureFX可以上传文件到shell连接的电脑
用tomcat容器去连mysql容器
可以通过 http://localhost:8080 访问 tomcat
打开tomcat里面的app,可以直接用tomcat的端口加上app的名称来访问
# -d让tomcat在后台运行,不占用前台窗口docker run --name tomcat-8.0 -p 8081:8080 -d daocloud.io/library/tomcat:8.0.45# 将woniusales.war拖拽到mnt目录下# 将war包复制到tomcat目录下docker cp woniusales.war tomcat-8.0:/usr/local/tomcat/webapps/woniusales.war# 进入容器内部(也可以直接运行命令)docker exec -it tomcat-8.0# 查看数据库连接信息cd usr/local/tomcat/webapps/woniusales/WEB-INF/classes/cat db.properties# 编辑db.properties文件之前,需要安装vi工具apt install vi# 也可以直接把db文件删除,使用echo单步执行里面的命令# 查看mysql容器的ip:进入mysql终端ip addr# 进入tomcat容器终端,修改连接mysql容器ip和数据库名称# 容器与容器之间的访问,只需要通过容器内部的ip即可echo "db_url=mysql://172.17.0.2:3306/woniusales...." > db.properties

Docker部署woniuSales
#尽量使用挂载的方式将数据文件挂载到容器中,容器里面尽量不要保存数据#尽量让员工容器做一件事情,或启动一个服务#尽量不使用交互模式来直接操作容器,而是在宿主机上执行命令,或者使用Docker Fileunzip -oq woniusales.war -d ./woniusalesdocker run --name tomcat-8.0 -v /mnt/tomcat/woniusales:/usr/local/tomcat/webapps/woniusales -p 8081:8080 -d daocloud.io/library/tomcat:8.0.45#修改db.properties
基于已有容器制作和分发镜像
linux expect交互式套件不用等待和阻塞,直接自动化执行,不需要手工去点击下一步#特权模式(如果不使用特权模式,mysql将无法作为后台服务来启动)docker run -tid --name centos-all -p 8081:8080 -p 23:22 -p 3307:3306 --privileged=true centos:7.6.1810 /sbin/init#将需要的软件复制到容器中docker cp ./jkd-8u144.rpm centos-all:opt/tool/#进入容器docker exec -it centos-all bashrpm -ivh jdk-8u144.rpm#查找安装的目录whereis java#查看mysql的安装源cat /etc/yum.repos.d/mysql-community.repo#让tomcat随着容器的启动而启动vim /etv/rc.d/rc.local/opt/tomcat/bin/startup.sh#将容器导出docker export -o ./centos-all.tar centos-all#查看文件大小du -sh centos-all.tar#两台linux局域网互传scpDocker import:从归档文件中创建镜像docker import centos-all.tar w3cschi=ool/centos:v4docker commit:从容器创建一个新的镜像docker commit centos-all woniuxy.com/live/centos:woniusalesdocker save:将指定镜像保存成tar归档文件
Docker File语法(运维用的多)
docker File:用于构建镜像vim dockerFile//从原始镜像中构建新的镜像FROM daocloud.io/library/centod:7.6.1810//同时执行两条命令RUM yum install -y net-tools \&& yum install -y unzipDocker build:用于使用dockerFile构建的镜像//./的意思是到当前目录下去自动寻找dockerfile文件docker build -t woniux.com/live/centos:dockerfile .///这样就会生成一个新的镜像文件,再去基于它创建容器即可//同时执行三条命令用分号hostname;date;ls;sleep 5
python持续集成
import paramiko #paramiko->基于SSH协议远程发动Linux指令或上传下载文件#建立与服务器的连接transport = paramiko.Transport(('192.168.1112.135',22))transport.connect(username='root',password='123456')#实例化SSH对象以便于执行命令ssh=paramiko.SSHClient()ssh._transport = transport#执行命令cmd = 'hostname;ls /;date;ifconfig;'//返回三个值,所以用三个接收stdin,stdout,stderr = ssh.exec_command(cmd)//得到字节类型,所以需要用decode将它变成字符串print(stdout.read().decode())#上传文件sftp = paramiko.SFTPClient.from_transport(transport)sftp.put(r'E:\workspace\woniuspace\woniusales.war', '/mnt/tool/woniusales.war')svn、ant是什么命令
jenkins持续集成(建议使用tomcat来使用jenkins)
流水线(pipline) 将需要的步骤全都放在一起执行
