Docker之鏡像與容器以及操作

一.前言

一個image是一些Docker層(layer)的集合。當我們運行一個image的時候,一個對應於這個image的container就產生了。同一個image可能對應許多正在運行的container。

二.相關指令

1.鏡像相關指令

(1).查看所有鏡像

docker image ls

(2).刪除鏡像

docker rmi [鏡像ID(前四位)或者鏡像名]

(3).刪除所有鏡像

docker rmi $(docker images -q)

2.容器相關指令

(1).刪除容器

docker rm [容器ID或者容器名]

如果正在運行的話,需要先停止容器再刪除

docker stop [容器ID或者容器名]

(2).查看所有容器(包括未運行的)

docker ps -a

查看正在運行的容器

docker ps

詳細: docker ps [OPTIONS]
  • -a :顯示所有的容器,包括未運行的。
  • -f :根據條件過濾顯示的內容。
  • –format :指定返回值的模板文件。
  • -l :顯示最近創建的容器。
  • -n :列出最近創建的n個容器。
  • –no-trunc :不截斷輸出。
  • -q :靜默模式,只顯示容器編號。
  • -s :顯示總的文件大小。

(3).殺死所有正在運行的容器

docker kill $(docker ps -a -q)

(4).刪除所有已經停止的容器

docker rm $(docker ps -a -q)

(5)查看docker容器的詳細信息

docker inspect [OPTIONS] NAME|ID [NAME|ID…]

OPTIONS說明:

-f :指定返回值的模板文件。

-s :顯示總的文件大小。

–type :爲指定類型返回JSON。

例如:

runoob@runoob:~$ docker inspect mysql:5.6

(6).查看容器log

docker logs [容器ID]或容器名稱

三.相關操作

1.查看docker所有container

命令: docker ps -a

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
bb44abc35285        hello-world         "/hello"            19 hours ago        Exited (0) 19 hours ago                       recursing_franklin
2.查看正在運行的container

docker ps -q

3.刪除鏡像iamge與容器Container

1.查詢所有鏡像

REPOSITORY                            TAG                 IMAGE ID            CREATED             SIZE
lss0555/dockerfile-entrypoint-shell   latest              a55bfbb112d3        18 minutes ago      88.1MB
lss0555/dockerfile-cmd-shell          latest              c6ec8dccc991        2 hours ago         88.1MB
java-test                             latest              f786e00bec5d        26 hours ago        643MB
lss0555/java-hello                    latest              f786e00bec5d        26 hours ago        643MB
test/java-hello                       latest              f786e00bec5d        26 hours ago        643MB
mysql                                 latest              81f094a7e4cc        13 days ago         477MB
ubuntu                                latest              47b19964fb50        13 days ago         88.1MB
java                                  8                   d23bdf5b1b1b        2 years ago         643MB

2.刪除鏡像lss0555/dockerfile-cmd-shell

刪除指令: docker rmi [鏡像]

[root@localhost docker_file]# docker rmi c6ec8dccc991        
Error response from daemon: conflict: unable to remove repository reference "lss0555/dockerfile-cmd-shell" (must force) - container a7d471135d46 is using its referenced image c6ec8dccc991

此時提示該鏡像有正在運行的容器,這時候查看正在運行的容器

3.查看所有容器(包括未運行)

指令: docker ps -a

[root@localhost docker_file]# docker ps -a
CONTAINER ID        IMAGE                          COMMAND                   CREATED             STATUS                     PORTS               NAMES
a7d471135d46        lss0555/dockerfile-cmd-shell   "/bin/sh -c 'echo \"h…"   2 minutes ago       Exited (0) 2 minutes ago                       zen_greider

刪除該容器: docker rm a7d4

[root@localhost docker_file]# docker rm a7d4
a7d4

刪除後再次查看所有容器

[root@localhost docker_file]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

發現以不存在該容器,此時再次刪除鏡像

[root@localhost docker_file]# docker rmi c6ec8dccc991
Untagged: lss0555/dockerfile-cmd-shell:latest
Deleted: sha256:c6ec8dccc9910b3346fbaec8e55e7577e308281c9469f744b8e677a51df2eb9e

再次查看當前所有鏡像

[root@localhost docker_file]# docker image ls
REPOSITORY                            TAG                 IMAGE ID            CREATED             SIZE
lss0555/dockerfile-entrypoint-shell   latest              a55bfbb112d3        30 minutes ago      88.1MB
java-test                             latest              f786e00bec5d        26 hours ago        643MB
lss0555/java-hello                    latest              f786e00bec5d        26 hours ago        643MB
test/java-hello                       latest              f786e00bec5d        26 hours ago        643MB
mysql                                 latest              81f094a7e4cc        13 days ago         477MB
ubuntu                                latest              47b19964fb50        2 weeks ago         88.1MB
java                                  8                   d23bdf5b1b1b        2 years ago         643MB

此時該鏡像已成功刪除

4. exec 命令操作

1.進入查看容器

docker exec -it lss0555/java-hello /bin/sh 或者 docker exec -it d48b21a7e439(容器id) /bin/sh

2.查看運行容器的ip地址

docker exec -it lss0555/java-hello ip a

/bin/sh 是固定寫法,它也能進入這個容器

四.鏡像iamge資源

Docker 資源彙總

Docker Hub: https://hub.docker.com/

Docker 國內鏡像

網易加速器:http://hub-mirror.c.163.com

官方中國加速器:https://registry.docker-cn.com

ustc的鏡像:https://docker.mirrors.ustc.edu.cn

daocloud:https://www.daocloud.io/mirror#accelerator-doc(註冊後使用)

五.操作鏡像

1.拉取鏡像

如拉取鏡像ubuntu

docker pull ubuntu

拉取指定版本鏡像:
docker pull ubuntu:16.04

[root@localhost ~]# docker pull ubuntu:16.04
16.04: Pulling from library/ubuntu
7b722c1070cd: Pull complete 
5fbf74db61f1: Pull complete 
ed41cb72e5c9: Pull complete 
7ea47a67709e: Pull complete 
Digest: sha256:e4a134999bea4abb4a27bc437e6118fdddfb172e1b9d683129b74d254af51675
Status: Downloaded newer image for ubuntu:16.04
2.運行鏡像ubuntu

運行指令:
docker run ubuntu

查看所有運行容器: docker container ls -a

[root@localhost ~]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
1f4c6c68d56d        ubuntu              "/bin/bash"         27 seconds ago      Exited (0) 26 seconds ago                       unruffled_goldstine
8f5fd5979df9        ubuntu              "/bin/bash"         53 seconds ago      Exited (0) 51 seconds ago                       heuristic_williams
bb44abc35285        fce289e99eb9        "/hello"            47 hours ago        Exited (0) 47 hours ago                         recursing_franklin
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章