Docker_學習筆記系列之鏡像

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-hub

docker push sunwen@163.com/access-flow:20201001_v1docker push 192.168.0.100:5000/access-flow:20201001_v1

相關文章
相關標籤/搜索