docker 2:Docker镜像增删改查

在1中我们已经完成docker的安装,接下来安装镜像。我们安装一个centos7的镜像。

首先我们可以将docker设置成开机自启动:

[root@localhost ~]#  systemctl enable docker.service
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
[root@localhost ~]# systemctl enable containerd.service
Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service → /usr/lib/systemd/system/containerd.service.

  然后开始下载镜像,我这里下载一个centos7的镜像文件,如下:

[root@localhost ~]# docker pull centos:centos7
centos7: Pulling from library/centos
2d473b07cdd5: Downloading [===>                                               ]  4.823MB/76.1MB

  下载之前也可以搜索一下看哪个镜像更合适,命令如下:

[root@localhost ~]# docker search centos
NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                             The official build of CentOS.                   6484      [OK]       
ansible/centos7-ansible            Ansible on Centos7                              133                  [OK]
consol/centos-xfce-vnc             Centos container with "headless" VNC session…   127                  [OK]
jdeathe/centos-ssh                 OpenSSH / Supervisor / EPEL/IUS/SCL Repos - …   117                  [OK]
centos/systemd                     systemd enabled base container.                 97                   [OK]
centos/mysql-57-centos7            MySQL 5.7 SQL database server                   87                   
imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              58                   [OK]
tutum/centos                       Simple CentOS docker image with SSH access      47                   
kinogmt/centos-ssh                 CentOS with SSH                                 29                   [OK]
pivotaldata/centos-gpdb-dev        CentOS image for GPDB development. Tag names…   13                   
guyton/centos6                     From official centos6 container with full up…   10                   [OK]
nathonfowlie/centos-jre            Latest CentOS image with the JRE pre-install…   8                    [OK]
centos/tools                       Docker image that has systems administration…   7                    [OK]
drecom/centos-ruby                 centos ruby                                     6                    [OK]
pivotaldata/centos                 Base centos, freshened up a little with a Do…   5                    
pivotaldata/centos-gcc-toolchain   CentOS with a toolchain, but unaffiliated wi…   3                    
darksheer/centos                   Base Centos Image -- Updated hourly             3                    [OK]

  由于dockerhub默认使用的是国外源,下载速度较慢,可以修改为国内源,方式如下,修改或者创建/etc/docker/daemon.json文件,添加上国内源即可。

[root@localhost ~]# vi /etc/docker/daemon.json

{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

  目前常用的国内源有:

Docker 官方中国区
https://registry.docker-cn.com
网易
http://hub-mirror.c.163.com
中国科技大学
https://docker.mirrors.ustc.edu.cn
阿里云
https://pee6w651.mirror.aliyuncs.com

  然后下载完成,可以看到如下:

[root@localhost ~]# docker pull centos:centos7
centos7: Pulling from library/centos
2d473b07cdd5: Pull complete 
Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Status: Downloaded newer image for centos:centos7
docker.io/library/centos:centos7
[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   3 weeks ago    13.3kB
centos        centos7   8652b9f0cb4c   4 months ago   204MB

  接下来我们可以运行这个容器:

[root@localhost ~]# docker run -it centos:centos7 /bin/bash
[root@c1c3d9b90171 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

参数说明:cc9cf968068e
-i: 交互式操作。
-t: 终端。
centos:centos7: 这是指用 centos版本镜像为基础来启动容器。centos7表示用版本7的镜像运行,若不加centos7则默认使用centos:latest运行。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

  删除镜像:

[root@localhost ~]# docker rmi hello-world
Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container cc9cf968068e is using its referenced image d1165f221234

  我们看到在删除hello-world的时候出现报错,说容器cc9cf968068e正在使用该镜像,所以在删除镜像之前需要删除该镜像创建的容器,然后再删除镜像即可。

[root@localhost ~]# docker rm cc9cf968068e
cc9cf968068e
[root@localhost ~]# docker rmi hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:308866a43596e83578c7dfa15e27a73011bdd402185a84c5cd7f32a88b501a24
Deleted: sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726
Deleted: sha256:f22b99068db93900abe17f7f5e09ec775c2826ecfe9db961fea68293744144bd

  若是要查看所有容器的ID或者所有镜像的ID,并针对镜像ID做操作可以使用如下方式

[root@localhost ~]# docker images -q    #查看所有镜像ID
d1165f221234
300e315adb2f
8652b9f0cb4c
[root@localhost ~]# docker ps -aq         #查看所有容器ID
e63520d23e40
c1c3d9b90171
301f9596af4d
c6763b64f608
8ce62505290a
deca3b2f0da9
[root@localhost ~]# docker stop $(docker ps -aq)     #停止所有容器
e63520d23e40
c1c3d9b90171
301f9596af4d
c6763b64f608
8ce62505290a
deca3b2f0da9
[root@localhost ~]# docker rm $(docker ps -aq)        #删除所有容器
e63520d23e40
c1c3d9b90171
301f9596af4d
c6763b64f608
8ce62505290a
deca3b2f0da9
[root@localhost ~]# docker rmi $(docker images -q)    #删除全部镜像
d1165f221234
300e315adb2f
8652b9f0cb4c

  

原文地址:https://www.cnblogs.com/tortoise512/p/14602292.html