Docker 新建映象

2021-08-20 03:15:18 字數 3250 閱讀 5840

可以使用的命令

docker import
sudo cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:14.0
使用dockerfile檔案

一般的,dockerfile 分為四部分:基礎映象資訊、維護者資訊、映象操作指令和容器啟動時執行指令。

#this dockerfile uses the ubuntu image

#version 2 - edition 1

#author: docker_user

#command format: instruction [arguments / command] ..

# base image to use, this must be set as the first line

from ubuntu

# maintainer: docker_user (@docker_user)

maintainer docker_user [email protected]

# commands to update the image

run echo "deb raring main universe" >> /etc/apt/sources.list

run apt-get update && apt-get install -y nginx

run echo "\ndaemon off;" >> /etc/nginx/nginx.conf

# commands when creating a new container

cmd /usr/sbin/nginx

一開始必須指明所基於的映象名稱,接下來推薦說明維護者資訊。

後面則是映象操作指令,例如 run 指令, run 指令將對映象執行跟隨的命令。每執行一條 run 指令,

映象新增新的一層,並提交。

最後是 cmd 指令,來指定執行容器時的操作命令

指令:指令的一般格式為 instruction arguments ,指令包括 from 、 maintainer 、 run 等。

from  格式為 from 或 from :。

第一條指令必須為 from 指令。並且,如果在同乙個dockerfile中建立多個映象時,可以使用多個 from指令(每個映象一次)。

maintainer  格式為 maintainer ,指定維護者資訊。

run  格式為 run 或 run ["executable", "param1", "param2"] 。

前者將在 shell 終端中執行命令,即 /bin/sh -c ;後者則使用 exec 執行。指定使用其它終端可以通過

第二種方式實現,例如 run ["/bin/bash", "-c", "echo hello"] 。

每條 run 指令將在當前映象基礎上執行指定命令,並提交為新的映象。當命令較長時可以使用 \ 來換行。

cmd  支援三種格式

cmd ["executable","param1","param2"] 使用 exec 執行,推薦方式;

cmd command param1 param2 在 /bin/sh 中執行,提供給需要互動的應用;

cmd ["param1","param2"] 提供給 entrypoint 的預設引數;

指定啟動容器時執行的命令,每個 dockerfile 只能有一條 cmd 命令。如果指定了多條命令,只有最後一條會被執行。

如果使用者啟動容器時候指定了執行的命令,則會覆蓋掉 cmd 指定的命令。

expose 格式為 expose [...] 。

告訴 docker 服務端容器暴露的埠號,供互聯系統使用。在啟動容器時需要通過 -p,docker 主機會自動

分配乙個埠**到指定的埠。

env 格式為 env 。 指定乙個環境變數,會被後續 run 指令使用,並在容器執行時保持。

env pg_major 9.3

env pg_version 9.3.4

run curl -sl | tar -xjc /usr/src/postgress && ...

env path /usr/local/postgres-$pg_major/bin:$path

add 格式為 add 。

該命令將複製指定的 到容器中的 。 其中 可以是dockerfile所在目錄的乙個相對路徑;也可以是乙個 url;還可以是乙個 tar 檔案(自動解壓為目錄)。

copy

格式為 copy 。

複製本地主機的 (為 dockerfile 所在目錄的相對路徑)到容器中的 。

當使用本地目錄為源目錄時,推薦使用 copy 。

entrypoint  配置容器啟動後執行的命令,並且不可被 docker run 提供的引數覆蓋。每個 dockerfile 中只能有乙個 entrypoint ,當指定多個時,只有最後乙個起效。

兩種格式:

entrypoint ["executable", "param1", "param2"]

entrypoint command param1 param2 (shell中執行)。

volume 建立乙個可以從本地主機或其他容器掛載的掛載點,一般用來存放資料庫和需要保持的資料等。

格式為 volume ["/data"] 。

user 指定執行容器時的使用者名稱或 uid,後續的 run 也會使用指定使用者。

格式為 user daemon 。

當服務不需要管理員許可權時,可以通過該命令指定執行使用者。並且可以在之前建立所需要的使用者,例

如: run groupadd -r postgres && useradd -r -g postgres postgres 。要臨時獲取管理員許可權可以

使用 gosu ,而不推薦 sudo 。

workdir 為後續的 run 、 cmd 、 entrypoint 指令配置工作目錄。可以使用多個 workdir 指令,後續命令如果引數是相對路徑,則會基於之前命令指定的路徑。

格式為 workdir /path/to/workdir 。

例如

workdir /a

workdir b

workdir c

run pwd

則最終路徑為 /a/b/c 。

編寫完成 dockerfile 之後,可以通過 docker build 命令來建立映象。

docker新建centos映象並配置遠端訪問

1.docker search centos 查詢官方映象 3.docker run idt centos bin bash 啟動映象 4.docker ps grep centos 檢視映象id 5.docker exec it 0400b38b215a bin bash 進入容器 6.安裝cen...

Docker學習 Docker映象

一 列出映象 命令 docker images optsions repositort a 標識列出所有 f 寫過濾條件 no trunc 不截斷id q 只顯示唯一id repository是倉庫名字 registry代表的是大庫 tag標籤名字 對應版本,id唯一標識 庫名字 標籤 對應乙個id...

redhat映象 三 docker映象

映象的結構 1.1 hello world映象為例 這個映象只列印了 hello world 1.2 base 映象 能提供基本作業系統的映象 特點 1 不依賴其他映象,從scratch開始構建 2 其他映象可以在base基礎上擴充套件 比如centos 為什麼大小只有200m?linux系統包括 ...