在工作中,可以将需要的系统和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基本命令
    国内镜像:特别方便有各种镜像的下载详细步骤等等

    1. # 查看网络
    2. ip addr
    3. # 可以安装网络包来使用ifconfig命令
    4. yum install net-tools
    5. # 在centos6及以前的版本使用的是service,chkconfig主要用来更新和查询系统服务的运行信息,也被xyxtemctl取代
    6. systemctl list-unit-files |grep docker
    7. # 查看当前启动的容器
    8. docker ps
    9. docker images
    10. docker search centos
    11. # 默认情况会拉取最新版本镜像,如果需要指定版本,需要添加tag标签
    12. docker pull mysql:5.6.46
    13. docker create hello-world:latest
    14. # 查看所有的容器
    15. docker container ls -a
    16. # 因为在创建的时候没有指定容器的名称,所以系统随机了一个,启动容器
    17. docker start keen_lehmann
    18. # 停止容器的运行
    19. docker stop hello-docker
    20. # 删除容器
    21. docker rm keen_lehmann
    22. docker create hello-world:latest
    23. # 删除镜像
    24. docker rmi hello-world
    25. # 指定容器的名称
    26. docker create --name hello-docker hello-world
    27. # 新建容器并启动
    28. docker run --name hello-docker hello-world

    image.png
    Docker配置mysql容器*
    端口映射

    1. docker pull daocloud.io/library/mysql:5.7.5-m15
    2. # 启动mysql服务
    3. docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d daocloud.io/mysql:tag
    4. # 使用navicat来连mysql
    5. ifconfig -a
    6. 192.168.112.135
    7. # 使用docker ps查看mysql的端口号:3306只是容器里面的端口,在外部没办法使用
    8. # 需要在容器创建的时候映射一个端口,或者在容器创建后,手动修改配置文件
    9. # 先退出mysql容器
    10. docker stop some-mysql
    11. cd /var/lib/docker
    12. cd containers/
    13. cd 72384720720017/
    14. # hostconfig.json 中修改:"PortBindings":{"3306/tcp":[{"HostIp":"","HostPort":"3307"}]}
    15. # 并确认"ExposedPorts":{"3306/tcp":{}} 在config.v2.json文件中
    16. # 重启docker服务
    17. systemctl restart docker
    18. # 直接在创建容器的时候映射
    19. 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的名称来访问

    1. # -d让tomcat在后台运行,不占用前台窗口
    2. docker run --name tomcat-8.0 -p 8081:8080 -d daocloud.io/library/tomcat:8.0.45
    3. # 将woniusales.war拖拽到mnt目录下
    4. # 将war包复制到tomcat目录下
    5. docker cp woniusales.war tomcat-8.0:/usr/local/tomcat/webapps/woniusales.war
    6. # 进入容器内部(也可以直接运行命令)
    7. docker exec -it tomcat-8.0
    8. # 查看数据库连接信息
    9. cd usr/local/tomcat/webapps/woniusales/WEB-INF/classes/
    10. cat db.properties
    11. # 编辑db.properties文件之前,需要安装vi工具
    12. apt install vi
    13. # 也可以直接把db文件删除,使用echo单步执行里面的命令
    14. # 查看mysql容器的ip:进入mysql终端
    15. ip addr
    16. # 进入tomcat容器终端,修改连接mysql容器ip和数据库名称
    17. # 容器与容器之间的访问,只需要通过容器内部的ip即可
    18. echo "db_url=mysql://172.17.0.2:3306/woniusales...." > db.properties

    image.png
    Docker部署woniuSales

    1. #尽量使用挂载的方式将数据文件挂载到容器中,容器里面尽量不要保存数据
    2. #尽量让员工容器做一件事情,或启动一个服务
    3. #尽量不使用交互模式来直接操作容器,而是在宿主机上执行命令,或者使用Docker File
    4. unzip -oq woniusales.war -d ./woniusales
    5. docker 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
    6. #修改db.properties

    基于已有容器制作和分发镜像

    1. linux expect交互式套件
    2. 不用等待和阻塞,直接自动化执行,不需要手工去点击下一步
    3. #特权模式(如果不使用特权模式,mysql将无法作为后台服务来启动)
    4. docker run -tid --name centos-all -p 8081:8080 -p 23:22 -p 3307:3306 --privileged=true centos:7.6.1810 /sbin/init
    5. #将需要的软件复制到容器中
    6. docker cp ./jkd-8u144.rpm centos-all:opt/tool/
    7. #进入容器
    8. docker exec -it centos-all bash
    9. rpm -ivh jdk-8u144.rpm
    10. #查找安装的目录
    11. whereis java
    12. #查看mysql的安装源
    13. cat /etc/yum.repos.d/mysql-community.repo
    14. #让tomcat随着容器的启动而启动
    15. vim /etv/rc.d/rc.local
    16. /opt/tomcat/bin/startup.sh
    17. #将容器导出
    18. docker export -o ./centos-all.tar centos-all
    19. #查看文件大小
    20. du -sh centos-all.tar
    21. #两台linux局域网互传
    22. scp
    23. Docker import:从归档文件中创建镜像
    24. docker import centos-all.tar w3cschi=ool/centos:v4
    25. docker commit:从容器创建一个新的镜像
    26. docker commit centos-all woniuxy.com/live/centos:woniusales
    27. docker save:将指定镜像保存成tar归档文件

    Docker File语法(运维用的多)

    1. docker File:用于构建镜像
    2. vim dockerFile
    3. //从原始镜像中构建新的镜像
    4. FROM daocloud.io/library/centod:7.6.1810
    5. //同时执行两条命令
    6. RUM yum install -y net-tools \
    7. && yum install -y unzip
    8. Docker build:用于使用dockerFile构建的镜像
    9. //./的意思是到当前目录下去自动寻找dockerfile文件
    10. docker build -t woniux.com/live/centos:dockerfile ./
    11. //这样就会生成一个新的镜像文件,再去基于它创建容器即可
    12. //同时执行三条命令用分号
    13. hostname;date;ls;sleep 5

    python持续集成

    1. import paramiko #paramiko->基于SSH协议远程发动Linux指令或上传下载文件
    2. #建立与服务器的连接
    3. transport = paramiko.Transport(('192.168.1112.135',22))
    4. transport.connect(username='root',password='123456')
    5. #实例化SSH对象以便于执行命令
    6. ssh=paramiko.SSHClient()
    7. ssh._transport = transport
    8. #执行命令
    9. cmd = 'hostname;ls /;date;ifconfig;'
    10. //返回三个值,所以用三个接收
    11. stdin,stdout,stderr = ssh.exec_command(cmd)
    12. //得到字节类型,所以需要用decode将它变成字符串
    13. print(stdout.read().decode())
    14. #上传文件
    15. sftp = paramiko.SFTPClient.from_transport(transport)
    16. sftp.put(r'E:\workspace\woniuspace\woniusales.war', '/mnt/tool/woniusales.war')
    17. svnant
    18. 是什么命令

    jenkins持续集成(建议使用tomcat来使用jenkins)

    流水线(pipline) 将需要的步骤全都放在一起执行