Docker 映象製作方法
本文件介紹 Docker 映象製作的兩種方法,使用的系統是 7 |
Docker Image 的製作兩種方法
方法 1:docker commit #儲存 container 的當前狀態到 image 後,然後生成對應的 image 方法 2:docker build #使用 Dockerfile 檔案自動化製作 image
方法一:docker commit
建立一個安裝好 apache 工具的容器映象
[root@Docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 470671670cac 4 months ago 237MB [root@Docker ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@Docker ~]# docker run -it centos:latest /bin/bash [root@1b96e68a3cce /]# [root@1b96e68a3cce /]# yum -y install httpd #在 container 中安裝 apache 軟體包 [root@1b96e68a3cce /]# exit
檢視 images 列表
[root@Docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 470671670cac 4 months ago 237MB
根據容器當前狀態做一個 image 映象:建立一個安裝了 apache 工具的 centos 映象
語法: docker commit "container 的 ID" 或 "image_name"
檢視容器 ID
[root@Docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1b96e68a3cce centos:latest "/bin/bash" 3 minutes ago Exited (0) 2 minutes ago awesome_hypatia 607752360adf centos:latest "/bin/bash -c 'while…" 18 minutes ago Exited (137) 12 minutes ago brave_fermi 0a297ff99af8 centos:latest "/bin/bash" 22 minutes ago Exited (1) 20 minutes ago ecstatic_yonath efb4af688330 centos:latest "/bin/bash" 24 minutes ago Exited (0) 23 minutes ago epic_mcclintock [root@Docker ~]# docker commit 1b96e68a3cce centos:apache sha256:b8822ec8a7bbb325793e7908e355180be82a49481cff197661fb5d0da5872e88 [root@Docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos apache b8822ec8a7bb 9 seconds ago 280MB centos latest 470671670cac 4 months ago 237MB
使用新建立的 centos:apache 映象,生成一個容器例項
[root@Docker ~]# docker run -it centos:apache /bin/bash [root@e4c295d27581 /]# rpm -qa httpd httpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64
看到httpd軟體名稱說明基於 apache 映象的容器建立成功
方法二:透過:docker build 建立一個基於 centos 的 httpd web 伺服器映象
使用 docker build 建立映象時,需要使用 Dockerfile 檔案自動化製作 image 映象
Dockerfile 有點像原始碼編譯時./configure 後產生的 Makefile
1、建立工作目錄
[root@Docker ~]# mkdir /docker-build [root@Docker ~]# cd /docker-build [root@Docker docker-build]# touch Dockerfile [root@Docker docker-build]# ls Dockerfile 注: make 自動化編譯時需要 Makefile 檔案,自動化建立 docker 映象時,需要 Dockerfile
2、編輯 Dockerfile
Dockerfile 用來建立一個自定義的 image,包含了使用者挃定的軟體依賴等。 [root@Docker docker-build ]# vim Dockerfile FROM centos:latest MAINTAINERRUN yum -y install httpd ADD start.sh /usr/local/bin/start.sh ADD index.html /var/www/html/index.html CMD echo hello world
註釋
FROM centos:latest # FROM 基於哪個映象 MAINTAINER# MAINTAINER 映象建立者 RUN yum -y install httpd #RUN 安裝軟體用 ADD start.sh /usr/local/bin/start.sh ADD index.html /var/www/html/index.html # ADD 將檔案複製到新產生的映象的檔案系統對應的路徑。所有複製到新映象中的 檔案和資料夾許可權為 0755,uid 和 gid 為 0 CMD echo hello world #container 啟動時執行的命令或啟動服務,但是一個 Dockerfile 中只能有一條 CMD 命令,有多條則另執行最後一條 CMD
3、建立 start.sh
啟動 httpd 服務和 apache 預設首頁 index.html 檔案
[root@Docker docker-build ]# echo "#!/bin/bash" >> start.sh [root@Docker docker-build ]# echo "/usr/sbin/httpd -DFOREGROUND" >> start.sh 注:/usr/sbin/httpd -DFOREGROUND 相當於執行了 systemctl start httpd [root@Docker docker-build ]# chmod a+x start.sh 建立 index.html [root@Docker docker-build ]# echo "docker image build test from jaking" > index.html
4、使用命令 build 來建立新的 image
語法:docker build -t 父映象名:映象的 tag Dockerfile 檔案所在路徑
-t :表示 tag,映象名
例:使用命令 docker build 來建立新的 image,並命名為 centos:httpd
[root@Docker docker-build]# ls Dockerfile index.html start.sh [root@Docker docker-build]# docker build -t centos:httpd ./ # 注: ./ 表示當前目錄,另外你的當前目錄下要包含 Dockerfile Sending build context to Docker daemon 4.096kB Step 1/5 : FROM centos:latest ---> 470671670cac Step 2/5 : MAINTAINER---> Running in 0180810d2ab3 Removing intermediate container 0180810d2ab3 ---> 5b9af0184bcf Step 3/5 : RUN yum -y install httpd ---> Running in 8f5c114649ed CentOS-8 - AppStream 228 kB/s | 7.0 MB 00:31 CentOS-8 - Base 547 kB/s | 2.2 MB 00:04 CentOS-8 - Extras 431 B/s | 5.9 kB 00:14 Dependencies resolved. ================================================================================ Package Arch Version Repo Size ================================================================================ Installing: httpd x86_64 2.4.37-16.module_el8.1.0+256+ae790463 AppStream 1.7 M Installing dependencies: apr x86_64 1.6.3-9.el8 AppStream 125 k apr-util x86_64 1.6.1-6.el8 AppStream 105 k centos-logos-httpd noarch 80.5-2.el8 AppStream 24 k ...省略部分輸出資訊... Complete! Removing intermediate container 8f5c114649ed ---> 040b5f229962 Step 4/5 : ADD start.sh /usr/local/bin/start.sh ---> 11a106005031 Step 5/5 : ADD index.html /var/www/html/index.html ---> 85b4a3657ced Successfully built 85b4a3657ced Successfully tagged centos:httpd
檢視 images 列表
[root@Docker docker-build]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos httpd 85b4a3657ced 45 seconds ago 280MB centos apache b8822ec8a7bb 20 minutes ago 280MB centos latest 470671670cac 4 months ago 237MB # 注:docker 映象=應用/程式+庫
執行新生成的映象
[root@Docker docker-build]# docker run -it centos:httpd /bin/bash [root@1188a43a4585 /]# ls bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr [root@1188a43a4585 /]# rpm -qa httpd httpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64 [root@1188a43a4585 /]# exit exit [root@Docker docker-build]#
總結
以上就是 Docker 映象製作方法的介紹,希望能給大家帶來幫助。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2753625/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 製作Docker映象Docker
- Docker製作jdk映象DockerJDK
- YashanDB Docker映象製作Docker
- oracle製作docker映象OracleDocker
- Docker二所映象製作Docker
- docker 製作與使用 arcgisserver 映象DockerServer
- Docker如何製作映象-Dockerfile的使用Docker
- 伺服器:如何製作docker映象伺服器Docker
- 使用 Caddy 製作前端 Docker 映象前端Docker
- Docker 入門系列四:Dockerfile-映象製作Docker
- 製作 Python Docker 映象的最佳實踐PythonDocker
- docker製作自己的映象並上傳dockerhubDocker
- 無需依賴Docker環境製作映象Docker
- 使用Docker搭建WordPress部落格(三)nginx映象製作DockerNginx
- 自編譯製作docker版本的onlyoffice映象編譯Docker
- proxmox映象製作
- 製作KubeVirt映象
- docker決戰到底(五) 製作自己的Jenkins映象DockerJenkins
- 自己動手製作elasticsearch-head的Docker映象ElasticsearchDocker
- Docker從零開始製作基礎映象之CentosDockerCentOS
- docker映象瘦身方法Docker
- 【實踐】Docker for Windows 製作tomcat 映象並上傳至 docker 倉庫DockerWindowsTomcat
- Dockerfile映象的製作Docker
- Docker 必知必會3----使用自己製作的映象Docker
- docker初體驗:docker 自己定製映象Docker
- Docker 映象製作教程:針對不同語言的精簡策略Docker
- 自己動手製作elasticsearch的ik分詞器的Docker映象Elasticsearch分詞Docker
- 教你如何使用Docker製作Python環境連線Oracle映象DockerPythonOracle
- 製作一個龍芯舊世界的 dotnet sdk docker 映象Docker
- centos製作具備telnet和ping功能的docker映象CentOSDocker
- Docker Redis映象 主從複製DockerRedis
- MAXDOS V7.0 IMG 映象檔案 製作方法【Z】
- Docker & ASP.NET Core (2):定製Docker映象DockerASP.NET
- 體驗SpringBoot(2.3)應用製作Docker映象(官方方案)Spring BootDocker
- 詳解SpringBoot(2.3)應用製作Docker映象(官方方案)Spring BootDocker
- Docker映象製作實戰:設定時區和系統編碼Docker
- 修改docker映象源的方法Docker
- alpine 製作 PHP 環境映象PHP