Docker学习--Docker容器的管理操作

容器是镜像的一个运行实例。所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层。如果认为虚拟机是模拟运行的一整套操作系统(包括内核、应用运行态环境和其他系统环境)和跑在上面的应用,那么Docker容器就是独立运行的一个(或一组)应用,以及它们必须的运行环境。

一、docker run命令

docker run命令是使用一个镜像运行启动一个容器。在启动运行的时候,会检查docker是否包含了该镜像,如果没有包含,docker会自动在docker的仓库中下载你想使用的镜像。

1、启动一个bash终端,允许用户进行交互
root@docker ~]# docker run --name mycentos -it docker.mynexus.com/myimages/centos:7.6 /bin/bash
[root@28714cd977bf yum.repos.d]# cd
[root@28714cd977bf ~]# ls /
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@28714cd977bf ~]# 

其中
--name [镜像名] :给启动的容器起一个名字,如果不使用--name ,docker的守护进程会自动给容器命名,但是这个名字并不好记。

-t:让Docker分配一个伪终端并绑定到容器的标准输入上。

-i:让容器的标准输入保持打开。

-it:是-i和-t的结合。

2、让容器在后台运行

在使用docker run运行容器的更多时候,我们是需要容器在后台运行的,也就是以守护态形式运行。可以通过-d参数来实现。

[root@docker ~]# docker run -d --name mycentos2 docker.mynexus.com/myimages/centos:7.6 /bin/bash
eae5681c6562568acc2b6b1c2d69ca52d0a1cd9d3a6acee53fd8d0e6c3af6353

容器启动后就会在后台运行,然后返回一个容器ID到控制台。

二、容器的启动/停止

1、停止命令

docker stop [ID/NAMES]docker kill [ID/NAMES]这两个命令都可以停止容器。

区别

docker stop默认是先给容器发送SIGTERM信号,然后10秒后发生SIGKILL信号终止容器,可以使用-t或者--time来设置等待的时间,单位是秒。

docker kill是直接停止容器,没等待时间。

2、启动命令

可以使用docker start [ID/NAMES]来启动已经停止的容器。

三、进入/退出容器

1、Dokcer attach [ID/NAMES]

Docker提供了docker attach的命令,用来让我们进入已经启动的容器。

[root@docker ~]# docker attach mycentos
[root@28714cd977bf yum.repos.d]# 

注意,在我们使用attach进入容器的时候,如果同时有多个窗口attach到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。

2、nsenter进入容器

nsenter命令被包含在util-linux软件包里,使用nsenter可以访问另一个进程的名字空间,大多数Linux发行版默认包含了该软件,CentOS默认是有的。如果没有,可以使用下面的命令安装:

[root@docker ~]# yum install -y util-linux

为了连接到容器,还需要找到容器的第一个进程的PID,可以通过下面的命令获取PID。
docker inspect --format "{{ .State.Pid }}" [ID/NAMES]

通过这个PID,可以连接到这个容器中:

nsenter --target $PID --mount --uts --ipc --net --pid

举个例子

[root@docker ~]# docker ps
CONTAINER ID        IMAGE                                    COMMAND             CREATED             STATUS              PORTS               NAMES
28714cd977bf        docker.mynexus.com/myimages/centos:7.6   "/bin/bash"         2 hours ago         Up 4 seconds        22/tcp              mycentos
[root@docker ~]# docker inspect --format "{{ .State.Pid }}" mycentos
2707
[root@docker ~]# nsenter --target 2707 --mount --uts --ipc --net --pid
[root@28714cd977bf /]# 
3、exec进入容器
[root@docker ~]# docker exec -it mycentos /bin/bash
[root@28714cd977bf yum.repos.d]#
4、退出容器

1.exit

2.ctrl+d

四、删除容器

1、删除未运行的容器

使用docker rm可以删除一个处于停止状态的容器。

[root@docker ~]# docker ps
CONTAINER ID        IMAGE                                    COMMAND             CREATED             STATUS              PORTS               NAMES
28714cd977bf        docker.mynexus.com/myimages/centos:7.6   "/bin/bash"         3 hours ago         Up 28 minutes       22/tcp              mycentos
[root@docker ~]# docker stop mycentos
mycentos
[root@docker ~]# docker rm mycentos
mycentos
2、强制删除运行中的容器

docker rm -f [ID/NAMES]

3、杀死所有正在运行的容器
[root@docker ~]# docker kill $(docker ps -a -q)
4、删除所有已经停止的容器
[root@docker ~]# docker rm $(docker ps -a -q)

五、不进入容器执行命令

可能你的本意不是想进入容器,而是想让容器执行一个命令,docker提供了exec命令,使用exec可以在容器内运行命令。

[root@docker ~]# docker exec mycentos which echo
/usr/bin/echo

参考文章:
http://k8s.unixhot.com/docker/docker-container.html
https://blog.51cto.com/14188767/2374337?source=dra
https://www.cnblogs.com/szlblog/p/10612280.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值