2021-11-14 周天
## 因子
最近在整理博客内容,因为平时使用`docker`的时候,见到了三剑客中的`docker-machine`,也就开始使用了。虽然现在`docker-machine`已经被官方弃用,不再维护更新,但是个人觉得其隔离性还是很好用的。(`Docker Desktop` 是官方主要更新维护的项目)
![](https://img.kancloud.cn/60/7a/607a105f61aca6996d114b15665dd988_1994x500.png)
## 认识和基本使用
1. docker-machine 可以让你管理多个docker主机,能让你本地建立多个docker虚拟机,之前docker环境相互隔离。
2. 下载对应的二进制命令文件,加入到自己的命令库,就算是安装完成,删除则算是卸载完成。
3. 将docker-machine命令取别名dm,熟练使用ls、stop、start、ssh等命令。
![](https://img.kancloud.cn/9c/13/9c13d907e01f2139fc59aa3dce59a556_2214x904.png)
4. 可以在自己的机器上安装多个docker-machine,一个做nginx的学习,一个做mysql的学习,相互之前不影响,然后利用vbox把端口上的服务映射出来。
## 例子:将dm内的p映射出来浏览器访问
1. 先创建一个test的隔离环境
``` bash
mango@mangodeMacBook-Pro ~ % dm create --driver virtualbox test
Running pre-create checks...
Creating machine...
(test) Copying /Users/mango/.docker/machine/cache/boot2docker.iso to /Users/mango/.docker/machine/machines/test/boot2docker.iso...
(test) Creating VirtualBox VM...
(test) Creating SSH key...
(test) Starting the VM...
(test) Check network to re-create if needed...
(test) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: dm env test
```
2. ssh到test的docker machine上,运行portainer容器
``` bash
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer\_data:/data portainer/portainer
```
``` bash
mango@mangodeMacBook-Pro ~ % dm ssh test
( '>')
/) TC (\ Core is distributed with ABSOLUTELY NO WARRANTY.
(/-_--_-\) www.tinycorelinux.net
docker@test:~$ docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer\_data:/data portainer/portainer
Unable to find image 'portainer/portainer:latest' locally
latest: Pulling from portainer/portainer
94cfa856b2b1: Pull complete
49d59ee0881a: Pull complete
a2300fd28637: Pull complete
Digest: sha256:fb45b43738646048a0a0cc74fcee2865b69efde857e710126084ee5de9be0f3f
Status: Downloaded newer image for portainer/portainer:latest
aa130cadc27a40a24867f7cf54a76674e9457686bc4b6d30884f160908d29871
docker@test:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa130cadc27a portainer/portainer "/portainer" 6 seconds ago Up 6 seconds 0.0.0.0:8000->8000/tcp, 0.0.0.0:9000->9000/tcp portainer
```
3. 通过virtualbox的端口映射,将9000端口映射到宿主机
![](https://img.kancloud.cn/46/d4/46d464a06e3e092d5375465242cafb47_2088x1004.png)
4. 通过浏览器访问代理的端口,http://127.0.0.1:10001
![](https://img.kancloud.cn/57/da/57dabd5b69d8d80628605ad47a4737e3_2368x1432.png)
![](https://img.kancloud.cn/fa/4c/fa4c47e4a9ee4aee38bd0fad870bc81a_3356x1332.png)
## docker-machine vs multipass
1. 面对的人员角度不同,`docker-machine`是面对`docker`容器环境的使用者,而`multipass`则是面对`ubuntu`操作系统环境的使用者。
2. 虽然都是借助虚拟机技术来得到VM环境,但范围体积不一样。
3. 都是通过建立不同虚拟机,来达到相互隔离的特性,通过网桥实现内部网络连通。
``` bash
mango@mangodeMacBook-Pro ~ % multipass ls
Name State IPv4 Image
k3s Running 192.168.64.2 Ubuntu 20.04 LTS
10.42.0.0
10.42.0.1
node1 Running 192.168.64.3 Ubuntu 20.04 LTS
10.42.1.0
10.42.1.1
rancher Running 192.168.64.4 Ubuntu 20.04 LTS
mango@mangodeMacBook-Pro ~ % multipass shell rancher
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-90-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Sun Nov 14 22:26:19 CST 2021
System load: 0.7 Processes: 115
Usage of /: 27.6% of 4.67GB Users logged in: 0
Memory usage: 19% IPv4 address for enp0s2: 192.168.64.4
Swap usage: 0%
1 update can be applied immediately.
To see these additional updates run: apt list --upgradable
Last login: Sun Nov 14 22:25:51 2021 from 192.168.64.1
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
ubuntu@rancher:~$
```
- Redis来回摩擦
- redis的数据结构SDS和DICT
- redis的持久化和事件模型
- Java
- 从何而来之Java IO
- 发布Jar包到公共Maven仓库
- Java本地方法调用
- 面试突击
- Linux
- Nginx
- SpringBoot
- Springboot集成Actuator和SpringbootAdminServer监控
- SpringCloud
- Spring Cloud初识
- Spring Cloud的5大核心组件
- Spring Cloud的注册中心
- Spring Cloud注册中心之Eureka
- Spring Cloud注册中心之Consul
- Spring Cloud注册中心之Nacos
- Spring Cloud的负载均衡之Ribbon
- Spring Cloud的服务调用之Feign
- Spring Cloud的熔断器
- Spring Cloud熔断器之Hystrix
- Spring Cloud的熔断器监控
- Spring Cloud的网关
- Spring Cloud的网关之Zuul
- Spring Cloud的配置中心
- Spring Cloud配置中心之Config Server
- Spring Cloud Config配置刷新
- Spring Cloud的链路跟踪
- Spring Cloud的链路监控之Sleuth
- Spring Cloud的链路监控之Zipkin
- Spring Cloud集成Admin Server
- Docker
- docker日常基本使用
- docker-machine的基本使用
- Kubernetes
- kubernetes初识
- kubeadm安装k8s集群
- minikube安装k8s集群
- k8s的命令行管理工具
- k8s的web管理工具
- k8s的相关发行版
- k3s初识及安装
- rancher的安装及使用
- RaspberryPi
- 运维
- 域名证书更新
- 腾讯云主机组建内网
- IDEA插件开发
- 第一个IDEA插件hello ide开发
- 千呼万唤始出来的IDEA笔记插件mdNote
- 大刚学算法
- 待整理
- 一些概念和知识点
- 位运算
- 数据结构
- 字符串和数组
- LC242-有效的字母异位词
- 链表
- LC25-K个一组翻转链表
- LC83-删除有序单链表重复的元素
- 栈
- LC20-有效的括号
- 队列
- 双端队列
- 优先队列
- 树
- 二叉树
- 二叉树的遍历
- 二叉树的递归序
- 二叉树的前序遍历(递归)
- 二叉树的前序遍历(非递归)
- 二叉树的中序遍历(递归)
- 二叉树的中序遍历(非递归)
- 二叉树的后序遍历(递归)
- 二叉树的后序遍历(非递归)
- 二叉树的广度优先遍历(BFS)
- 平衡二叉树
- 二叉搜索树
- 满二叉树
- 完全二叉树
- 二叉树的打印(二维数组)
- 树的序列化和反序列化
- 前缀树
- 堆
- Java系统堆优先队列
- 集合数组实现堆
- 图
- 图的定义
- 图的存储方式
- 图的Java数据结构(邻接表)
- 图的表达方式及对应场景创建
- 图的遍历
- 图的拓扑排序
- 图的最小生成树之Prim算法
- 图的最小生成树之Kruskal算法
- 图的最小单元路径之Dijkstra算法
- 位图
- Java实现位图
- 并查集
- Java实现并查集
- 滑动窗口
- 单调栈
- 排序
- 冒泡排序BubbleSort
- 选择排序SelectSort
- 插入排序InsertSort
- 插入排序InsertXSort
- 归并排序MergeSort
- 快速排序QuickSort
- 快速排序优化版QuickFastSort
- 堆排序HeapSort
- 哈希Hash
- 哈希函数
- guava中的hash函数
- hutool中的hash函数
- 哈希表实现
- Java之HashMap的实现
- Java之HashSet的实现
- 一致性哈希算法
- 经典问题
- 荷兰国旗问题
- KMP算法
- Manacher算法
- Go