目录
一,docker镜像
1,查看docker版本
2,获取镜像
2.1查看下载到本地的所有镜像
2.2 获取镜像信息
2.3 添加镜像标签(上传镜像到仓库)
2.4 镜像导出
2.5 镜像导入
2.6 ,删除镜像
2.7 上传镜像
编辑 二,docker 容器操作
1,查看容器
2,容器创建----docker create
3,启动容器
4,进入容器
1,进入容器
2,容器导出
3,容器导入
4,批量删除容器/批量删除镜像
5,动态查看运行容器资源消耗
6,查看docker的日志信息
三,总结
镜像操作
容器操作
简单面试题
文章来源地址https://www.toymoban.com/news/detail-449082.html
引言
一,docker镜像
1,docker client客户端连接到了服务器(服务端是以一个守护进程的形式跑在操作系统里面的)restfulapi,典型的c/s架构
2,有docker服务端的守护进程从dockerhub,上下载了镜像(,服务端会先检查本地系统是否有这个镜像)
3,服务端创建了一个新的容器,然后从拉取的这个镜像启动了一个容器,容器执行了脚本、可执行程序,让我们可以查看/使用client
4,docker服务端把这些信息流返回到客户端并展示出来
1,查看docker版本
docker version#查看docker版本
docker info
2,获取镜像
docker pull 镜像名称。例如
docker pull nginx
2.1查看下载到本地的所有镜像
查看镜像列表
docker images——查看当前docker下的下载镜像信息
REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小
2.2 获取镜像信息
获取镜像信息
docker inspect 镜像ID
2.3 添加镜像标签(上传镜像到仓库)
docker tag nginx:latest nginx:11.11
删除
删除
docker rmi 镜像名称
docker rmi 镜像标签
2.4 镜像导出
docker save -o 文件名+镜像名
实例
docker save -o nginx_docker nginx:11.11
2.5 镜像导入
docker rmi nginx:11.11
docker images
docker load < nginx_docker
docker images
2.6 ,删除镜像
格式:
docker rmi 仓库名称:标签 #当一个镜像有多个标签时,只是删除其中指定的标签
或者
docker rmi 镜像ID号 #会彻底删除该镜像
注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。
docker rmi nginx:web
2.7 上传镜像
docker tag nginx:latest skymarch/nginx:ly #添加新的标签
docker login #登录公共仓库
Username:
password:
docker push skymarch/nginx:ly #上传镜像
二,docker 容器操作
1,查看容器
docker ps
查看运行的容器
docker ps-a
查看所有容器
##字段说明
CONTALNER ID:容器的id好
image:加载的镜像
command:运行的程序
created:创建时间
status:当前状态
ports:端口映射
names:名称
2,容器创建----docker create
docker create 选项 镜像
常用选项
-i:让容器开启表标准输入
-t:让docker分配一个伪终端
-d:后台守护进程方式运行
-it:合起来实现和容器的交互的作用,运行一个交互式会话shell
docker create -it tomcat:latest /bin/bash
3,启动容器
#加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。
#示例1:
docker run -itd nginx:latest /bin/bash
#示例2:执行后退出
docker run centos:7 /usr/local/bash -c ls -lh /
#示例3:执行后不退出,以守护进程方式执行持续性任务
docker run -d centos:7 /usr/local/bash -c "while true;do echo lcdb;done"
实例1
docker run -itd nginx:latest /bin/bash
实例2:执行后,退出
docker run centos:7 /usr/local/bash -c ls -lh /
实例3 :执行后不退出,以守护进程方式执行持续性任务
docker run -d centos:7 /usr/local/bash -c "while true;do echo lcdb;done"
如果在生产环境中,这个容器不能删除,但是磁盘被这个容器执行的爆满,导致其它应用不能用,那怎么处理?
答:可以在/var/lib/docker/containers中可以查看到容器的运行文件,找到死循环的容器,进入到有一个json.log文件,这个文件为日志文件,可以使用echo " " >json.log 这个文件中,可以临时解决磁盘压力的问题。直接删除解决不了。但是过段时间,还是会导致压力大,那怎么处理?
可以写一个脚本,定期crontab -e 执行该脚本,相当于定时清空。
文章来源:https://www.toymoban.com/news/detail-449082.html
#!/bin/bash
logs=$(find /var/lib/docker/containers/ -name *-json.log*)
for log in $logs
do
cat /dev/null > $log
done
===##或者====
#设置docker日志文件数量及每个日志大小
vim /etc/docker/daemon.json
{
"registry-mirrors":["http://f613ce8f.m.daocloud.io"] //加速器
"log-driver":"json-file", //定义日志格式,
"log-opts":{"max-size":"500M","max-file":"3"} //设置日志文件最大500M,最多3个,如果3个都满了,它会自动删除一个,然后继续装。
}
systemctl damon-reload && systemctl restart docker
#重新加载一下
停止容器
docker stop
4,进入容器
1,进入容器
docker run -it nginx:latest /bin/bash
exec(容器必须为开启状态)
docker exec -it 容器id /bin/bash
exec和shell是两种运行方式
docker run -it 会创建前台进程,但是会在输入exit后终止进程
docker exec -it 会连接到容器,可以向ssh一样进入容器,进行操作,可以通过exit退出容器,不影响容器运行
2,容器导出
docker expore 容器id > 文件名
实例
docker export 容器id > nginx_a
3,容器导入
docker import 导出的文件名字 指定镜像名称
实例
docker import tomdce cetnos:liss1
4,批量删除容器/批量删除镜像
docker rm 【容器id】
#不能删除运行状态的容器,如果要删除,需要加-f强制删除,或者停止后删除
docker rm -f 【容器名称】
#基于容器名称删除
docker rm -f `docker ps -q`
#删除所有运行的容器
docker rm -f `docker ps -aq`
#删除所有的容器
docker ps -a | awk 'NR>=2{print "docker rm "$1}'| bash
#删除所有容器,不包括运行的容器
for i in `docker ps -a |grep -i exit | awk '{print $1}'`;do docker rm -f $i;done
#过滤出关闭状态的容器,并删除
docker rm 【容器id】
docker rm -f 【容器名称】
docker rm `docker ps -aq`
docker ps -a
5,动态查看运行容器资源消耗
docker stats
6,查看docker的日志信息
docker logs 【容器ID】
#查看指定容器的日志信息
三,总结
镜像操作
docker iamges #查看docker镜像
docker inspect 【id号】 #查镜像的详细信息
docker tag nginx:lastest nginx:web #修改docker的标签(见名知意)
#==========删除镜像
docker rmi nginx:web #删除标签为web的nginx镜像(删除标签指定的镜像)
或者
docker rmi 【镜像id】 #彻底删除该镜像
#注意:如果该镜像一个呗容器使用,正确做法先删除该镜像的所有容器,再删除镜像
#=====导入导出镜像
存储镜像----》将镜像保存为本地文件
docker save -o 【存储文件名】 【存储的镜像】
docker save -o nginx nginx:latest #实例(保存本地目录)
导入镜像----》将本地文件导入到容器
docker load < nginx #存入到容器中
或
docker load -i nginx #也可以存储到容器中
#=====上传镜像====演示上传阿里云和docker hub
默认上传到docker Hub官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com可以使用docker login命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用docker push命令进行上传。
docker tag nginx:latest ydq/nginx:web #修改docker标签
docker iamges
docker login #登录到docker的hub
docker push 【上传的镜像】 #上传镜像
#=======下载镜像
docker pull nginx #下载nginx镜像
容器操作
===#先创建后启动
docker create -it nginx:latest /bin/bash #创建容器
docker ps -a #查看所有容器
docker ps #查看运行的容器
docker start 【镜像id】 #启动一个镜像
========#创建并启动
docker run 【镜像名】 /usr/bin/bash -c ls / #创建一个容器并启动镜像(本地没有将从仓库下载)(运行结束就退出)
docker run -d 【镜像名】 /usr/bin/bash -c "while true;do echo hello;done"
#后台运行(必须要加-d,不然容器无法启动)(会造成cpu100%)
docker run -itd -name test1(名称) 【镜像名】 /bin/bash
#创建容器并持续运行容器(-name:指定名称 )
======#停止容器
docker stop 【容器id】 #容器id用docker ps -a 查看
=====#容器的进入
docker exec -it 【容器id】 /bin/bash #进入一个启动的容器
或
docker run -it centos:7 bash #不加-d选项会创建容器后直接进入容器,但是退出容器,容器也会停止
=====#本机文件与容器互传
docker cp ydq.txt 【容器id】:/opt #将本地文件传到容器中的/opt目录下
docker cp 【容器id】:/opt/ydq.txt /home/ydq2.txt #将容器中的文件拷贝到本地
======#容器的导出导入
docker export 【容器id】 > nginx.tar #将容器导出到本地
cat nginx.tar |docker import - nginx:web #将本地导入到容器
======#容器的删除
docker rm [-f] 【容器id】 #删除容器(加-f删除正在运行的容器)
docker ps -a |awk 'NR>=2{print "docker stop" $1}'|bash
......
简单面试题
#1、如果镜像优化?
有效减少镜像大小(dockerfile 优化方向-》对于部分企业而言,是一种升阶面试题)
#2、怎么看当下有多大号容器,怎么看当下所有容器占用的I/O有多少,占用内存多少?
使用docker stats命令查看
#3、容器有哪些状态?
Docker容器可以有七种状态:
已创建(create)
运行(up)
已暂停(paused)
重新启动(restarting)
已退出(exited)正常退出为(exited(0)),人工干预停止会有(exited(137))
死亡(dead)
迁移(removing)
#4、overlay2由哪几部分组成 ?
LowerDir
MergedDir
UpperDir
WorkDi
到了这里,关于Docker容器------镜像,容器基础命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!