Docker攻略:打造一勞永逸的隨身開發環境@.@

前言

每次換電腦安裝各類開發包,electron打包,網絡緣由各類下載不到依賴,應用部署困難?那就看看這篇攻略,打造一勞永逸的隨身開發環境吧前端

Docker安裝

Docker基礎

images

  • docekr pull [images] #拉取鏡像
  • docekr imgaes #查看全部鏡像
  • docker rmi [imageID] #刪除指定鏡像
  • docker rmi -f \$(docker images -aq) #!小技巧刪除全部鏡像

container

  • docekr ps #查看運行容器
    • -a 列出歷史
    • -n 列出最近
    • -q 只顯示編號
  • docker rm [containerID] #刪除指定容器
  • docker rmi -f \$(docker ps -aq) #!小技巧刪除全部容器
  • docker start id #啓動容器
  • docker restart id #重啓容器
  • docker stop id #中止當前運行的容器
  • docker kill id #強制中止當前運行容器

network

  • bridge:橋接 docker(默認)
  • none:不配置網絡
  • host:主機模式 和宿主機共享網絡
  • container:容器網絡聯通(用的少!侷限性大)
  • 自定義網絡 create
    • docker network create --driver bridge --subnet 192.168.3.0/16 --gateway 192.168.3.1 mynet
  • 查看網絡列表
    • docker network ls
  • 刪除網絡
    • docker network rm ID

建立啓動容器

  • docekr run [參數] imagesID #建立一個容器並啓動node

    • -it 使用交互方式運行沒進入容器查看內容
    • -d 後臺運行
    • --name="Name" 容器名稱 區分容器
  • 端口映射:將容器服務端口映射到主機端口linux

    • -p [主機端口]:[容器端口]
    • -P 隨機端口
  • 數據卷:主機與容器數據共享git

    • -v [容器路徑] 匿名掛載
    • -v [主機路徑]:[容器路徑] 具名掛載
  • 網絡:選擇網絡模式github

    • -net [name]
  • 實例:docker run -itd -p 9000:9000 --name demo -v /var/run/docker.sock:/var/run/docker.sock -v /Users/luofei/learn/docker_file/portainer/data:/data docker.io/portainer/portainer /bin/bashweb

查看容器的基本信息

docker inspect 容器iddocker

查看容器日誌

docker logs 容器idshell

從容器拷貝到本機

  • 'docker cp 本機路徑 容器id:文件路徑 //主機內容拷貝到容器'
  • 'docker cp 容器id:文件路徑 本機路徑 //容器拷貝內容到主機'

進入一個容器

  • docker exec -it [container] /bin/bash 在已運行的容器中執行命令,不建立和啓動新的容器,退出shell不會致使容器中止運行
  • docker attach [container] 本機的輸入直接輸到容器中,容器的輸出會直接顯示在本機的屏幕上,若是退出容器的shell,容器會中止運行

退出容器

  • exit 直接退出
  • Ctrl + p + q 退出不中止

製做一個鏡像

docker commit -m="提交的描述信息" -a="做者" 容器 id 目標鏡像名:[TAG]npm

DockerFile

  • FROM:這個鏡像的媽媽是誰(基礎鏡像)
  • MAINTAINER:這個鏡像是誰寫的(維護者的信息)
  • RUN:構建鏡像須要運行的命令
  • ADD:步驟:copu 文件,會自動解壓
  • WORKDIR:設置當前工做目錄
  • VOLUME:設置券,掛載主機目錄
  • EXPOSE: 暴露端口
  • CMD:指定這個容器啓動的時候要運行的命令 只有最後一個會生效,可被替代
  • ENTRYPOINT:指定這個容器啓動的時候要運行的命令,能夠追加命令
  • ONBUILD:當構建一個被繼承 DockerFile 這個時候就會運行 ONBUILD 的命令,觸發指令
  • COPY:相似 ADD 將咱們的文件拷貝到鏡像中
  • ENV:構建鏡像的時候設置環境變量

發佈鏡像

Docker hub

  • docker login 登陸
  • docker tag [imageID] [message]鏡像標籤
  • docker push [image]上傳鏡像

阿里雲

  • 登陸阿里雲ubuntu

  • 進入容器鏡像服務

  • 建立命名空間

  • 建立鏡像倉庫

    $ sudo docker login --username=username registry.cn-hangzhou.aliyuncs.com
    $ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/jackfly/jackfly:[鏡像版本號]
    $ sudo docker push registry.cn-hangzhou.aliyuncs.com/jackfly/jackfly:[鏡像版本號]
    複製代碼

製做專屬系統鏡像

缺什麼補什麼,做爲前端下面這些已經夠用了。

  • 選擇底包ubuntu16.04(看我的喜愛)
  • net-tools
  • ssh服務 (經過shell工具鏈接docker容器內)
  • node:v12.18.1
  • npm:6.14.5
  • pm2:4.4.0
  • git:2.7.4
  • zsh:5.1.1
  • zsh_plugs:(git,zsh-autosuggestions, zsh-syntax-highlighting)
  • Nginx

dockerfile 實例

dockerfile 在github上須要的本身拿呀:github.com/JackFlyL/do…

生成鏡像

docker build -f dockerfile -t [imageName] .
複製代碼

注意!!!後面那個 "." 了沒有必定要加上!

鏡像使用

docker run -itd --name mywork -v /Users/jackfly/docker:/home/work -p 6555:22 -p 8080:80 mywork 
複製代碼
  • 使用oh-my-zsh,這東西真是愛不釋手啊。
docker exec -it mywork /bin/zsh
複製代碼
  • shell鏈接docker容器 run的時候我們映射了兩個端口,22是ssh服務的端口,那麼經過主機映射的6555就能夠鏈接到docker內部了。默認密碼是:root

鏈接成功!這就是你的專屬服務器,想怎麼造怎麼造,比docker數據卷共享更自由。

關於應用部署

web網頁

  • Nginx 代理,映射端口到主機,經過主機IP:映射端口訪問
  • node.js 啓動 pm2進程守護 映射端口到主機,經過主機IP:映射端口訪問

Electron應用

打包生成APP 經過數據連通 共享數據到主機 直接使用

docker run -itd -v /home/data:/home/AlectronApps mywork
複製代碼

總結

至此一個隨身的開發環境就搞定了,即便你到任何系統任何電腦 只要支持docker 就能夠拉取鏡像還原本身的工做狀態,並且容錯率高,重裝系統只須要從新run一下。你能夠把本身的項目放入鏡像中,不斷完善不斷的commit 更新鏡像。 基礎鏡像的dockerfile放到了github,須要的同窗本身取。鏡像我也上傳到了阿里雲,不想折騰的懶人們也直接用哈!

相關文章
相關標籤/搜索