使用 VMware Workstation 新建一台 CentOS7 的虚拟机(硬盘默认 20G 即可),并进行网络配置
配置虚拟化引擎(如果虚拟机处于运行状态,需要先关机):在左侧列表中,选中对应的虚拟机——右键——设置——在 “虚拟机设置” 弹窗中,选择 “硬件” 标签页——选中 “处理器”——在右侧的 “虚拟化引擎” 中勾选第一项 “虚拟化 Intel VT-x/EPT 或 AMD-V/RVI(V)”。如图:
查看 CPU 是否支持虚拟化:cat /proc/cpuinfo | egrep 'vmx|svm'。找到 flags 部分,如果其中输出有 svm 或 vmx,表明 CPU 支持虚拟化技术。如图:
查看是否加载 KVM:lsmod | grep kvm
如果已加载,则结果如图:
如果没有加载,则执行命令:modprobe kvm
关闭防火墙
暂时关闭:systemctl stop firewalld
永久关闭:systemctl disable firewalld
关闭 SELinux
暂时关闭:setenforce 0
永久关闭:vim /etc/selinux/config
将 SELINUX=enforcing 改为 SELINUX=disabled
安装 KVM 相关软件包:yum install -y qemu-kvm qemu-img virt-manager libvirt libvirt-python virt-manager libvirt-client virt-install virt-viewer
启用 IP 路由转发功能
检查是否已启用 IP 路由转发功能:sysctl -a | grep "ip_forward"。如图:
如果 net.ipv4.ip_forward = 1,证明已启用
如果是其他结果,证明未启用,需执行以下命令:
修改系统内核参数:echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
重新加载系统内核参数的值:sysctl -p
启动 libvirt
启动 libvirt:systemctl start libvirtd
设置开机自启动:systemctl enable libvirtd
新建目录
新建系统镜像目录:mkdir /opt/iso
新建虚拟机存储盘目录:mkdir /opt/images
验证:在 VMware Workstation 的虚拟机界面中,在终端中输入命令,进入图形化管理界面:virt-manager。如图:
注:如果使用 Xshell 执行此命令,会要求下载 Xmanager,而 Xmanager 是无免费版的,所以不采用此种方法。如图:
前提:在 KVM 所属的虚拟机内操作
前提:在 KVM 所属的虚拟机内操作
前提:此处的 KVM 虚拟机迁移,是指在 KVM 所属虚拟机之间迁移 KVM,而非是在 KVM 内部迁移由 KVM 所创建的虚拟机
PS:有了镜像才能创建容器
前提:使用 “三.3.1” 的命令进入容器后,因为默认没有安装 vi 和 vim 命令,所以无法修改文件
安装 vim 命令:apt-get install -y vim。如图:
一、安装 Docker
查看当前的内核版本(需要 3.10 版本及以上):uname -r
【非必须】更新 yum 包(如后续出现不兼容的情况再更新也可以):yum -y update
如果执行了此步,执行完成后,需重启服务器:reboot
【非必须】卸载旧版 Docker(如果之前没装过,就不需要执行此步):yum remove docker docker-common docker-selinux docker-engine
安装需要的软件包:yum install -y yum-utils device-mapper-persistent-data lvm2
yum-util:提供 yum-config-manager 功能
device-mapper-persistent-data、lvm2:devicemapper 驱动依赖
设置阿里 yum 源:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看 Docker 可用版本:yum list docker-ce --showduplicates | sort -r
如图:
选择一个版本进行安装:yum install -y docker-ce-版本号
版本号为 “:“ 与 ”-“ 中间的部分,如第一个 3:23.0.1-1.el7,版本号为 23.0.1
如:yum -y install docker-ce-23.0.1
启动 Docker:systemctl start docker
设置开机自启动:systemctl enable docker
验证:
查看 Docker 状态:systemctl status docker。如图:
二、常见错误
问题:执行 Docker 命令时,报错 “docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql (3f2bbdbc27f3535c35b1f74b12b7e026dd3eb19d25aab213295b455bdc4fc37c): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306 -j DNAT --to-destination 172.17.0.2:3306 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1)).”
问题原因:可能是在 Docker 运行期间修改了 IP 配置导致的
解决方法:重启 Docker:systemctl restart docker
前提:以 ubuntu 镜像为例
一、相关操作
镜像下载、命名并上传到私有仓库
将镜像拉取到本地:docker pull ubuntu。如图:
查看本地已有镜像:docker images。如图:
给镜像打标签:docker tag c6b84b685f35 127.0.0.1:5000/ubuntu:latest
将镜像上传至私有仓库:docker push 127.0.0.1:5000/ubuntu:latest。如图:
注意仓库地址
在线查询镜像
查看 DNS 配置:cat /etc/resolv.conf。确认已配置正确的 DNS
在线查询 ubuntu 镜像:docker search ubuntu。如图:
修改镜像内容
新建容器并启动:docker run -itd 127.0.0.1:5000/ubuntu:latest
查看正在运行的容器:docker ps -a。如图:
进入容器并开启一个新终端:docker exec -it b786ab1aed8c /bin/bash。如图:
查看当前目录内容:ll。如图:
在 /opt 目录下创建 hello 文件:touch /opt/hello
查看 /opt 目录下的内容:ll /opt。如图:
退出并停止容器:exit。如图:
导出镜像
查看正在运行的容器:docker ps -a。如图:
导出镜像:docker export b786ab1aed8c > /opt/ubuntu:v1.tar
确认:ll /opt/。如图:
删除镜像
查看正在运行的容器:docker ps -a。如图:
停止要删除的镜像所启动的容器:docker stop b786ab1aed8c。如图:
查看本地已有镜像:docker images。如图:
删除镜像:docker rmi -f c6b84b685f35。如图:
再次查看本地已有镜像:docker images。发现已没有上述两个镜像clear
前提:以 ubuntu 镜像为例
一、相关操作
运行容器
将镜像拉取到本地:docker pull ubuntu。如图:
查看本地已有镜像:docker images。如图:
给镜像打标签:docker tag c6b84b685f35 127.0.0.1:5000/ubuntu:latest
新建容器,命名为 ubuntu1 并启动:docker run -itd --name ubuntu1 127.0.0.1:5000/ubuntu:latest
查看正在运行的容器:docker ps -a。如图:
启动、停止、重启容器
停止容器:docker stop ubuntu1。如图:
查看正在运行的容器:docker ps -a。发现已没有名为 ubuntu1 的容器
启动容器:docker start ubuntu1。如图:
查看正在运行的容器:docker ps -a。如图:
重启容器: docker restart ubuntu1。如图:
连接容器
docker exec 方法进入
进入容器并开启一个新终端:docker exec -it ubuntu1 /bin/bash。如图:
可在此终端进行常规操作
退出并停止容器:exit
docker attach 方法进入
进入容器:docker attach ubuntu1。如图:
可在此终端进行常规操作
退出并停止容器:exit
查看容器的配置信息:docker inspect ubuntu1。如图:
查看容器的网络信息:docker inspect -f {{.NetworkSettings}} ubuntu1。如图:
容器的打包:docker export ubuntu1 > ubuntu:v2.tar
重命名容器:docker rename ubuntu1 ubuntu2
查看容器的文件变更:docker diff ubuntu2。如图:
删除容器(可删除运行中的容器):docker rm -f ubuntu2。如图:
PS:以安装 Tomcat 9.0 为例
一、安装
拉取 Tomcat 镜像:docker pull tomcat:9.0
查看安装的 Tomcat 镜像:docker images
创建 Tomcat 挂载目录:mkdir -p /usr/local/webapps
授权挂载目录:chmod -R 777 /usr/local/webapps
启动 Tomcat 容器,并挂在数据卷:docker run -di --name=myTomcat -p 8080:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:9.0
二、配置以便访问首页
进入 Tomcat 容器:docker exec -it myTomcat /bin/bash
将 webapps.dist 目录中的内容复制到 webapps 目录中:cp -r webapps.dist/* webapps/
验证:在本地访问 Tomcat 首页:http://[IP]:[端口号]。如:http://192.168.128.10:8080
三、部署 War 包
将打包好的 War 包,上传到服务器的 /usr/local/webapps 目录下
验证:在本地访问项目首页:http://[IP]:[端口号]/[War 包名]。如:
上传的 War 包为 car.war,则应访问的地址是 http://192.168.128.10:8080/car
需已安装Docker
CentOS 版本:CentOS-7-x86_64-Minimal-2009.iso
一、安装 Gogs(自助 Git 服务),实现版本控制
安装 Docker:参考 “《Docker 安装》”
拉取 Gogs 镜像:docker pull gogs/gogs
查看本地镜像:docker images。如图:
创建挂载目录
创建 git 挂载目录:mkdir -p /opt/docker/gogs/git
创建 gogs 挂载目录:mkdir -p /opt/docker/gogs/gogs
创建 ssh 挂载目录:mkdir -p /opt/docker/gogs/ssh
授权挂载目录:chmod -R 777 /opt/docker/gogs
启动 Gogs 容器:docker run -d --name=gogs --privileged=true -p 10022:22 -p 3000:3000 -v /opt/docker/gogs:/data gogs/gogs
注:3000 接口的对外接口不能改为其他接口,否则重启虚拟机后启动 gogs 会出现 unhealthy 的问题
查看容器:docker ps -a
注:要等到 “STATUS” 列出现 “(healthy)” 标识时,才是启动完成
如图:
二、安装 MySQL,配置数据库
参考 “《在 Docker 上安装 MySQL 容器》”
三、创建 Gogs 数据库
进入 MySQL 容器:docker exec -it mysql mysql -uroot -p。然后输入密码
创建 gogs 数据库:create database gogs character set utf8 collate utf8_general_ci;
查看数据库列表:show databases;。如图:
退出数据库:exit
四、配置 Gogs 服务
登录网页版 Gogs 服务:http://[Gogs 服务器 IP]:[Gogs 对外端口]/。如:http://192.168.128.90:3000/
安装 Gogs 服务:配置如下
数据库设置模块
数据库类型:MySQL
数据库主机:[MySQL 服务器 IP]:[MySQL 对外端口]。如:192.168.128.90:3316
数据库用户:root
数据库用户密码:root 密码 (可能出错)
数据库名称:gogs
应用基本设置
域名:[Gogs 服务器 IP]:[Gogs 对外端口]。如:192.168.128.90:3000
SSH 端口号:10022
应用 URL:http://[Gogs 服务器 IP]:[Gogs 对外端口]/。如:http://192.168.128.90:3000/
日志路径:/data/log
其他配置:采用默认配置
如图:
注册 Gogs 用户
点击 “立即安装” 按钮,会跳转到 Gogs 登录页,点击下方的 “还没账户?马上注册。” 选项。如图:
在注册页面中,填入相应信息,点击 “创建账户” 按钮。如图:
登录 Gogs:点击 “创建账户” 按钮后,会跳转到登录页面。输入刚注册的用户信息,勾选 “记住登录” 选项,点击 “登录” 按钮。如图:
创建仓库
登录到首页后,点击右侧 “我的仓库” 选项右侧的 “+” 按钮。如图:
创建新的仓库页:进行如下配置
仓库名称:自定义。如:testGit
其他配置:采用默认配置
如图:
查看仓库详情:点击 “创建仓库” 按钮,会跳转到仓库详情页。如图:
安装 git:yum install -y git
克隆刚创建的 Git 仓库到本地,构建私有仓库:
在网页端的仓库详情页中,复制仓库地址:在 “克隆当前仓库” 模块中,选择 “HTTP” 格式,点击右侧的 “复制链接” 按钮。如图:
执行克隆操作:git clone [HTTP 格式仓库地址]。如:http://192.168.128.90:3000/guojinchao/testGit.git。如图:
查看本地情况:ll。如图:
五、安装 Tomcat
参考 “《在 Docker 上安装 Tomcat 容器》” 中的 “一、二”
六、常见问题
问题:无法访问网页版 Gogs 服务
问题原因:查看 Docker 容器运行情况(docker ps -a),发现 Gogs 容器处于不健康状态(unhealthy)。如图:
问题排查:查看容器的配置信息(docker inspect gogs),查看其中的 “State” 中 ”Healthy“ 里的信息,发现是 curl 不通 3000 端口
解决方法:
停止并删除 Gogs 容器,重新启动,且 3000 端口的对外端口仍然使用 3000,不能使用其他端口
配置 Gogs 服务
参考 “四.1、四.2”
用之前注册的 Gogs 用户进行登录,无需重新注册
点击首页右上角的头像,在下拉列表中选择 “管理面板”。如图:
管理面板页:在左侧菜单中选择 “仓库管理”,在右侧的仓库列表中删除之前创建的仓库(已经都无法使用)。如图:
在弹出的提示框中,点击 “确认操作”。如图:
前提:
192.168.128.150 train
baseurl=http://mirrors.aliyun.com/$contentdir/$releasever/cloud/$basearch/openstack-train/