Docker鏡像是一個只讀的模板,它是由一層層文件構成的,由一組文件組成,或者多組文件系統聯合組成,每當修改鏡像就會生成一個新的層文件python
1.查看鏡像nginx
docker images 參數 -q 只顯示鏡像id -q 只顯示id -a 全部 -f 過濾條件 如:只顯示沒有tag的中間層鏡像<none>:<none> dangling=true -no trunk 不截斷id # 如刪除鏡像名爲ubuntu的全部鏡像 docker rmi $(docker image -q ubuntu) # 另外一種查看方式, 直接docker image能夠查看該命令的幫助 docker image ls
2.經過--filter 或 -f 對鏡像列表輸出內容進行過濾docker
docker image ls --filter 過濾條件 -- Docker 目前支持以下的過濾器。 dangling:能夠指定 true 或者 false,僅返回懸虛鏡像(true),或者非懸虛鏡像(false)。 before:須要鏡像名稱或者 ID 做爲參數,返回在以前被建立的所有鏡像。 since:與 before 相似,不過返回的是指定鏡像以後建立的所有鏡像。 label:根據標註(label)的名稱或者值,對鏡像進行過濾。docker image ls命令輸出中不顯示標註內容。 其餘的過濾方式使用reference 以下: 過濾標籤爲latest的鏡像 docker image ls --filter reference="*.latest"
3.經過--format參數經過Go模板對輸出內容進行格式化數據庫
# 返回 Docker 主機上鏡像的大小屬性 docker images ls --format "{{.Size}}" # 只顯示倉庫、標籤、大小信息,後面的命令是格式化顯示 docker image ls --format "{{.Repository}}: {{.Tag}}: {{.Size}}"|column -t
4.查找某個鏡像ubuntu
docker search 倉庫名稱【包含了docker Id,或非官方倉庫的組織名稱】 --filter "is-official=true" 僅僅返回官方鏡像 --limit 返回的行數 最多100行,不加該參數默認docker返回25行
5.查看某個鏡像的詳細信息vim
docker image inspect 鏡像名或鏡像id
6.查看某個鏡像的構建歷史過程centos
docker history 鏡像名或鏡像id
7.拉取鏡像【從docker registry 即docker hub獲取】緩存
# 注:如不加tag,默認拉取最後一版及tag爲latest,下面這種是默認從倉庫拉取鏡像 docker image pull [docker registry地址(域名:端口)] 鏡像名:標籤 # 如需從非Docker Hub 官方倉庫拉取,須要帶上私有倉庫名或命名空間 docker image pull username/repository_name:image_name # 經過摘要拉取鏡像 查看本地鏡像的摘要 docker image ls --digests docker image pull image_name@摘要信息
8.刪除鏡像bash
docker image rm 鏡像名或鏡像id docker rmi 鏡像名或鏡像id -f 強制刪除..
9.導出鏡像到本地文件網絡
docker save 鏡像名or鏡像id > 本地存放位置/名稱 如:docker save centos > /opt/centos.tar.gz
10.將本地文件從新導入到鏡像倉庫
docker load < 本地存放位置/名稱
11.docker bulid 命令用於使用 Dockerfile 建立鏡像
docker build [OPTIONS] PATH | URL | - --build-arg=[] :設置鏡像建立時的變量; --cpu-shares :設置 cpu 使用權重; --cpu-period :限制 CPU CFS週期; --cpu-quota :限制 CPU CFS配額; --cpuset-cpus :指定使用的CPU id; --cpuset-mems :指定使用的內存 id; --disable-content-trust :忽略校驗,默認開啓; -f :指定要使用的Dockerfile路徑; --force-rm :設置鏡像過程當中刪除中間容器; --isolation :使用容器隔離技術; --label=[] :設置鏡像使用的元數據; -m :設置內存最大值; --memory-swap :設置Swap的最大值爲內存+swap,"-1"表示不限swap; --no-cache :建立鏡像的過程不使用緩存; --pull :嘗試去更新鏡像的新版本; --quiet, -q :安靜模式,成功後只輸出鏡像 ID; --rm :設置鏡像成功後刪除中間容器; --shm-size :設置/dev/shm的大小,默認值是64M; --ulimit :Ulimit配置。 --tag, -t: 鏡像的名字及標籤,一般 name:tag 或者 name 格式;能夠在一次構建中爲一個鏡像設置多個標籤。 --network: 默認 default。在構建期間設置RUN指令的網絡模式
12經過修改已有鏡像構建新的鏡像
# 進入模板鏡像 docker run --name=test01 -it 鏡像id /bin/bash # 在鏡像中修改想要的內容,如安裝軟件等等 yum install -y vim # 退出鏡像 exit # 查看容器記錄,找到剛纔修改的容器id docker container ls -a # 提交修改的容器,從而建立新的鏡像 docker commit 容器id 倉庫名/鏡像名:標籤 docker commit 111111 192.168.0.100:5000/centos-vim:v1 # 查看新生成的鏡像 docker images
13,經過Dockerfile建立鏡像
# 1. Dockerfile文件,文件名不容許更改 # This is bulid a image of Python service by centos7 # FROM 基礎鏡像【每一個鏡像的構建都必須依賴基礎鏡像也解釋了鏡像的層級結構】 FROM centos7 # MAINTAINER 指定維護者信息 MAINTAINER 一個Python小白重構生活之路 # LABEL 鏡像的幫助信息,鏡像的一些說明信息 LABEL version='1.0' LABEL description='this is the first image for how to use dockerfile commad' # ENV 指定程序在容器中的環境變量 ENV PATH /usr/local/nginx/sbin:$PATH ENV DB_PUBKEY="11111222" # COPY 複製本地主機的路徑下的內容到容器中的路徑下 COPY ./code/ /app/python_app/ # WORKDIR 配置工做目錄,至關於cd,通常用於切換服務根目錄下,執行程序 WORKDIR /app/python_app/python_service_name_dir # RUN 運行命令,通常用於安裝系統或程序須要依賴的包 RUN yum install -y vim RUN pip install -i https://pypi.doubanio.com/simple/ requirement.txt # EXPOSE 聲明鏡像內服務所監聽的端口,容器映射端口,即您寫的服務裏開放的端口號 EXPOSE 6666 # CMD 指定容器啓動時執行的命令 CMD ["Python","test_main.py"] # 2. 構建鏡像 docker build --build-arg DB_PUBKEY=$DB_PUBKEY -t image_name:$(data +%Y%m%d)_v1 -f dockerfile的路徑 如:docker build -t access-flow:20201001_v1 -f . --build-arg=[] :設置鏡像建立時的變量;好比啓動oracle數據庫須要些環境變量 --tag, -t: 鏡像的名字及標籤,一般 name:tag 或者 name 格式;能夠在一次構建中爲一個鏡像設置多個標籤 -f :指定要使用的Dockerfile路徑 # 3. 打標籤,以docker registry的地址端口開頭 # docker-hub寫法 docker tag 倉庫名 用戶名/倉庫名 docker tag sun/access-flow:20201001_v1 sunwen@163.com/access-flow:20201001_v1 # 私有倉庫寫法 docker tag 鏡像名 倉庫名/鏡像名 docker tag access-flow:20201001_v1 192.168.0.100:5000/access-flow:20201001_v1
docker push sunwen@163.com/access-flow:20201001_v1docker push 192.168.0.100:5000/access-flow:20201001_v1