Docker的Container简介

什么是Container
  • 要有Container首先要有Image,也就是说Container是通过image创建的。
  • Container是在原先的Image之上新加的一层,称作Container layer,这一层是可读可写的(Image是只读的)。
  • 在面向对象的编程语言中,有类跟对象的概念。类是抽象的,对象是类的具体实现。Image跟Container可以类比面向对象中的类跟对象,Image就相当于抽象的类,Container就相当于具体实例化的对象。
  • Image跟Container的职责区别:Image负责APP的存储和分发,Container负责运行APP。
    Container
docker的一些命令
  • docker container ls 命令可以查看当前正在运行的容器:
    这里写图片描述

  • docker container ls -a 可以列举出所有的容器,包括正在运行的和没有运行的容器:

    [root@localhost ~]# docker container ls -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    38c819a21e84 hello-world “/hello” 46 hours ago Exited (0) 46 hours ago distracted_sinoussi
    cc4f0b206a5c mydocler “/hello” 46 hours ago Exited (13) 46 hours ago compassionate_austin
    d00f46e347d2 mydocler “/hello” 2 days ago Exited (13) 2 days ago epic_poitras
    b600431e3e62 hello-world “/hello” 2 days ago Exited (0) 2 days ago suspicious_ritchie
    4a9554ac3cc5 hello-world “/hello” 2 days ago Exited (0) 2 days ago cranky_elbakyan
    31e391e789db alpine “sh” 3 months ago Dead hungry_jang
    [root@localhost ~]#


  • 运行docker容器

    1. 运行docker容器可以使用 docekr run <IMAGE STRING>,但用这个命令运行的容器会在运行完后,容器就自动退出了,不能跟用户有交互的效果。

    2. 想要有交互效果可以使用docker run -it <IMAGE STRING>命令。

      [root@localhost ~]# docker run -it alpine
      / # 
      / # 
      / # 
      

      我们可以看到,这样就相当于进入了一个操作系统里面。另起一个终端,输入docker container ls,可以看到当前正在运行的容器:

      [root@localhost ~]# docker container ls 
      CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
      5f0e3c110aa2        alpine              "/bin/sh"           2 minutes ago       Up 2 minutes                            elegant_bohr
      
    3. 后台运行container容器,使用 docker run -d <IMAGE STRING>

    4. 退出当前正在运行的容器,键入exit命令。


  • docker ps -a 命令等价于docker container ls -a

  • docker image ls可以列举出来当前所有的Image,它的简写方式为docker images

    [root@localhost ~]# docker image ls
    REPOSITORY TAG IMAGE ID CREATED SIZE
    mydocler latest 92e255dbbd0e 2 days ago 865kB
    hello-world latest e38bc07ac18e 2 months ago 1.85kB
    nginx alpine 1058e9c89897 4 months ago 17.9MB
    alpine latest a741b13578d9 5 months ago 4.14MB
    [root@localhost ~]#

  • docker 删除某个Container的命令:docker rm <CONTAINER ID>

  • 删除当前的某个Image的命令:docker image rm <IMAGE ID>,简写方式为:docker rmi <IMAGE ID>

  • 列举出所有container的id,docker container ls -aq

    [root@localhost ~]# docker container ls -aq
    5f0e3c110aa2
    df6fdbe3845f
    63ae7603d5b8
    7341247b420e
    2daca6673376
    d00f46e347d2
    b600431e3e62
    4a9554ac3cc5

上面这条命令的效果跟命令docker container ls -a | awk {'print$1'}是一样的:

[root@localhost ~]# docker container ls -a | awk {'print$1'}
CONTAINER
5f0e3c110aa2
df6fdbe3845f
63ae7603d5b8
7341247b420e
2daca6673376
d00f46e347d2
b600431e3e62
4a9554ac3cc5
31e391e789db
  • 删除掉所有的container => docker rm $(docker container ls -aq)

    [root@localhost ~]# docker rm $(docker container ls -aq)
    5f0e3c110aa2
    df6fdbe3845f
    63ae7603d5b8
    7341247b420e
    2daca6673376
    d00f46e347d2
    b600431e3e62
    4a9554ac3cc5
    31e391e789db
    [root@localhost ~]# docker container ls -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    [root@localhost ~]#

  • 删除掉所有已退出的container => docker rm $(docker container ls -f "status=exited" -q)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值