91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker鏡像、容器、倉庫三大概念的對應操作介紹

發布時間:2021-09-08 16:19:38 來源:億速云 閱讀:128 作者:chen 欄目:大數據

這篇文章主要介紹“Docker鏡像、容器、倉庫三大概念的對應操作介紹”,在日常操作中,相信很多人在Docker鏡像、容器、倉庫三大概念的對應操作介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Docker鏡像、容器、倉庫三大概念的對應操作介紹”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!


鏡像

鏡像是Docker運行容器的前提

獲取鏡像

docker pull NAME[:TAG] // 不指定TAG,默認選擇latest標簽

運行鏡像

docekr run -t -i ubuntu /bin/bash

查看鏡像信息

docker images
  • 添加鏡像標簽

docker tag ubuntu:latest my/ubuntu:latest
  • 查看鏡像詳細信息

docker inspect 鏡像id
docker inspect -f {{".Architecture"}} id  // 查詢某一項內容

搜尋鏡像

docker search TERM
--automated=false 僅展示自動創建的鏡像
--no-trunc=false 輸出信息不截斷顯示
-s=0 僅顯示評價為指定星級以上的鏡像

刪除鏡像

docker rmi IMAGE[IMAGE...]  其中IMAGE可以為標簽或者id
  • 刪除正在運行的鏡像

docker rmi -f ubuntu 強制刪除(不建議)
推薦:1. 刪除容器;2. 再用id刪除鏡像
docker rm id  
docker rmi ubuntu

創建鏡像

  • 基于已有鏡像創建

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
選項包括:
-a,--author="" 作者信息
-m,--message="" 提交信息
-p,--pause=true 提交時暫停容器運行

下面是一個展示:

$ winpty docker run -ti ubuntu bash
root@39b31ce63c14:/# touch test
root@39b31ce63c14:/# exit
# 查看容器id
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
39b31ce63c14        ubuntu              "bash"              12 minutes ago      Exited (0) 11 minutes ago                       friendly_chebyshev

$ docker commit -m "added a new file" -a "coderluo" 39b test:coderluo
sha256:489150941c65c552268ddacd10d9fe05c01e30c8c3bd111e4217d727e8f724c4
  • 基于本地模板導入

可以直接從一個操作系統模板文件導入一個鏡像,推薦使用OpenVZ提供的模板來創建。下載地址為:

https://wiki.openvz.org/Download/template/precreated

比如我下載了一個ubuntu,可以使用如下命令導入:

[root@izwz909ewdz83smewux7a7z ~]# cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.04
sha256:57a7c0bb864c4185d5d9d6eb6af24820595482b9df956adec5fde8d16aa9cb7c
[root@izwz909ewdz83smewux7a7z ~]# docker images
  • 基于Dockerfile創建

存出和載入鏡像

可以使用 docker save 和 docker load 命令來存出和載入鏡像

存出鏡像
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
myubuntu            coderluo            489150941c65        About an hour ago   64.2MB
ubuntu              latest              a2a15febcdf3        43 hours ago        64.2MB
ubuntu              14.04               271ca7812183        3 months ago        188MB
chong@L MINGW64 ~
$ docker save -o myubuntu_14.04.tar myubuntu:coderluo
載入鏡像
chong@L MINGW64 ~
$ docker load < myubuntu_14.04.tar

上傳鏡像

docker push NAME[:TAG]

容器

容器就是鏡像的一個運行實例,它帶有額外的可寫文件層

創建容器

新建容器

使用 docker create 創建容器后市處于停止狀態,可以使用 docker start 啟動

docker create -it ubuntu:latest
新建并啟動容器
root@ubuntu_server:/home/coderluo# docker run ubuntu /bin/echo 'i am coderluo'
i am coderluo

等價于先 docker create 然后 docker start命令

docker run 需要執行的動作:

  1. 檢查本地是否有對應的鏡像,不存在就從共有倉庫下載;

  2. 利用鏡像創建并啟動一個容器;

  3. 分配一個文件系統,并在只讀的鏡像層外面掛載一層可讀寫層;

  4. 從宿主機配置的網橋接口中橋接一個虛擬接口到容器中;

  5. 分配一個ip給容器;

  6. 執行用戶指定的應用程序;

  7. 執行完畢后容器關閉;

接下來,我們打開一個bash終端,允許用戶交互:

docker run -ti ubuntu bash

-t : 選項讓Docker分配一個偽終端并綁定到容器的標準輸入

-i : 讓容器的標準輸入保持打開

使用 exit 可以退出容器,退出后該容器就處于終止狀態,因為對應Docker容器來說,當運行的應用退出后,容器也就沒有運行的必要了;

守護態運行

比較常見的是需要Docker容器在后臺以守護態 形式運行。 可以通過添加 -d 參數來實現:

$ docker run -d ubuntu sh -c "while true; do echo hello world; sleep 1; done"
caedc06b26723ec1aff794a053835d2b0b603702bea8a5bb3a39e97b0adf5654

$ docker logs cae
hello world
hello world
hello world
hello world
hello world
hello world

終止容器

docker stop [-t|--time[=10]]

它首先會向容器發送SIGTERM信號,等待一段時間后(默認10s)。再發送SIGKILL信號終止容器。

注意: docker kill 會直接發送SIGKILL 來強行終止容器。

$ docker stop cae
cae

當Docker容器中運行的應用終結時,容器也自動終止。例如上面開啟的終端容器,通過exit退出終端后,創建的容器也會終止。

可以使用 docekr ps -a -q 所有狀態的容器ID信息。

$ docker ps -a -q
90bcf718ad13
caedc06b2672
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
caedc06b2672        ubuntu              "sh -c 'while true; …"   17 minutes ago      Up About a minute                       epic_swartz
$ docker restart cae
cae
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
caedc06b2672        ubuntu              "sh -c 'while true; …"   18 minutes ago      Up 8 seconds                            epic_swartz

進入容器

當容器后臺啟動,用戶無法進入容器中,如果需要進入容器進行操作,則可以使用下面方法:

attach命令
$ docker run -idt ubuntu
b9953944f4cc4a17d09bba846d40eea25523098d188d44484f814132e3a04ae7
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b9953944f4cc        ubuntu              "/bin/bash"         7 seconds ago       Up 5 seconds                            laughing_chatterjee
$ docker attach laughing_chatterjee
root@b9953944f4cc:/#

缺點:當多個窗口同時attach到同一個容器中,所有窗口同步顯示,一個阻塞則全部阻塞。

exec

Docker 1.3 版本起引入一個可以直接在容器內執行命令的工具 exec。

進入之前創建的容器,并啟動一個bash:

$ docker exec -ti b99 bash
root@b9953944f4cc:/#
nsenter

第三方支持,感興趣可以自己google,個人感覺和exec差不多

刪除容器

docker rm [OPTIONS] CONTAINER [CONTAINER...]

  • -f,--force=false 強行終止并刪除一個運行中的容器

  • -l,--link=false 刪除容器的連接,但保留容器

  • -v,--volumes=false 刪除容器掛載的數據卷

$ docker rm 90b
90b

$ docker rm b99
Error response from daemon: You cannot remove a running container b9953944f4cc4a17d09bba846d40eea25523098d188d44484f814132e3a04ae7. Stop the container before attemptin
g removal or force remove

chong@L MINGW64 ~
$ docker rm -f b99
b99

導入和導出容器

導出容器
docker export CONTAINER
docker export cae > test_for_run.tar

可以將導出的文件傳輸到其他機器上,直接通過導入命令實現容器遷移。

導入容器

導出的文件可以使用 docker import 命令導入,成為鏡像。

$ cat Desktop/test_for_run.tar | docker import - test/ubuntu:v1.0                                                       sha256:aa9dd6a88eb02d192c0574e1e2df171d0ec686a21048cba9a70fcd9ce3ba7d76
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test/ubuntu         v1.0                aa9dd6a88eb0        11 seconds ago      64.2MB

這里和前面鏡像模塊的 docker load 載入鏡像的區別是:

docker import 用來導入一個容器快照到本地鏡像庫,會丟棄所有的歷史記錄和元數據信息(即僅保存容器當時的快照狀態),而 docker load 命令載入鏡像文件會保存完成的記錄,體積也要大。而且容器快照導入可以重新制定標簽等元數據信息。

倉庫

倉庫是集中存放鏡像的地方

很多人容易搞混倉庫和注冊服務器。這里說明下,注冊服務器和倉庫的區別。

注冊服務器是存放倉庫的地方,每個服務器上可以有多個倉庫,而每個倉庫下面有多個鏡像,比如ubuntu是一個倉庫,下面有很多不同版本的鏡像。他所在的服務器就是注冊服務器。

創建和使用私有倉庫

使用registry鏡像創建私有倉庫

可以使用官方提供的registry 鏡像 簡單搭建一套本地私有倉庫環境:

docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry

參數說明:

  • -d,后臺運行

  • -p,端口映射

  • -v,將宿主機的/opt/data/registry 綁定到 /var/lib/registry, 來實現數據存放到本地路徑,默認registry容器中存放鏡像文件的目錄/var/lib/registry

運行后測試下我們私有倉庫中的所有鏡像:

$ curl http://倉庫宿主機ip:5000/v2/_catalog
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    20  100    20    0     0     20      0  0:00:01 --:--:--  0:00:01   160{"repositories":[]}

現在是空的,因為才剛運行,里面沒有任何鏡像內容。

管理私有倉庫鏡像

在一臺測試機上(非倉庫機)查看已有鏡像,如果當前沒有鏡像 使用 docker pull 下載即可;

  1. 為鏡像打標簽

    格式為: docker tag IMAGE[:TAG] [REGISTRYHOST/] [USERNAME/] NAME[:TAG]

docker tag ubuntu:latest 192.168.137.200:5000/ubuntu:v1
$ docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
192.168.137.200:5000/ubuntu   v1                  a2a15febcdf3        3 days ago          64.2MB

192.168.137.200:5000 為私有鏡像注冊服務器的地址和端口

  1. 上傳到鏡像服務器

$ docker push 192.168.137.200:5000/ubuntu
The push refers to repository [192.168.137.200:5000/ubuntu]
122be11ab4a2: Pushed
7beb13bce073: Pushed
f7eae43028b3: Pushed
6cebf3abed5f: Pushed
v1: digest: sha256:ca013ac5c09f9a9f6db8370c1b759a29fe997d64d6591e9a75b71748858f7da0 size: 1152
$ curl http://192.168.137.200:5000/v2/_catalog
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    28  100    28    0     0     28      0  0:00:01 --:--:--  0:00:01   198{"repositories":["ubuntu"]}

如上curl命令發現已經可以看到倉庫中的鏡像了。

  1. 測試下載鏡像

$ docker rmi -f 鏡像id  # 刪除本地鏡像
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

$ docker pull 192.168.137.200:5000/ubuntu:v1 #下載私有倉庫鏡像
v1: Pulling from ubuntu
35c102085707: Pull complete
251f5509d51d: Pull complete
8e829fe70a46: Pull complete
6001e1789921: Pull complete
Digest: sha256:ca013ac5c09f9a9f6db8370c1b759a29fe997d64d6591e9a75b71748858f7da0
Status: Downloaded newer image for 39.108.186.135:5000/ubuntu:v1
$ docker images # 查看本地鏡像
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
192.168.137.200:5000/ubuntu   v1                  a2a15febcdf3        3 days ago          64.2MB

列出所有鏡像:

$ curl 39.108.186.135:5000/v2/_catalog
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    28  100    28    0     0     28      0  0:00:01 --:--:--  0:00:01   254{"repositories":["ubuntu"]}

某個鏡像倉庫中的所有tag:

$ curl http://39.108.186.135:5000/v2/ubuntu/tags/list
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    32  100    32    0     0     32      0  0:00:01 --:--:--  0:00:01   128{"name":"ubuntu","tags":["v1"]}

到此,關于“Docker鏡像、容器、倉庫三大概念的對應操作介紹”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆林| 清丰县| 柏乡县| 清涧县| 苗栗县| 屏东市| 蒲城县| 连州市| 巴中市| 青阳县| 青铜峡市| 西平县| 广丰县| 嘉义市| 黄龙县| 永定县| 古浪县| 龙井市| 固阳县| 泉州市| 红安县| 江油市| 麦盖提县| 神池县| 五大连池市| 桂东县| 田东县| 金沙县| 阳西县| 台江县| 金川县| 高要市| 湟中县| 扶沟县| 邮箱| 邳州市| 大洼县| 美姑县| 贞丰县| 若羌县| 禹州市|