在工作中,可以将需要的系统和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 ps
docker images
docker search centos
# 默认情况会拉取最新版本镜像,如果需要指定版本,需要添加tag标签
docker pull mysql:5.6.46
docker create hello-world:latest
# 查看所有的容器
docker container ls -a
# 因为在创建的时候没有指定容器的名称,所以系统随机了一个,启动容器
docker start keen_lehmann
# 停止容器的运行
docker stop hello-docker
# 删除容器
docker rm keen_lehmann
docker 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来连mysql
ifconfig -a
192.168.112.135
# 使用docker ps查看mysql的端口号:3306只是容器里面的端口,在外部没办法使用
# 需要在容器创建的时候映射一个端口,或者在容器创建后,手动修改配置文件
# 先退出mysql容器
docker stop some-mysql
cd /var/lib/docker
cd 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 File
unzip -oq woniusales.war -d ./woniusales
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
#修改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 bash
rpm -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局域网互传
scp
Docker import:从归档文件中创建镜像
docker import centos-all.tar w3cschi=ool/centos:v4
docker commit:从容器创建一个新的镜像
docker commit centos-all woniuxy.com/live/centos:woniusales
docker 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 unzip
Docker 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) 将需要的步骤全都放在一起执行