MAC搭建容器开发环境


简介

在工作中我们往往需要使用容器的相关环境进行测试与开发,这篇文档主要记录了我这边设置容器相关开发的方法,主要使用minikube,docker,vagrant,virtualbox,vscode,brew等软件

环境

操作系统:  macOS Catalina

正文

1.安装Xcode Command Line Tools

xcode-select --install

2.安装Homebrew

# 安装brew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
# 国内用户可以使用gitee加速
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
# 卸载方法
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)"
# 国内用户
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh)"

3.安装相关软件

brew cask install virtualbox
brew cask install vagrant
brew cask install vagrant-manager

4. 安装minikube

# Homebrew安装
brew install kubernetes-cli
brew cask install minikube

# 二进制安装
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
sudo install minikube-darwin-amd64 /usr/local/bin/minikube

Ps:

minikube初始化kubernetes集群

minikube start --network-plugin=cni --driver=virtualbox --cni=calico --cpus=4  --memory=8g --image-mirror-country cn --docker-env http_proxy=http://192.168.99.1:8000 --docker-env https_proxy=http://192.168.99.1:8000 --docker-env no_proxy=localhost,127.0.0.1,::1,192.168.99.0/24

5. 安装Golang

brew install go
mkdir -p ~/development/golang/{src,bin,pkg}
# 使用zsh的shell
cat >~/.zshrc<< EOF
#golang
export GOPATH=~/development/golang
export GO111MODULE=on
export GOPROXY=https://goproxy.cn
EOF

6. 安装kubebuilder

# 可以使用Homebrew安装,但是不建议,因为kubebuilder需要依赖etcd,kube-apiserver,kubectl
brew install kubebuilder
wget https://github.com/kubernetes-sigs/kubebuilder/releases/download/v2.3.1/kubebuilder_2.3.1_darwin_amd64.tar.gz
mkdir -p /usr/local/kubebuilder/2.3.1
tar xf kubebuilder_2.3.1_darwin_amd64.tar.gz -C /usr/local/kubebuilder/2.3.1/
cat >~/.zshrc<< EOF
#kubebuilder
export PATH=$PATH:/usr/local/kubebuilder/2.3.1/bin
EOF

7.安装docker

brew install cask docker
brew install --cask orbstack

8.安装vscode

brew cask install visual-studio-code

vscode推荐插件:

  1. Beautify
  2. Chinese (Simplified) Language Pack for Visual Studio Code
  3. Code Runner
  4. Comment Translate
  5. Docker
  6. Docker Compose
  7. Docker Explorer
  8. ESLint
  9. Git History
  10. Go
  11. Hugo Language and Syntax Support
  12. Image preview
  13. Insert Date String
  14. Jupyter
  15. Kubernetes
  16. Markdown All in One
  17. Markdown Preview Enhanced
  18. Monokai++
  19. python
  20. Vetur
  21. Remote Development
  22. vscode-icons
  23. vue
  24. YAML

我的vscode的settings.json ~/Library/Application Support/Code/User/settings.json

{
    // Editor
    // 字体
    //"editor.fontFamily": "Menlo, Monaco, 'Courier New', monospace",
    "editor.fontFamily": "'Cascadia Code', Consolas, 'Courier New', monospace, '苹方-简', 'Sarasa Gothic SC'",
    "editor.fontLigatures": false,
    "editor.fontSize": 16,
    //"editor.fontWeight": "500",
    "editor.tabSize": 4,
    //超链接下划线
    "editor.links": false,
    "window.zoomLevel": 0,
    "editor.minimap.enabled": true,
    "editor.minimap.maxColumn": 100,
    "editor.detectIndentation": false,
    "editor.wordWrap": "on",
    "editor.renderWhitespace": "none",
    "editor.snippetSuggestions": "top",
    "editor.suggestSelection": "first",
    "editor.renderLineHighlight": "all",
    "editor.quickSuggestions": {
        "other": true,
        "comments": false,
        "strings": false
    },
    // Workbench
    "workbench.statusBar.visible": true,
    "workbench.activityBar.visible": true,
    "workbench.editor.highlightModifiedTabs": true,
    "workbench.sideBar.location": "right",
    "workbench.startupEditor": "none",
    //1.40.0+,自定义 activeBar 颜色
    "workbench.colorCustomizations": {
        "activityBar.activeBorder": "#f8bf02",
        "activityBar.activeBackground": "#2f88b4",
    },
    "workbench.colorTheme": "Monokai",
    "workbench.iconTheme": "vscode-icons",
    // Window
    "window.titleBarStyle": "custom",
    // 面包屑导航
    "breadcrumbs.enabled": true,
    "explorer.confirmDelete": false,
    "explorer.confirmDragAndDrop": false,
    "vsicons.dontShowNewVersionMessage": true,
    "files.associations": {
        "*.vue": "vue",
        "*.wxss": "css",
        "*.wxml": "html",
        "*.ts": "javascript"
    },
    // Markdown
    "[markdown]": {
        "editor.wordWrap": "on",
        "editor.renderWhitespace": "all",
        "editor.quickSuggestions": {
            "others": true,
            "comments": true,
            "strings": true
        },
        "editor.acceptSuggestionOnEnter": "on"
    },
    // Markdown All in One
    "markdown.extension.toc.updateOnSave": false,
    "markdown.extension.toc.levels": "2..3",
    // Markdown Preview Enhanced
    "markdown-preview-enhanced.mermaidTheme": "default",
    "markdown-preview-enhanced.previewTheme": "atom-dark.css",
    "markdown-preview-enhanced.codeBlockTheme": "monokai.css",
    // Search
    "search.showLineNumbers": true,
    // Go
    "go.goroot": "/usr/local/Cellar/go/1.15.3/libexec",
    "go.gopath": "~/development/golang",
    // 使用 Go Modules 时无需 inferGopath
    "go.inferGopath": false,
    "go.useLanguageServer": true,
    //自动完成未导入的包
    "go.autocompleteUnimportedPackages": true,
    "go.gotoSymbol.includeImports": false,
    "go.gotoSymbol.includeGoroot": false,
    "go.useCodeSnippetsOnFunctionSuggest": true,
    "go.useCodeSnippetsOnFunctionSuggestWithoutType": true,
    "go.lintOnSave": "file",
    "go.buildOnSave": "off",
    "go.formatTool": "goreturns",
    "go.docsTool": "gogetdoc",
    "go.testFlags": [
        "-v"
    ],
    "go.languageServerExperimentalFeatures": {
        "diagnostics": false,
    },
    // python
    "python.pythonPath": "~/.pyenv/versions/3.8.1/bin/python",
    // Terminal
    //终端
    //"terminal.external.osxExec": "iTerm.app",
    //终端shell
    "terminal.integrated.shell.osx": "zsh",
    //终端字体
    "terminal.integrated.fontFamily": "Hack Nerd Font",
    // 代理
    "http.proxyStrictSSL": false,
    "http.proxy": "http://127.0.0.1:8000",
    // Git
    "git.ignoreLegacyWarning": true,
    "git.autofetch": true,
    "git.enableSmartCommit": true,
    //dart
    "[dart]": {
        "editor.formatOnSave": true,
        "editor.formatOnType": true,
        "editor.rulers": [
            80
        ],
        "editor.selectionHighlight": false,
        "editor.suggest.snippetsPreventQuickSuggestions": false,
        "editor.suggestSelection": "first",
        "editor.tabCompletion": "onlySnippets",
        "editor.wordBasedSuggestions": false
    },
    "dart.openDevTools": "flutter",
    "[json]": {
        "editor.defaultFormatter": "vscode.json-language-features"
    },
    "editor.codeActionsOnSave": {
        "source.fixAll.eslint": true
    },
    "vs-kubernetes": {
        "vs-kubernetes.draft-path.mac": "~/.vs-kubernetes/tools/draft/darwin-amd64/draft",
        "vs-kubernetes.minikube-path.mac": "~/.vs-kubernetes/tools/minikube/darwin-amd64/minikube",
        "vs-kubernetes.helm-path.mac": "~/.vs-kubernetes/tools/helm/darwin-amd64/helm"
    },
    "C_Cpp.updateChannel": "Insiders",
    "code-runner.runInTerminal": true,
    // InsertDateString插件时间格式设置
    "insertDateString.format": "YYYY-MM-DDThh:mm:ssZZZ",
}

结束

vagrant文档 minikube的github