先梳理下前端的幾個應用場景
1、為團隊制定統一開發環境,新人入職或系統重裝后能快速搭建起開發環境。
比如前端開發通常要安裝pythone、nodejs以及node-sass、webpack等,能通過Dockerfile維護管理鏡像給到團隊成員使用。
研究深度學習領域的同學比較清楚,搭建環境需要安裝配置各類工具,如Tensorflow、Keras、Anaconda、PyTorch、Flask、Jupyter,可以利用Docker快速搭建、管理和部署。
2、實驗性項目或者技術研究時需要安裝各種依賴和工具,公司內部電腦標裝后權限較低無法安裝和下載。
3、前后端項目大復雜時,項目依賴nodejs模塊較多且對平台依賴較強時,比如sharp.js、node-sass等需要編譯安裝,同時還需要使用mysql、redis等在開發部署時都較麻煩。
在開發時要啟動多個服務及端口,可使用docker-compose編排好服務就能一鍵啟動。如有新人加入直接使用相應的鏡像就能快速進行開發,使用Docker將非常方便。
一、MacOS Docker 安裝
1、使用 Homebrew 來安裝 Docker
$ brew cask install docker
2、手動下載 Docker for Mac.dmg安裝
如同 macOS 其它軟件一樣,安裝也非常簡單,雙擊下載的 .dmg 文件,然后將鯨魚圖標拖拽到 Application 文件夾即可。
下載地址: https://download.docker.com/mac/stable/Docker.dmg
二進制包
https://mirrors.aliyun.com/docker-ce/mac/static/stable/x86_64/
https://download.docker.com/mac/static/stable/x86_64/
解壓后
ln -s /otp/docker19.0/docker /usr/local/bin/docker # 全局運行docker
$ sudo docker -d & # 啟動docker
$ killall docker # 關閉docker
3、安裝完成后,運行下面的命令,驗證是否安裝成功
$ docker version
# 或者
$ docker info
Mac命令行啟動docker服務
launchctl 查看 docker server
launchctl list | grep docker
關閉和啟動它
launchctl stop com.docker.docker.15648 && launchctl start com.docker.docker.15648
二、Mac下的配置修改
vi ~/.docker/daemon.json
{
"debug": true,
"experimental": true,
"registry-mirrors": ["https://u6krpdpq.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com"],
"insecure-registries": ["192.168.1.2:5000"]
}
三、常用命令
1、查詢本地容器和鏡像
docker ps -a # 顯示所有的容器
docker image ls # 列出本地鏡像
docker search alplin # 搜索alplin相關鏡像
2、獲取鏡像
docker pull [imagename]:[tag] # 拉取鏡像
docker pull alpine:latest
docker pull centos:centos7.7.1908
docker pull hub.c.163.com/library/alpine:latest # 從國內163源站拉取鏡像
3、創建容器
docker create --name alpine:latest
docker run --name centos7 -itd centos:centos7.7.1908 /bin/bash # 創建並運行容器
docker run --name myalpine -itd alpine:latest /bin/sh
docker run --name centos72 -itd -v `pwd`:/bankapp/app -w /bankapp/app -p 8000:8000 --privileged=true centos7:nodejs10 /bin/bash
4、創建容器
docker create --name alpine:latest
5、刪除容器
docker rm containerID
docker image rm IMAGEID # 刪除本地鏡像
6、啟動容器
docker start containerID
7、進入容器
docker attach containerID
8、停止容器運行
docker stop containerID
9、從現有容器導出導入新的鏡像
docker commit -a "webplus" -m "centos7 nodejs_10.18.0 " containerID centos:centos7_node10 # 提交容器的修改
docker export -o centos7_node10_`date +%Y%m%d`.tar containerID # 導出新的鏡像.tar
docker import ./centos_nodejs-20200402.tar centos:centos7_nodejs # 導入存檔鏡像
10、從現在鏡像保存和導入鏡像
docker save -o my_ubuntu_v3.tar centos:centos7_nodejs # 將指定鏡像保存成 tar 歸檔文件可進行分發
docker load -ip my_ubuntu_v3.tar # 導入使用 docker save 命令導出的鏡像
四、本地搭建私庫
1、拉取registry鏡像
docker pull registry
2.創建宿主機儲存目錄【/opt/data/registry】:
mkdir -p /opt/data/registry
docker create -d -p 5000:5000 -v /opt/data/registry:/tmp/registry --privileged=true --restart=always --name registry
3、也可直接拉取鏡像並新建容器, -p端口映射,-v本地庫目錄映射
docker run -d -p 5000:5000 -v /Users/apple/aaa/docker:/tmp/registry registry
docker run -d -p 5000:5000 -v /Users/apple/aaa/docker/registry:/tmp/registry --privileged=true --restart=always --name hub.c.163.com/library/registry:latest registry:latest
4、配置https權限支持,修改完需要重啟,有時候可能重啟失敗,可能是因docker檢查192.168.1.128:5000是否能訪問:
Mac vi ~/.docker/daemon.json
{
"insecure-registries":["192.168.1.128:5000"]
}
5、push到私有倉庫
docker tag centos:centos7_nodejs 192.168.1.128:5000/centos7_nodejs:v1 # 修改鏡像的tag
docker push 192.168.1.128:5000/nodejs10:1.0.0 # 推送鏡像到本地倉庫
參考文檔: