下载最新的Docker for Mac Edge 版本,跟普通mac软件一样安装,然后运行它,会在右上角菜单栏看到多了一个鲸鱼图标,这个图标表明了 Docker 的运行状态。
由于国内网络问题,国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务。
执行以下命令检查docker环境
$ docker --version Docker version 18.05.0-ce-rc1, build 33f00ce $ docker-compose --version docker-compose version 1.21.0, build 5920eb0 $ docker-machine --version docker-machine version 0.14.0, build 89b8332 # 如果 docker version、docker info 都正常的话,可以尝试运行一个 Nginx 服务器: $ docker run -d -p 80:80 --name webserver nginx # 访问一下Nginx服务器 $ curl http://localhost # 停止 Nginx 服务器并删除 $ docker stop webserver $ docker rm webserver点击设置菜单
点击启动k8s的checkbox,这里会拉取比较多的镜像,这里要等很长时间。
可执行以下命令检查k8s环境
$ kubectl get nodes NAME STATUS ROLES AGE VERSION docker-for-desktop Ready master 3h v1.9.6 $ kubectl cluster-info Kubernetes master is running at https://localhost:6443 KubeDNS is running at https://localhost:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.按以下步骤部署k8s-dashboard服务
$ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
# 开发环境推荐用NodePort的方式访问dashboard,因此编辑一下该部署
$ kubectl -n kube-system edit service kubernetes-dashboard
# 这里将type: ClusterIP修改为type: NodePort
# 获取dashboard服务暴露的访问端口
$ kubectl -n kube-system get service kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard NodePort 10.98.82.248 <none> 443:31241/TCP 2h
按上述输出,dashboard服务暴露的访问端口是31241,因此可以用浏览器访问https://localhost:31241/,我们可以看到登录界面.
此时可暂时直接跳过,进入到控制面板中
这里尝试用Skaffold往本地开发环境部署微服务应用。
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-darwin-amd64 && chmod +x skaffold && sudo mv skaffold /usr/local/bin
按上述输出,dashboard服务暴露的访问端口是30789,因此可以用浏览器访问http://localhost:30789/
用skaffold反复进行部署时会产生一些无用的docker实例及镜像,这里用一个脚本将它们删除
# 删除停止或一直处于已创建状态的实例
docker ps --filter "status=exited"|sed -n -e '2,$p'|awk '{print $1}'|xargs docker rm
docker ps --filter "status=created"|sed -n -e '2,$p'|awk '{print $1}'|xargs docker rm
# 删除虚悬镜像
docker image prune --force
# 删除REPOSITORY是长长uuid的镜像
docker images | sed -n -e '2,$p'|awk '{if($1 ~ /[0-9a-f]{32}/) print $1":"$2}'|xargs docker rmi
# 删除TAG是长长uuid的镜像
docker images | sed -n -e '2,$p'|awk '{if($2 ~ /[0-9a-f]{64}/) print $1":"$2}'|xargs docker rmi