容器操作案例
容器基本操作
通过nginx镜像文件创建容器,这里不加版本号默认是最新的版本
容器的列举,只列举正在运行的容器
停止正在运行的容器
删除容器
容器状态迁移
创建容器,并不运行使用create
启动容器,使用start
使用stop停止容器
再次启动容器,然后kill容器
启动容器,然后暂停容器
恢复容器(取消暂停)
重启容器,通过观察容器的运行时间来判断容器是否重启
通过rm 删除容器 要先停止容器
容器批量处理技巧
命令 | 解释 |
docker container ls -qf name=xxx | 根据名称过滤得到容器编号 |
docker container ls --filter status=running | 根据状态过滤容器信息 |
docker container ls -aq | 静默获取全部容器id |
docker container ls --filter ancestor=xxx | 过滤镜像名为xxx的容器信息 |
docker container ls --filter ancestor=xxx | 过滤镜像id为xxx的容器信息 |
-a表示打印所有的容器信息,包括正在运行和已经退出的
-q表示只返回容器ID
-f表示基于给的条件过滤等价于--filter选项
批量停止容器
根据容器的状态批量删除容器,注意状态哪里虽然我们查出来的是大写,但是我们要写成小写
容器交互模式
attached和detached模式
首先通过nginx镜像创建一个容器,映射80端口,如下图所示,通过这样的方式创建的容器,就是attached模式,这样容器会在前台运行
这是访问服务器网址,命令窗口就会打印日志,Docker容器的日志会实时的展现到窗口并且占用此端口
这个模式很容易被我们按到ctrl+c停止掉服务,所以我们需要一个更好的、更稳定的模式,对应的是datached模式(其实就是后台运行),对于后台运行的容器可以通过logs查看这个容器的日志,logs的-f选项可以动态跟踪日志
interactive模式
当我们创建好一个容器之后,可能需要去容器内部获取一些信息或执行一些命令,这就需要进入到交互模式。
例如创建一个ubuntu容器之后,需要到系统里输入各种shell命令和系统进行交互就需要进入交互模式才能完成。
创建运行容器并进入到交互模式,这里的sh是容器启动时要运行的命令,如果是Ubuntu的镜像那么这个参数就是bash
针对一个已经运行的容器进入到它的交互模式
容器和宿主机内容复制
首先我们创建容器,并拷贝宿主机文件到容器
然后我们到容器中查找拷贝的文件并打印内容验证拷贝
从外部页面访问
现在在容器中修改文件内容
拷贝容器内的文件到宿主机,并查看内容,发现文件已经被覆盖
清理容器释放空间,停止并删除容器
容器自动删除
启动一个nginx,并指定--rm选项
停止容器,并查看容器是否存在,发现容器自动删除了
容器自动启动
容器重启选项如下 | |
docker run --restart=no [容器名] | 默认值不自动重启 |
docker run --restart=on-failure:3 [NAME] | on-failure若容器的退出状态非0,则docker自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃 |
docker run --restart=always [NAME] | always容器退出时总是重启,但不考虑Docker守护进程启动时就已经停止的容器 |
如果容器启动时没有设置--restart参数,则通过docker update --restart=always [NAME]进行更新
启动nginx服务,kill启动进程
再次查看容器状态,发现容器还是启动状态
释放资源
容器环境变量设置
容器详情查看
启动容器并查看详细信息
容器执行单行命令
我们可以直接借助docker的容器环境执行一些命令,比如容器中有某个命令而宿主机上没有这个时候借助容器可以完成某些任务
可以看到容器执行完命令,就自动删除了,其实是自动停止然后通过--rm删除,要测试可以去掉--rm然后查看所有容器。