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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章