Docker打包映象的兩種方式
前言
Docker映象是一個特殊的檔案系統,既提供了執行時所需的程式、庫和資源,還提供了相應的配置引數,只是不包含動態資料。我們可以將任何我們的軟體產品打包成映象,以供伺服器能夠用Docker直接快速安裝並部署執行。
System:Linux(CentOS 7)
Docker Version:19.03.12
構建Image
通過Dockerfile
通過編寫Dockerfile檔案,Dockerfile示例如下:
FROM ubuntu:18.04
COPY . /app
RUN make /app
CMD python /app/app.py
每條指令建立一層:
FROM
從ubuntu:18.04
Docker映象建立一個圖層。COPY
從Docker客戶端的當前目錄新增檔案。RUN
通過make
構建您的應用程式。CMD
指定在容器中執行什麼命令。
執行映象生成容器時,可以在基礎層之上新增一個新的可寫層(“容器層”)。對執行中的容器所做的所有更改(例如寫入新檔案,修改現有檔案和刪除檔案)都將寫入這層薄的但是可寫的容器層。
然後執行命令docker build生成映象,如下
docker build -t myUbuntu:v1.0 .
通過docker commit
當我們覺得某個執行中的容器特別好用,就想把它保留起來,這時候我們可以通過docker build指令將這個執行中的容器構建成一個映象,然後在其他電腦上也可以使用了;
還有就是針對容器進行改造,通過把一個執行中的容器通過增刪改檔案或者安裝解除安裝一個程式改造成自己心儀的容器,然後通過命令列生成對應的映象檔案;
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS說明:
- -a :提交的映象作者;
- -c :使用Dockerfile指令來建立映象;
- -m :提交時的說明文字;
- -p :在commit時,將容器暫停。
映象的使用者許可權
這裡強調一個點,所有的映象在構建的時候如果在Dockerfile不指定uid,那麼執行成容器的時候都會預設生成使用者許可權為uid為 0,其實就是相當於root許可權。
就會出現你以普通使用者執行的一個掛載目錄的容器,它操作過的目錄,你在宿主機會無法操作的問題;
相關文章
- 兩種方式建立支援SSH服務的docker映象Docker
- Java(SpringBoot)專案打包(構建)成`Docker`映象的幾種方式JavaSpring BootDocker
- 兩種github action 打包.Net Core 專案docker映象推送到阿里雲映象倉庫GithubDocker阿里
- 兩種方式建立你自己的 Docker 基本映像Docker
- docker 打包映象推送至dockerhubDocker
- SpringBoot 構建 Docker 映象的最佳 3 種方式Spring BootDocker
- 在 NetBeans 中打包 Maven 專案的兩種方式BeanMaven
- docker - [15] springboot微服務打包docker映象DockerSpring Boot微服務
- IDEA如何用maven打包(介面和命令兩種方式)IdeaMaven
- webapi透過docker部署到Linux的兩種方式WebAPIDockerLinux
- SpringBoot 微服務打包 Docker 映象Spring Boot微服務Docker
- ChatTTS的兩種使用方式TTS
- 使用docker buildx打包釋出多平臺映象DockerUI
- JS 垃圾回收的兩種方式JS
- sparkrdd轉dataframe的兩種方式Spark
- 提交Application的兩種方式APP
- 建立Session物件的兩種方式Session物件
- 如何打包Docker映象並推送到遠端倉庫Docker
- Docker容器進入的4種方式Docker
- kubernetes實戰篇之docker映象的打包與載入Docker
- zabbix agent 的兩種安裝方式
- HTTP代理的兩種連線方式HTTP
- redis的php驅動兩種方式RedisPHP
- JavaScript 函式的兩種宣告方式JavaScript函式
- RAC時間同步的兩種方式
- SSH綜合查詢的兩種方式
- easyUI 初始化的兩種方式UI
- 建立oracle dblink 的兩種方式Oracle
- 安裝aab包的兩種方式
- Oracle兩種備份方式Oracle
- 隱藏元素兩種方式
- BI系統打包Docker映象及容器化部署的具體實現Docker
- Native 工程整合Flutter 的兩種方式Flutter
- ubuntu建立使用者的兩種方式Ubuntu
- Java鍵盤錄入的兩種方式Java
- 兩種go傳送郵件的方式Go
- php 與 nginx 的兩種處理方式PHPNginx
- React元件方法的兩種定義方式React元件