自己做網(wǎng)絡(luò)棋牌網(wǎng)站流程泉州seo報價
什么是Docker鏡像
Docker 鏡像類似于虛擬機鏡像,可以將它理解為一個只讀的模板。
- 一個鏡像可以包含一個基本的操作系統(tǒng)環(huán)境,里面僅安裝了 Apache 應(yīng)用程序(或 用戶需要的其他軟件) 可以把它稱為一個 Apache 鏡像。
- 鏡像是創(chuàng)建 Docker 容器的基礎(chǔ)。
- 通過版本管理和增量的文件系統(tǒng), Docker 提供了一套十分簡單的機制來創(chuàng)建和更新現(xiàn)有的鏡像,用戶甚至可以從網(wǎng)上下載一個已經(jīng)做好的應(yīng)用鏡像,并直接使用。
獲取鏡像
其中, NAME 是鏡像倉庫名稱(用來區(qū)分鏡像), TAG 是鏡像的標(biāo)簽(往往用來表示版本信息) 。 通常情況下, 描述 一 個鏡像需要包括 “ 名稱+標(biāo)簽 “ 信息。
?例如, 獲取一個 Ubuntu 18.04 系統(tǒng)的基礎(chǔ)鏡像可以使用如下的命令:
[root@openEuler-node1 ~]# docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
7c457f213c76: Pull complete
Digest: sha256:152dc042452c496007f07ca9127571cb9c29697f42acbfad72324b2bb2e43c98
Status: Downloaded newer image for ubuntu:18.04
如果沒有寫?“名稱+標(biāo)簽“ 信息中的標(biāo)簽,會默認(rèn)添加一個latest標(biāo)簽,表示這個倉庫中最新的鏡像
[root@openEuler-node1 ~]# docker pull ubuntu
Using default tag: latest #自動添加的一個標(biāo)簽,獲取最新的版本
latest: Pulling from library/ubuntu
bccd10f490ab: Pull complete
Digest: sha256:77906da86b60585ce12215807090eb327e7386c8fafb5402369e421f44eff17e
Status: Downloaded newer image for ubuntu:latest
[root@openEuler-node1 ~]# docker pull hub.c.163.com/public/centos:6.5
6.5: Pulling from public/centos
96057de2d572: Pull complete
a3ed95caeb02: Pull complete
8a1dcc3f76c2: Pull complete
8fe56c90e86a: Pull complete
43fc3558431f: Pull complete
5881bc109689: Pull complete
Digest: sha256:92fd18cda0cbf63bb4b5ffd0c073a9d689d5b202e3b491cbc74488fff1c37d11
Status: Downloaded newer image for hub.c.163.com/public/centos:6.5
查看鏡像
images命令列出鏡像
使用docker images或docker image ls 命令可以列出本地主機上已有鏡像的基本信息。
- ?REPOSITORY:來自于哪個倉庫
- TAG:鏡像的標(biāo)簽信息
- IMAGE ID:鏡像的ID(唯一標(biāo)識鏡像)
?images子命令主要支持如下選項:
docker tag ubuntu:latest myubuntu:latest
?使用inspect命令查看詳細(xì)信息
[root@openEuler-node1 ~]# docker inspect ubuntu:18.04
[root@openEuler-node1 ~]# docker inspect -f {{".Architecture"}} ubuntu:18.04
amd64
搜索鏡像
[root@openEuler-node1 ~]# docker search busybox
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
busybox Busybox base image. 3223 [OK]
radial/busyboxplus Full-chain, Internet enabled, busybox made f… 56 [OK]
yauritux/busybox-curl Busybox with CURL 25
arm32v7/busybox Busybox base image. 10
arm64v8/busybox Busybox base image. 8
odise/busybox-curl 4 [OK]
s390x/busybox Busybox base image. 3
.....
?
?刪除和清理鏡像
刪除就rm? -f參數(shù)是強制刪除,可以基于ID或者標(biāo)簽刪除
docker rmi busybox:latest
- -a, -all: 刪除所有無用鏡像, 不光是臨時鏡像;
- -filter filter: 只清理符合給定過濾器的鏡像;
- -f, -force: 強制刪除鏡像, 而不進行提示確認(rèn)。
創(chuàng)建鏡像
1基于已有容器創(chuàng)建
該方法主要是使用 docker [container] commit?命令
演示:
[root@openEuler-node1 ~]# docker run -it ubuntu:18.04 bash
root@35b863d7caf6:/# touch test
root@35b863d7caf6:/# exit
此時容器與原鏡像就不一致了,可以用commit來提交一個新的鏡像
[root@openEuler-node1 ~]# docker commit -m "Add a new file" -a "FYS" 35b863d7caf6 test:0.1
sha256:e2c7a68ee5c90d3ae55b095ca7dc8ee4a9ca1a54e9722d6ef4b98c68d1c5e4cf
[root@openEuler-node1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test 0.1 e2c7a68ee5c9 23 seconds ago 63.2MB
2基于本地模板導(dǎo)入
[root@openEuler-node1 ~]# cat ubuntu-18.04-x86_64-minimal.tar.gz I docker import - ubuntu:lB.04
3基于Dockefile創(chuàng)建
[root@openEuler-node1 ~]# vim dockerfile
FROM debian:stretch-slim
LABEL version="1.0" maintainer "docker user <docker user@github>"
RUN apt-get update && \apt-get install-y python3 && \ apt-get clean && \rm rf /var/lib/apt/lists/*
[root@openEuler-node1 ~]# docker build -t python:3 .
FROM: ? 基礎(chǔ)鏡像,當(dāng)前新鏡像是基于哪個鏡像的
MAINTAINER: 鏡像維護者的姓名和郵箱地址
RUN: ? ?容器構(gòu)建時需要運行的命令,如果在容器運行時需要運行其他命令,使用run指定
EXPOSE: 容器對外暴露的端口,mysql:3306、redis:6379
WORKDIR:創(chuàng)建容器后,進入容器使用pwd指令落腳點的目錄,沒有指定就是/,如centos是/,redis是/data
ENV: ? ?用來構(gòu)建鏡像的過程中設(shè)置環(huán)境變量,"ENV 鍵 值"。 相當(dāng)于成員變量
? ? ? ? ?如:ENV MY_PATH /usr/mytest ? ?這個環(huán)境變量可以在后續(xù)的任何RUN指令中使用;也可以在其它指令中直接使用這些環(huán)境變量,? ? ??
ADD: ? ?將宿主機目錄下的文件拷貝進鏡像且ADD命令會自動處理URL和解壓tar壓縮包。 ADD = COPY+解壓縮
COPY: ? 類似ADD,拷貝文件和目錄到鏡像中。將從構(gòu)建上下文目錄中 <源路徑> 的文件/目錄復(fù)制到新的一層的鏡像內(nèi)的 <目標(biāo)路徑> 位置? ? ? ?
VOLUME: 容器數(shù)據(jù)卷,用來數(shù)據(jù)保存和持久化工作
CMD: ? ?指定一個容器啟動時需要運行的命令。DockerFile 中可以有多個 CMD 指令,但只有最后一個生效,CMD 會被 docker run 之后的參數(shù)替換
? ? ? ? ?也就是人工添加或文件中指定的CMD參數(shù)會把DockerFile里面的參數(shù)覆蓋,只會有最后一個生效。.其中 使用 -f 命令可以指定dockerfile的路徑。
?
存出和載入鏡像
1存出鏡像
?
[root@openEuler-node1 ~]# docker save -o ubuntu_18.04.tar ubuntu:18.04
[root@openEuler-node1 ~]# ll
總用量 64012
-rw-------. 1 root root 974 2月 19 16:15 anaconda-ks.cfg
-rw-r--r-- 1 root root 205 3月 11 16:47 dockerfile
-rw------- 1 root root 65539072 3月 11 16:54 ubuntu_18.04.tar
?2載入鏡像
[root@openEuler-node1 ~]# docker load < ubuntu_18.04.tar
[root@openEuler-node1 ~]# docker load -i ubuntu_18.04.tar
?上傳鏡像
[root@openEuler-node1 ~]# docker push user/test:latest