日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Docker 入门系列(2)- Docker 镜像, 免 sudo 使用 docker 命令、获取查看、修改镜像标签、查找删除创建镜像、导入导出镜像

發(fā)布時間:2023/11/28 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker 入门系列(2)- Docker 镜像, 免 sudo 使用 docker 命令、获取查看、修改镜像标签、查找删除创建镜像、导入导出镜像 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. 免 sudo 使用 docker 命令

  • 如果還沒有 docker group 就添加一個
sudo groupadd docker
  • 將用戶加入該 group 內(nèi)
sudo gpasswd -a ${USER} docker
  • 重啟 docker 服務(wù)
sudo service docker restart
  • 切換當(dāng)前會話到新 group 或者重啟 X 會話
newgrp - docker

注意:最后一步是必須的,否則因?yàn)?groups 命令獲取到的是緩存的組信息,剛添加的組信息未能生效,所以 docker images 執(zhí)行時同樣有錯。

2. Docker 鏡像操作

Docker 運(yùn)行容器前需要本地存在對應(yīng)的鏡像,如果鏡像沒保存在本地,Docker 會嘗試先從默認(rèn)鏡像倉庫下載 https://hub.docker.com/,用戶也可以通過配置,使用自定義的鏡像倉庫。

1. 獲取鏡像

docker  pull NAME[:TAG]

其中,NAME 是鏡像倉庫的名稱(用來區(qū)分鏡像),TAG 是鏡像的標(biāo)簽 ( 往往用來表示版本信息) 。如果不顯式指定 TAG,則默認(rèn)會選擇 latest 標(biāo)簽,這會下載倉庫中最新版本的鏡像。

~/docker$ docker pull ubuntu:16.04
16.04: Pulling from library/ubuntu
7b8b6451c85f: Pull complete 
ab4d1096d9ba: Pull complete 
e6797d1788ac: Pull complete 
e25c5c290bde: Pull complete 
Digest: sha256:e547ecaba7d078800c358082088e6cc710c3affd1b975601792ec701c80cdd39
Status: Downloaded newer image for ubuntu:16.04

2. 查看鏡像

docker  images

列出本地主機(jī)上已有的鏡像,各個字段信息分別為來自于哪個倉庫(REPOSITORY)、鏡像的標(biāo)簽信息(TAG )、鏡像的唯一ID號(IMAGE ID)、創(chuàng)建時間(CREATED)、鏡像大小(SIZE)。

~/docker$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               a51debf7e1eb        2 weeks ago         116MB
hello-world         latest              4ab4c602aa5e        2 months ago        1.84kB

3. 修改本地鏡像標(biāo)簽

docker tag

為本地鏡像添加新的標(biāo)簽:

~/docker$ docker tag ubuntu:16.04 ubuntu:test
~/docker$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               a51debf7e1eb        2 weeks ago         116MB
ubuntu              test                a51debf7e1eb        2 weeks ago         116MB
hello-world         latest              4ab4c602aa5e        2 months ago        1.84kB

不同標(biāo)簽的鏡像 ID 完全一致,說明它們實(shí)際上指向了同一個鏡像文件,只是別名不同而已。

4. 查看鏡像詳細(xì)信息

docker inspect

docker inspect 命令可以獲取該鏡像的詳細(xì)信息,詳情如下:

~/docker$ docker inspect ubuntu
[]
Error: No such object: ubuntu
~/docker$ docker inspect ubuntu:16.04
[{"Id": "sha256:a51debf7e1eb2018400cef1e4b01f2e9f591f6c739de7b5d6c142f954f3715a7","RepoTags": ["ubuntu:16.04","ubuntu:test"],"RepoDigests": ["ubuntu@sha256:e547ecaba7d078800c358082088e6cc710c3affd1b975601792ec701c80cdd39"],"Parent": "","Comment": "","Created": "2018-11-19T21:23:53.455319926Z","Container": "f4879d05f303ba132b6cc82988306e44819b9d0872dc891d864374d3a9b51b08","ContainerConfig": {"Hostname": "f4879d05f303","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd": ["/bin/sh","-c","#(nop) ","CMD [\"/bin/bash\"]"],"ArgsEscaped": true,"Image": "sha256:d6ab6854552cda39995558786e1690e20092af93f8145294473ac62fd76c9b1b","Volumes": null,"WorkingDir": "","Entrypoint": null,"OnBuild": null,"Labels": {}},"DockerVersion": "17.06.2-ce","Author": "","Config": {"Hostname": "","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd": ["/bin/bash"],"ArgsEscaped": true,"Image": "sha256:d6ab6854552cda39995558786e1690e20092af93f8145294473ac62fd76c9b1b","Volumes": null,"WorkingDir": "","Entrypoint": null,"OnBuild": null,"Labels": null},"Architecture": "amd64","Os": "linux","Size": 116379573,"VirtualSize": 116379573,"GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/712e9847e3ad03a267475d1d9a0ac4b048db2d019bdaff2c5d5c2c16aebb5c9f/diff:/var/lib/docker/overlay2/1f8d82d0ffea021b7c60a7dc6fff9cec089134d21e6eadea33324806ca3af969/diff:/var/lib/docker/overlay2/dc48b79aa28f9229192998904dc8ebad58e4f6247e6a2efb8f24fa569fc10c09/diff","MergedDir": "/var/lib/docker/overlay2/93bcd26c8df6ca3c8c30cedeb039ceea2d353cdd5780fa0ab928a730011a1974/merged","UpperDir": "/var/lib/docker/overlay2/93bcd26c8df6ca3c8c30cedeb039ceea2d353cdd5780fa0ab928a730011a1974/diff","WorkDir": "/var/lib/docker/overlay2/93bcd26c8df6ca3c8c30cedeb039ceea2d353cdd5780fa0ab928a730011a1974/work"},"Name": "overlay2"},"RootFS": {"Type": "layers","Layers": ["sha256:41c002c8a6fd36397892dc6dc36813aaa1be3298be4de93e4fe1f40b9c358d99","sha256:647265b9d8bc572a858ab25a300c07c0567c9124390fd91935430bf947ee5c2a","sha256:819a824caf709f224c414a56a2fa0240ea15797ee180e73abe4ad63d3806cae5","sha256:3db5746c911ad8c3398a6b72aa30580b25b6edb130a148beed4d405d9c345a29"]},"Metadata": {"LastTagTime": "2018-12-04T22:07:50.559903444+08:00"}}
]

5. 查找鏡像

docker search

docker search 命令可以搜索遠(yuǎn)端倉庫中共享的鏡像,默認(rèn)搜索官方倉庫中的鏡像。用法為 docker search TERM,支持的參數(shù)主要包括:

  • –automated=true| false: 僅顯示自動創(chuàng)建的鏡像,默認(rèn)為否;

  • –no-trunc=true| false: 輸出信息不截?cái)囡@示,默認(rèn)為否;

  • -s,–stars=X: 指定僅顯示評價為指定星級以上的鏡像,默認(rèn)為0,即輸出所有鏡像。

~/docker$ docker search mysql
NAME                                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                                                  MySQL is a widely used, open-source relation…   7465                [OK]                
mariadb                                                MariaDB is a community-developed fork of MyS…   2407                [OK]                
mysql/mysql-server                                     Optimized MySQL Server Docker images. Create…   557                                     [OK]
zabbix/zabbix-server-mysql                             Zabbix Server with MySQL database support       149                                     [OK]
hypriot/rpi-mysql                                      RPi-compatible Docker Image with Mysql          102                                     
zabbix/zabbix-web-nginx-mysql                          Zabbix frontend based on Nginx web-server wi…   79                                      [OK]
centurylink/mysql                                      Image containing mysql. Optimized to be link…   59                                      [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5   ubuntu-16-nginx-php-phpmyadmin-mysql-5          47                                      [OK]
centos/mysql-57-centos7                                MySQL 5.7 SQL database server                   43                                      
mysql/mysql-cluster                                    Experimental MySQL Cluster Docker images. Cr…   35                                      
tutum/mysql                                            Base docker image to run a MySQL database se…   31                                      
bitnami/mysql                                          Bitnami MySQL Docker Image                      23                                      [OK]
schickling/mysql-backup-s3                             Backup MySQL to S3 (supports periodic backup…   23                                      [OK]
linuxserver/mysql                                      A Mysql container, brought to you by LinuxSe…   17                                      
zabbix/zabbix-proxy-mysql                              Zabbix proxy with MySQL database support        17                                      [OK]
centos/mysql-56-centos7                                MySQL 5.6 SQL database server                   12                                      
circleci/mysql                                         MySQL is a widely used, open-source relation…   7                                       
mysql/mysql-router                                     MySQL Router provides transparent routing be…   6                                       
openshift/mysql-55-centos7                             DEPRECATED: A Centos7 based MySQL v5.5 image…   6                                       
dsteinkopf/backup-all-mysql                            backup all DBs in a mysql server                5                                       [OK]
openzipkin/zipkin-mysql                                Mirror of https://quay.io/repository/openzip…   1                                       
jelastic/mysql                                         An image of the MySQL database server mainta…   1                                       
ansibleplaybookbundle/mysql-apb                        An APB which deploys RHSCL MySQL                0                                       [OK]
cloudfoundry/cf-mysql-ci                               Image used in CI of cf-mysql-release            0                                       
cloudposse/mysql                                       Improved `mysql` service with support for `m…   0                                       [OK]

6. 刪除鏡像

docker rmi IMAGE[IMAGE...]

docker rmi 命令可以刪除鏡像,命令格式為 docker rmi IMAGE[IMAGE…],其中 IMAGE 可以為標(biāo)簽或ID。

~/docker$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               a51debf7e1eb        2 weeks ago         116MB
ubuntu              test                a51debf7e1eb        2 weeks ago         116MB
hello-world         latest              4ab4c602aa5e        2 months ago        1.84kB
~/docker$ docker rmi ubuntu:test
Untagged: ubuntu:test
~/docker$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               a51debf7e1eb        2 weeks ago         116MB
hello-world         latest              4ab4c602aa5e        2 months ago        1.84kB

當(dāng)同一個鏡像擁有多個標(biāo)簽的時候,docker rmi 命令只是刪除該鏡像多個標(biāo)簽中的指定標(biāo)簽而已,并不影響鏡像文件。因此上述操作相當(dāng)于只是刪除了鏡像 a51debf7e1eb 的標(biāo)簽而已。

當(dāng)使用 docker rmi 命令,并且后面跟上鏡像的 ID ( 也可以是能進(jìn)行區(qū)分的部分 ID 串前綴 ) 時,會先嘗試刪除所有指向該鏡像的標(biāo)簽,然后刪除該鏡像文件本身。

注意,當(dāng)有該鏡像創(chuàng)建的容器存在時,鏡像文件默認(rèn)是無法被刪除的。

  • 先創(chuàng)建一個容器:
~/docker$ docker run ubuntu:16.04 echo "Hello, world"
Hello, world
  • 使用 docker ps -a 命令可以看到本機(jī)上存在的所有容器:
~/docker$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS                      PORTS               NAMES
f632ff0305aa        ubuntu:16.04        "echo 'Hello, world'"   46 seconds ago      Exited (0) 45 seconds ago                       eloquent_swartz
33197473a278        hello-world         "/hello"                3 days ago          Exited (0) 3 days ago                           frosty_galileo
  • 試圖刪除該鏡像,Docker 會提示有容器正在運(yùn)行,無法刪除:
~/docker$ docker rmi ubuntu:16.04
Error response from daemon: conflict: unable to remove repository reference "ubuntu:16.04" (must force) - container f632ff0305aa is using its referenced image a51debf7e1eb
  • 先刪除依賴該鏡像的所有容器,再使用ID 來刪除鏡像:
:~/docker$ docker rm f6
f6
:~/docker$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                  PORTS               NAMES
33197473a278        hello-world         "/hello"            3 days ago          Exited (0) 3 days ago                       frosty_galileo

7. 創(chuàng)建鏡像

創(chuàng)建鏡像有三種方法:

  1. 基于已有鏡像的容器創(chuàng)建
  2. 基于本地模板導(dǎo)入
  3. 基于 Dockerfile 創(chuàng)建

基于已有鏡像的容器創(chuàng)建:
該方法主要是使用 docker commit 命令。命令格式為

docker commit[OPTIONS]CONTAINER[REPOSITORY[:TAG]]

主要選項(xiàng)包括:

  • -a,–author="":作者信息
  • c,–change=[]:提交的時候執(zhí)行 Dockerfile指令,包括CMD|
    ENTRYPOINT|ENV|EXPOSE|LABEL|ONBUILD|USER|VOLUME|WORKDIR等;
  • -m,–message="":提交消息
  • p,–pause=true:提交時暫停容器運(yùn)行

創(chuàng)建新鏡像示例

先啟動一個鏡像,并在其中進(jìn)行修改操作,例如創(chuàng)建一個 test 文件,之后退出。

~/docker$ docker run -ti ubuntu:16.04
root@c53b34da8804:/# touch test.sh
root@c53b34da8804:/# pwd
/
root@c53b34da8804:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  test.sh  usr
boot  etc  lib   media  opt  root  sbin  sys  tmp      var
root@c53b34da8804:/# exit
exit
~/docker$

容器 ID 為 c53b34da8804,該容器跟原來的 ubuntu 鏡像相比已發(fā)生變化。使用 docker commit 命令提交為一個新的鏡像,提交時使用 ID 或者名稱來指定容器。

~/docker$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
c53b34da8804        ubuntu:16.04        "/bin/bash"         16 minutes ago      Exited (0) 16 minutes ago                       mystifying_sanderson
33197473a278        hello-world         "/hello"            3 days ago          Exited (0) 3 days ago                           frosty_galileo
~/docker$ docker commit -m "add new file" -a "wohu1104" c53b34da8804  test_image
sha256:1cd880207b3efc2ce140237803672344fe3ec7ed3970dffc63c113cac262ed50
~/docker$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test_image          latest              1cd880207b3e        18 seconds ago      116MB
ubuntu              16.04               a51debf7e1eb        2 weeks ago         116MB
ubuntu              latest              93fd78260bd1        2 weeks ago         86.2MB
hello-world         latest              4ab4c602aa5e        2 months ago        1.84kB

8. 導(dǎo)出和導(dǎo)入鏡像

  • 使用 docker save 命令用來將鏡像導(dǎo)出到本地文件
~/docker$ docker save -o ubuntu.tar ubuntu:16.04
~/docker$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test_image          latest              1cd880207b3e        9 minutes ago       116MB
ubuntu              16.04               a51debf7e1eb        2 weeks ago         116MB
ubuntu              latest              93fd78260bd1        2 weeks ago         86.2MB
hello-world         latest              4ab4c602aa5e        2 months ago        1.84kB
~/docker$ ls
ubuntu.tar

其中 -o 和 > 表示輸出到文件,ubuntu.tar 為目標(biāo)文件,ubuntu:16.04 是源鏡像名(name:tag)

  • 使用 docker load 將導(dǎo)出本地文件再導(dǎo)入到本地鏡像庫
~/docker$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test_image          latest              1cd880207b3e        14 minutes ago      116MB
hello-world         latest              4ab4c602aa5e        2 months ago        1.84kB
~/docker$ docker load -i ubuntu.tar
Loaded image: ubuntu:16.04
~/docker$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test_image          latest              1cd880207b3e        15 minutes ago      116MB
ubuntu              16.04               a51debf7e1eb        2 weeks ago         116MB
hello-world         latest              4ab4c602aa5e        2 months ago        1.84kB

其中 -i 和 < 表示從文件輸入。會成功導(dǎo)入鏡像及相關(guān)元數(shù)據(jù),包括tag信息

9. 上傳鏡像

使用 docker push 命令上傳鏡像到倉庫,默認(rèn)上傳到 Docker Hub官方倉庫 ( 需要登錄 )。命令格式為:

docker push NAME[:TAG] |[REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG]

參考:
https://www.cnblogs.com/lsgxeva/p/8746644.html

總結(jié)

以上是生活随笔為你收集整理的Docker 入门系列(2)- Docker 镜像, 免 sudo 使用 docker 命令、获取查看、修改镜像标签、查找删除创建镜像、导入导出镜像的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。