2、Docker容器基本操作

docker中的容器就是一个轻量级的虚拟机,是镜像运行的一个状态,本文来介绍一下容器的基本操作。
镜像是一个安装程序,而容器则是程序运行时的一个状态。

查看正在运行的容器
启动docker后,使用docker ps命令可以查看当前正在运行的容器:
在这里插入图片描述CONTAINER ID:它是指容器id,是一个唯一以标识符,是一个64位的十六进制数,在不会混淆的情况下可以只采用id的前几位作为一个容器的标识。

IMAGE:表示创建容器时使用的镜像。

COMMAND:表示容器最后运行的命令

CREATED:创建容器时间

STATUS:容器的状态,这里可能显示容器的启动时间,也可能显示容器的关闭时间,具体显示哪个要看要看容器当前的状态

PORTS:容器对外开放的接口

NAMES:容器的名字,如果不设置,会有一个默认的名字

查看最新创建的容器
使用docker ps -l可以查看最近创建的容器:
在这里插入图片描述查看最新创建的n个容器
可以使用 docker ps -n=XXX 来查看最新创建的n个容器:
在这里插入图片描述 创建容器
创建容器有两种不同的方式,1、先创建,再启动;2、创建并且启动。两种方式的流程基本相似,当执行一个创建命令之后,docker 首先会去本地路径下查找是否有相应的镜像,如果没有,就去 docker hub 上搜索,如果搜索到了,则下载下来,然后利用该镜像创建一个容器并启动。容器的文件系统是在只读的镜像文件上添加一层可读写的文件层,这样可以使在不改变镜像的情况下,只记录改变的数据(所有的修改只改变容器,不改变镜像)。下面对这两种方式分别介绍。

容器创建
使用 docker create 命令创建容器,创建出来的容器是处于停止状态,没有运行,例如要创建一个 nginx 容器:

docker create nginx    //根据nginx镜像创建一个名字随机的容器
docker create  --name=nginx nginx  //  根据nginx镜像,创建一个名字为nginx的容器
docker create --name nginx3 -p 80:80 nginx
//根据nginx镜像,创建一个名字为nginx3的容器 并且做了端口映射

//启动
docker start nginx3

启动后可以通过80端口访问:
在这里插入图片描述停止容器:

docker stop nginx(名字)
docker stop 16c6af26fb87 (id)
docker stop $(docker ps -q)   //批量停止

注意:默认下载最新版本的镜像,如果要指定版本,在最后加上冒号加上版本号即可。容器关闭,重启后数据不会丢失,除非你把容器删了。

容器创建并启动
如果开发者需要既创建又启动容器,则可以使用 docker run 命令。 docker run 命令又可以启动两种不同模式的容器:后台型容器和交互型容器,后台型容器就是一个在后台运行的容器,在后台执行计算就行了,不需要和开发者进行交互;交互型容器需要接收开发者的输入进行处理给出反馈。对于日常开发而言,大部分情况下创建的都是后台型容器,不过在很多时候,即使是后台型容器也不可避免的需要进行交互。

后台型容器

以 nginx 为例,一般 nginx 在后台运行即可:

 docker run --name nginx -d -p 81:80 nginx

–name 表示给容器取名字,-d 表示容器在后台运行,-p 表示将容器的 80 端口映射到宿主机的 81 端口

后台形容器也可以交互,进入安装容器的Linux中:

docker exec -it nginx /bin/bash

在这里插入图片描述可以在这里进入nginx的主页,并且操作里面的文件内容内容:

在这里插入图片描述修改成功后可以访问到改文件的内容:
在这里插入图片描述
退出后还是可以访问到刚刚修改的内容,还是可以运行的,因为这个nginx是一个后台形容器,退出它所属的Linux后,它还是在后台运行。

交互型容器

也可以创建交互型容器,例如创建一个 ubuntu 容器,开发者可能需要在 ubuntu 上面输入命令执行相关操作,交互型容器创建方式如下:

docker run --name ubuntu -it ubuntu /bin/bash

交互型容器,创建成功后自动进入ubuntu中,而不是后台运行:
在这里插入图片描述就可以在ubuntu中进行操作,例如在它里面装一个mysql:

apt-get update   //更新源
 apt-get install mysql-server

交互型容器的特点是,如果执行exit退出后,它就停止运行了。

参数含义都和上文一致,另外-it 参数,i 表示开发容器的标准输入(STDIN),t 则表示告诉 docker,为容器创建一个命令行终端。执行结果如下:

容器启动

启动

如果开发者使用了 docker run 命令创建的容器,则创建完成后容器就已经启动了,如果使用了 docker create 命令创建的容器,则需要再执行 docker start 命令来启动容器,使用 docker start 命令结合容器 id 或者容器 name 可以启动一个容器。

docker start 启动的是一个已经存在的容器,要使用该命令启动一个容器,必须要先知道容器的 id 或者 name ,开发者可以通过这两个属性启动一个容器。一般来说,第一次可以使用 docker run 启动一个容器,以后直接使用 docker start 即可。

重启

容器在运行过程中,可能会出现问题,这时时,就需要重启容器,使用 –restart 参数可以实现这一需求。docker 的重启策略可以分为 4 种:

1、no表示不自动重启容器,默认就是no。
2、on:failure:[max-retries]表示在退出状态为非0时才会重启(非正常退出),有一个可选择参数:最大重启次数,可以设置最大重启次数,重启次数达到上限后就会放弃重启。
3、always表示始终重启容器,当docker守护进程启动时,也会无论容器当时的状态为何,都会尝试重启容器。
4、unless-stopped表示始终重启容器,但是当docker守护进程启动时,如果容器已经停止运行,则不会去重启它。

删除容器

单个删除:
使用docker rm 加 容器名 或者容器id(这个方法只能删除停止运行的容器)
docker rm -f 加容器名 或者容器id(强制删除,包括正在运行的容器)

批量删除

docker rm $(docker ps -a -q)

docker ps -a -q 会列出所有容器的 id ,供 rm 命令删除。

如下命令删除全部容器,会提示是否要全部删除,输入yes,即全部删除(新版中才有的功能)容器删除要慎重!因为所有的数据都存再容器中,而不是镜像中。

docker container prune
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值