1. 程式人生 > 實用技巧 >shell 從一個git 目錄裡面為每一個modified檔案生成diff檔案並且checkout為原來檔案重新命名為.old【轉】

shell 從一個git 目錄裡面為每一個modified檔案生成diff檔案並且checkout為原來檔案重新命名為.old【轉】

Docker

docker是容器化管理專案釋出環境的方案

為什麼使用Docker?(優點)

  • 1.簡化專案釋出步驟
  • 2.不同專案環境相互獨立
  • 3.不需要額外安裝其他基礎庫
  • 4.相容性好,跨平臺

Docker的目的

  • 集裝箱:變革了人類整個生產流程,讓貨物全世界流通
  • Docker:變革了IT領域的軟體交付方式,讓IT之間鴻溝消失

目標:簡化部署流程,提高生產力


Docker常用場景:

  • 構建DevOps流程,實現運維的自動化
  • 企業私有的PAAS平臺,降低開發成本,提升效率
  • 企業級AppStore,統一的後端系統分發平臺
  • 間歇式計算任務
  • 構建微服務架構

核心概念:

  • docker程序 docker daemon
  • 客戶端 docker client
  • Register docker遠端映象源
    • 官網:docker hub
    • 國內映象庫
  • image 本地映象
  • Containers 本地容器

docker 安裝軟體流程:docker pull 從遠端映象到本地映象,通過映象建立容器(執行的容器)

環境準備


  • 準備一臺伺服器或在Linux虛擬機器中安裝

  • 虛擬機器聯網

    • 聯網方式:僅主機(主機和虛擬機器之間可通訊),橋連線,NAT(NAT和橋網段不同)
    • IP地址介紹

Docker安裝

# 1.下載工具
sudo yum install -y yum-utils

# 2.配置yum docker官網倉庫
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# 3.安裝 等待
sudo yum install docker-ce docker-ce-cli containerd.io 

# 4.啟動
systemctl start 
docker systemctl enable docker

# 5. 測試
docker version  # 檢視版本
docker info    # 檢視執行資訊
docker run hello-world   # 執行測試映象

執行run之前,會自動檢查本地是否有該容器,如果沒有,自動pull遠端映象,build本地容器,再執行

# 其他指令
docker ps   # 檢視所有正在執行的容器
docker images   # 檢視

映象管理

docker 映象預設儲存docker hub 遠端映象庫中,可以配置國內映象

配置地址:

拉取映象:

docker pull 映象名:版本

# 獲取遠端redis5.0映象
docker pull redis:5.0
docker pull redis:latest  # 預設是最後一個版本
    
# 查詢本地映象
docker images

# 搜尋映象redis    search 映象名
docker search redis

# 刪除redis:latest映象(刪除映象前先刪容器)
docker rmi redis:latest
    

映象加速:

#使用騰訊雲dockerhub加速器適用於 Centos7 版本。
#修改 Docker 配置檔案
vi /etc/sysconfig/docker
OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'
systemctl restart docker

容器Container

容器是映象的一個執行例項

操作指令

# 建立
docker create -p 對外開放埠:容器內部軟體埠 --name 容器名 參考映象:映象版本
docker create -p 16379:6379 --name redis redis:5.0
        
# 執行容器
docker run -p 對外開放埠:容器內部軟體埠 --name 容器名 參考映象:映象版本
docker start 容器名或容器id

# 停止容器(2種)
docker stop 容器名或容器id
docker kill 容器名或容器id

# 檢視正在執行的容器列表
docker ps

# 檢視所有的本地容器
docker ps -a

# 刪除容器
docker rm 容器名或容器id
docker rm -f 容器名或容器id   # 刪除正在執行的容器
docker rm -f $(docker ps -aq)  # 刪除所有容器

# 進入容器
docker exec -it 容器名 /bin/bash
# 退出容器
exit  或 Ctrl+d

# 檢視容器執行日誌
docker logs -f 容器名  # -f表示實時日誌

Docker釋出django專案

檢視Docker安裝資訊

  • 檢視Docker版本,命令: docekr version
  • 檢視Docker執行資訊,命名 docker info
  • 檢測安裝是否正確,命令 docker run hello-world

新建django專案web01

下面的目錄結構是一個普通的django專案案例,專案名為web01,app名為product.

注意:專案根目錄建立了dockerfile,pip.conf, requirements.txt 三個檔案

  • 新增專案依賴
    首先我們需要把專案所依賴的包放到requirements.txt中:
PyMySQL==0.9.3
redis==3.2.1
request==2019.4.13
django==2.1.8
  • 編寫Dockerfile檔案
    這種映象建立方式會根據專案中提供的requirements.txt檔案自動pip安裝依賴包
FROM python:3.6.6
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY pip.conf /root/.pip/pip.conf
COPY requirements.txt /usr/src/app/
RUN pip install -r /usr/src/app/requirements.txt
RUN rm -rf /usr/src/app
COPY . /usr/src/app
CMD [ "python", "./manage.py", "runserver", "0.0.0.0:8000"]

說明:
FROM python3.6.6 指定Python版本
"0.0.0.0:8000" 指定開啟容器中8000埠,下面開啟容器就要對映到這個埠

  • pip.conf
    這裡是為了使用映象 pip install 相關依賴,速度快的起飛

  • requirements.txt

PyMySQL==0.9.3
redis==3.2.1
request==2019.4.13
django==2.1.8

沒有必要逐一寫依賴,使用如下命令可把本地虛擬環境中的所有包生成到專案中

pip freeze > requirements.txt
  • 專案上傳到雲伺服器(centos7)
    不用再自己手動建立虛擬環境,因為docker會自動去下載依賴.

  • 構建映象(預設從docker國外的遠端庫下載,速度很慢!一定先替換為國內的阿里軟體源! 替換步驟參考文章最後!)

# 注意後面的 . 不能省略
docker build -t my-django-web01:1.0 .
    
# 建立過程中會自動下載python3.6.6, 和所有依賴庫,而且速度非常快

  • 開啟容器
# 或者 http://120.79.197.130:8000(埠號隨意對映,但要注意開啟對應安全組)
docker run -it --rm -p 8000:8000 --name djweb01 my-django-web01:1.0