虚拟机及Docker备忘

一.使用VirtualBox + Vagrant

分别下载安装后,运行:vagrant init centos7 https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7.box

后:vagrant up

登录: vagrant ssh

常用命令:

启动:vagrant up ,状态是 running

停止:vagrant halt 状态是 poweroff

暂停:vagrant suspend 状态是 saved

重启:vagrant reload 状态是 running 命令 reload 是先关闭,再开启

销毁:vagrant destroy 状态是 not created

以下解决Vagrant磁盘爆满问题:

我们在vagrant所在的目录(huangjy40/)下创建一个名为backup的目录。

然后进入目录:

D:\MyData\用户\.vagrant.d\boxes\centos7\0\2004.01\virtualbox

找到该目录下的Vagrantfile文件,进行修改。

修改前:

Vagrant.configure("2") do |config|
  config.vm.base_mac = "5254004d77d3"
  config.vm.synced_folder ".", "/vagrant", type: "rsync"
end
修改后:

Vagrant.configure("2") do |config|
  config.vm.base_mac = "5254004d77d3"
  config.vm.synced_folder "./backup", "/vagrant", type: "rsync"
end

config.vm.synced_folder "D:/Home/pypy","/vagrant",type: "rsync"

可以修改源目录,但目标目标经测试只能是:/vagrant

另: 自动同步: vagrant rsync-auto

手工同步: vagrant rsync

另一种:先安装插件:vagrant plugin install vagrant-rsync-auto

再在config.vm.synced_folder后配置:config.rsync_auto.enable = true
  # config.rsync_auto.interval = 30
修改后,重启vagrant

要开机自运行vagrant up,shell:startup 后建一个 bat文件,输入:cmd /k "cd /d C:\Users\Administrator && vagrant up",或在别的地方建,在这里粘贴快捷方式。

二.登录后设置虚拟机IP:    查年windows的ipconfig ,找到virtualbox的虚拟网卡网关:如 192.168.56.1   ,则 虚拟机IP可设置为: 192.168.56.10 ,这个IP的设置位置是:c:/users/administrator/VagrantFile中的:config.vm.network "private_network", ip: "192.168.56.10"

修改后,执行: vagrant reload让设置生效。

三.虚拟机网络设置:

如果一直报:Could not resolve host: mirrorlist.centos.org; Unknown error,这一般是网卡没配置好,只要在VagrantFile 里面打开这一行,开启桥接模式:config.vm.network "public_network"

Vagrant (三) - 网络配置 - 简书

四.Docker安装及自启动

安装参考:Docker官方文档

先删除:

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

之后:安装工具:

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

第3步:sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

第4步,启动Docker :  

sudo systemctl start docker

 第5步:设置Docker自启动:

sudo systemctl enable docker

第6步:镜像加速

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

轻量应用服务器 安装 Docker 并配置镜像加速源-最佳实践-文档中心-腾讯云

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://b6qf0f6f.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

注意:默认情况下 Docker 的tcp 2375端口是不开放的,修改方法:

vim /usr/lib/systemd/system/docker.service 

找到ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 

在后台加上:  -H tcp://0.0.0.0:2375

变成: ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375

重启: systemctl daemon-reload         systemctl restart docker  即可。

查看images  : docker images

删除image: docker rmi imageid

五、Docker 安装 Mysql

1:从Docker hub中拉取mysql :  

sudo docker pull mysql:8.0

在腾讯云上使用 8.0.22 没有错误,8.0报错

2:安装

sudo docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-v /mydata/mysql/files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0

3:启动:docker start mysql     。

查看运行中的容器:docker ps  (process status) 。

设置mysql自启动:sudo docker update mysql --restart=always     

查看mysql的日志:docker container logs mysql

4:进入容器:docker exec -it mysql bash

5: 如果MYsql日志报错(加了-v /mydata/mysql/files:/var/lib/mysql-files \应该就不会报错): mysqld: Error on realpath() on ‘/var/lib/mysql-files’ (Error 2 - No such file or directory):  先删除container :sudo docker container rm mysql

再建 一个文件夹: mkdir  mysql-files  ,再输入命令:

sudo docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -v /home/vagrant/mysql-files/:/var/lib/mysql-files  -e MYSQL_ROOT_PASSWORD=1234 -d mysql:8.0

解决mysqld: ‘/var/lib/mysql-files‘ (Error 2..._wslynn的博客-CSDN博客

6:如果远程连接时报错:docker Host is not allowed to connect to this mysql server,则先登录mysql容器:docker exec -it mysql bash

后在mysql命令后执行:

use mysql;

update user set host='%' where user='root';

Grant all privileges on root.* to 'root'@'%'; #执行两次,第一次会报错:ERROR 1410 (42000): You are not allowed to create a user with GRANT,mysql8.0以上版本分配权限不能带密码创建账号了,要先创建账号再设置权限

alter user root identified with mysql_native_password by '1234';

FLUSH PRIVILEGES;

7) 如何报需要 mysqladmin flush-hosts ,则是错误连接过多,用docker 进入 mysql,执行:mysqladmin -u root -p flush-hosts

六:安装 redis:

1)sudo docker pull redis

2) 创建配置文件:

sudo mkdir -p /mydata/redis/conf

sudo touch /mydata/redis/conf/redis.conf

3)运行Docker

sudo docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \

-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \

-d redis redis-server /etc/redis/redis.conf

4)进入redis容器内:

sudo docker exec -it redis redis-cli

5) 修改/mydata/redis/conf/redis.conf ,增加 appendonly yes  作用是将存储改由内存改为持久化。

6) 查看挂载:docker inspect -f "{{.Mounts}}" 369a1376f78c

7)修改挂载:

先停止docker服务
systemctl stop docker.service(关键,修改之前必须停止docker服务)
后vi /var/lib/docker/containers/container-ID/config.v2.json

查看完整容器ID:docker ps --no-trunc

8)修改redis密码:sudo docker exec -it redis /bin/bash  

然后运行:redis-cli

查看当前密码:config get requirepass

修改密码:config set requirepass 12345

9) 设置redis自启动:

sudo docker update redis --restart=always   

sudo docker start redis

注意: docker/redis.conf 默认没有内容,可加 appendonly yes表示开启物理存储

docker/redis.conf 支持远程内容:

#bind 127.0.0.1 //允许远程连接

protected-mode no

appendonly yes //持久化

requirepass 123456 //密码

七.安装nacos:

拉取: sudo docker pull nacos/nacos-server默认是2.0版本

用新版: sudo docker pull nacos/nacos-server:v2.2.2

先简单启动:sudo docker run -p 8848:8848 --name nacos -d nacos/nacos-server:v2.2.2

sudo mkdir /mydata/nacos

sudo docker cp nacos:/home/nacos/logs/ /mydata/nacos/logs/
sudo docker cp nacos:/home/nacos/conf/ /mydata/nacos/conf/

sudo docker rm -f nacos

sudo systemctl stop firewalld 

再安装:

sudo docker run -d --name nacos -p 8848:8848 -p 9848:9848 -p 9849:9849 --privileged=true -e JVM_XMS=256m -e JVM_XMX=512m -e MODE=standalone -v /mydata/nacos/logs/:/home/nacos/logs -v /mydata/nacos/conf/:/home/nacos/conf/ --restart=always nacos/nacos-server:v2.2.2

开关防火墙:

systemctl start firewalld (开启防火墙)
systemctl status firewalld (查看防火墙状态)

systemctl stop firewalld 

开放端口:

1.添加指定需要开放的端口:
firewall-cmd --add-port=8848/tcp --permanent
 2.重载入添加的端口:
firewall-cmd --reload
3.查询指定端口是否开放成功:
firewall-cmd --query-port=8848/tcp 

八.安装Nginx   如果是多个微服务有一个gateway调度, 一般不把nginx作为Docker运行,而是在宿主机上直接安装nginx.安装方法:

yum -y install nginx

启动服务:systemctl start nginx

系统自系统:systemctl enable nginx   

找目录:whereis nginx

拉镜像:sudo docker pull nginx

 运行:

sudo mkdir -p /mydata/nginx/conf/
sudo touch /mydata/nginx/conf/nginx.conf
sudo mkdir -p /mydata/nginx/conf.d

#启动容器

sudo docker run -d --name nginx nginx

# 拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录($PWD 当前全路径)
docker cp nginx:/etc/nginx/nginx.conf /mydata/nginx/conf
docker cp nginx:/etc/nginx/conf.d /mydata/nginx/conf

# 停止容器
 docker container stop nginx
# 删除容器
 docker container rm nginx

#部署容器

docker run -p 80:80 --name nginx -v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /mydata/nginx/conf.d:/etc/nginx/conf.d -v /mydata/nginx/html:/usr/share/nginx/html -v /mydata/nginx/logs:/var/log/nginx -d nginx

docker update nginx --restart=always

九:docker安装Sentinel

sudo docker search sentinel

sudo docker pull bladex/sentinel-dashboard

docker run --name sentinel -p 8858:8858 -td bladex/sentinel-dashboard --restart=always

十:docker 开启远程TCP端口方法:

查看docker安装路径:systemctl status docker.service

vim /lib/systemd/system/docker.service 

在ExecStart行后面追加以下内容: -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 

重新载入服务信息: systemctl daemon-reload

重启docker服务:systemctl restart docker.service

最后,可以在IDEA的Docker面板连接这个tcp://222.222.222.22:2375,进行下一步操作。

十一:软件装好后,在windows下运行 shell:startup打开自动启动目录,将两个快捷方式粘贴到这里:一个是nacos/bin下的静默启动 startnacos.vbs:

set ws=WScript.CreateObject("WScript.Shell") 
ws.Run "startup.cmd -m standalone",0 

另一个是:在c:/users/admin下建一个vagrant.bat:

vagrant up

十二:本机开发环境总结:

          1.虚拟机(192.168.56.11)vagrant up启动,安装docker/redis/mysql/nginx。其中在nginx里面配置上游服务器及反向代理:
    upstream zhzhnet{server 192.168.56.1:88;}
    server {
        listen 80; 
        server_name test.zhzh.net mini.zhzh.net;
       location / { proxy_set_header Host $host; proxy_pass http://zhzhnet;}
    }

          2.主机HOST配置DNS:192.168.56.11 test.zhzh.net

                     192.168.56.11 mini.zhzh.net。

          3.IDEA项目建好,有Gateway微服务接管88端口,并做lb:微服务映射。

        如:

.route("mini-web", r -> r.host("mini.zhppt.net")
        .filters(f -> f.rewritePath("^/?(.*)$", "/$1")
                .filter((exchange, chain) -> {
                    ServerHttpRequest request = exchange.getRequest();
                    ServerHttpResponse response = exchange.getResponse();
                    log.info("mini-web: 请求:" + request.getMethodValue() + request.getURI());
                    return chain.filter(exchange).then(Mono.fromRunnable(() -> {
                        HttpStatus statusCode = response.getStatusCode();
                        log.info("mini-web: 响应" + statusCode.value() + statusCode.getReasonPhrase());
                    }));
                })
        ).uri("lb://ppt-mini"))

过程就是主机域名去访问虚拟机的nginx网关,这个网关又指向主机的88微服务。

十三:docker 清理

docker system prune -a : 命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像,前提要先  systemctl stop docker

docker system prune   这个命令默认不会删除悬空的资源,即那些未被使用的资源。

docker system df  : 查看占用空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值