当前位置:   article > 正文

Docker容器------镜像,容器基础命令_docker load指定镜像名和版本

docker load指定镜像名和版本

目录

 一,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的日志信息

 三,总结

镜像操作

容器操作

简单面试题


 

引言

aafef06deca444fca3e3c3df8d168600.jpeg

 一,docker镜像

  1. 1,docker client客户端连接到了服务器(服务端是以一个守护进程的形式跑在操作系统里面的)restfulapi,典型的c/s架构
  2. 2,有docker服务端的守护进程从dockerhub,上下载了镜像(,服务端会先检查本地系统是否有这个镜像)
  3. 3,服务端创建了一个新的容器,然后从拉取的这个镜像启动了一个容器,容器执行了脚本、可执行程序,让我们可以查看/使用client
  4. 4,docker服务端把这些信息流返回到客户端并展示出来

029a1300638448c0b6ddfa0c1c95d53a.png

 1,查看docker版本

 docker version#查看docker版本

ce89394da3f540bf90c8f38ec5d88542.png

docker info

2354dc7166b14831b89f61ee63dc4f34.png

 2,获取镜像

  1. docker pull 镜像名称。例如
  2. docker pull nginx

ca331cc477b240dda0d9f61d28917e07.png

2.1查看下载到本地的所有镜像 

  1. 查看镜像列表
  2. docker images——查看当前docker下的下载镜像信息
  3. REPOSITORY:镜像属于的仓库;
  4. TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
  5. IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
  6. CREATED:镜像创建时间;
  7. VIRTUAL SIZE:镜像大小

061c4ba76c634732a7ed783354d91151.png

 2.2 获取镜像信息

  1. 获取镜像信息
  2. docker inspect 镜像ID

de0bdb9fd0784c918a46263feb1c588b.png

2.3 添加镜像标签(上传镜像到仓库) 

docker tag nginx:latest nginx:11.11

7d3450183c1842edbf13e539c034d17e.png

 删除

  1. 删除
  2. docker rmi 镜像名称
  3. docker rmi 镜像标签

2f4b6dbd8512409580a46efd21a8e5db.png

cfe3093d2c0d4fe18ae7a4ebfc22b684.png

 2.4 镜像导出

  1. docker save -o 文件名+镜像名
  2. 实例
  3. docker save -o nginx_docker nginx:11.11

9322cff4a22a479eb43d664e77ac9652.png

 2.5 镜像导入

  1. docker rmi nginx:11.11
  2. docker images
  3. docker load < nginx_docker
  4. docker images

3627e6210b284656b1c01e324fb5c572.png

 c93aef79151146db8d55a90fff580179.png

 2.6 ,删除镜像

  1. 格式:
  2. docker rmi 仓库名称:标签 #当一个镜像有多个标签时,只是删除其中指定的标签
  3. 或者
  4. docker rmi 镜像ID号 #会彻底删除该镜像
  5. 注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。
  6. docker rmi nginx:web

e530f817bc7d411b93b2ab6f0c655514.png

 2.7 上传镜像

636f424e6c4b4cab8e54f3dade61a178.png

 a40b5882dcfb40d29948a3ec2a237466.png

 5c84a715d6384f718b34e981ea411984.png

  1. docker tag nginx:latest skymarch/nginx:ly #添加新的标签
  2. docker login #登录公共仓库
  3. Username:
  4. password:
  5. docker push skymarch/nginx:ly #上传镜像

830b8cbe0fea45e0aceb5dc1c62412bf.png 二,docker 容器操作

1,查看容器

  1. docker ps
  2. 查看运行的容器
  3. docker ps-a
  4. 查看所有容器
  5. ##字段说明
  6. CONTALNER ID:容器的id
  7. image:加载的镜像
  8. command:运行的程序
  9. created:创建时间
  10. status:当前状态
  11. ports:端口映射
  12. names:名称

b4bbc41da1f149cfa8a24c270f123716.png

2,容器创建----docker create

  1. docker create 选项 镜像
  2. 常用选项
  3. -i:让容器开启表标准输入
  4. -t:让docker分配一个伪终端
  5. -d:后台守护进程方式运行
  6. -it:合起来实现和容器的交互的作用,运行一个交互式会话shell
  7. docker create -it tomcat:latest /bin/bash

c6e9b68acdd9410f886ea1228bb43bf8.png

a689bd819e5247a7a73731b0276a5a22.png

 776d84dcd05d4142af071d15da51eb09.png

 3,启动容器

  1. #加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。
  2. #示例1
  3. docker run -itd nginx:latest /bin/bash
  4. #示例2:执行后退出
  5. docker run centos:7 /usr/local/bash -c ls -lh /
  6. #示例3:执行后不退出,以守护进程方式执行持续性任务
  7. docker run -d centos:7 /usr/local/bash -c "while true;do echo lcdb;done"

实例1

docker run -itd nginx:latest /bin/bash
 

3fc4f2ae969f4a538a97f9559ee9d86b.png

 实例2:执行后,退出

docker run centos:7 /usr/local/bash -c ls -lh /

21e9950b3a6342e587bc269d50738f8f.png

 实例3 :执行后不退出,以守护进程方式执行持续性任务

docker run -d centos:7 /usr/local/bash -c "while true;do echo lcdb;done" 
 

d8edc937174247fc813bf2d3e5e9def8.png

 如果在生产环境中,这个容器不能删除,但是磁盘被这个容器执行的爆满,导致其它应用不能用,那怎么处理?

答:可以在/var/lib/docker/containers中可以查看到容器的运行文件,找到死循环的容器,进入到有一个json.log文件,这个文件为日志文件,可以使用echo " " >json.log 这个文件中,可以临时解决磁盘压力的问题。直接删除解决不了。但是过段时间,还是会导致压力大,那怎么处理?
可以写一个脚本,定期crontab -e 执行该脚本,相当于定时清空。

 

  1. #!/bin/bash
  2. logs=$(find /var/lib/docker/containers/ -name *-json.log*)
  3. for log in $logs
  4. do
  5. cat /dev/null > $log
  6. done
  7. ===##或者====
  8. #设置docker日志文件数量及每个日志大小
  9. vim /etc/docker/daemon.json
  10. {
  11. "registry-mirrors":["http://f613ce8f.m.daocloud.io"] //加速器
  12. "log-driver":"json-file", //定义日志格式,
  13. "log-opts":{"max-size":"500M","max-file":"3"} //设置日志文件最大500M,最多3个,如果3个都满了,它会自动删除一个,然后继续装。
  14. }
  15. systemctl damon-reload && systemctl restart docker
  16. #重新加载一下

停止容器

docker stop

bafd36f6dea4400eae3820057a2b84d4.png

 4,进入容器

1,进入容器

  1. docker run -it nginx:latest /bin/bash
  2. exec(容器必须为开启状态)
  3. docker exec -it 容器id /bin/bash
  4. exec和shell是两种运行方式

b7a50a1c0b5940688b04df7a1cf4df52.png

 0bd79cd3434d4b9f8dbc441586d0c759.png

  1. docker run -it 会创建前台进程,但是会在输入exit后终止进程
  2. docker exec -it 会连接到容器,可以向ssh一样进入容器,进行操作,可以通过exit退出容器,不影响容器运行

2,容器导出

  1. docker expore 容器id > 文件名
  2. 实例
  3. docker export 容器id > nginx_a

0e121e209a0b4fafb2192f140114637b.png

 3,容器导入

  1. docker import 导出的文件名字 指定镜像名称
  2. 实例
  3. docker import tomdce cetnos:liss1

9cba89164a93408892db6e9a7d582e54.png

 4,批量删除容器/批量删除镜像

  1. docker rm 【容器id】
  2. #不能删除运行状态的容器,如果要删除,需要加-f强制删除,或者停止后删除
  3. docker rm -f 【容器名称】
  4. #基于容器名称删除
  5. docker rm -f `docker ps -q`
  6. #删除所有运行的容器
  7. docker rm -f `docker ps -aq`
  8. #删除所有的容器
  9. docker ps -a | awk 'NR>=2{print "docker rm "$1}'| bash
  10. #删除所有容器,不包括运行的容器
  11. for i in `docker ps -a |grep -i exit | awk '{print $1}'`;do docker rm -f $i;done
  12. #过滤出关闭状态的容器,并删除

 docker rm 【容器id】
beb7838a6d3745e986190a488038d461.png

 docker rm -f 【容器名称】

5b9516ad78e4426f9fa9cef845800f57.png

  1. docker rm `docker ps -aq`
  2. docker ps -a

fdf81788d27e40a8bc74dbc489ff622a.png

 5,动态查看运行容器资源消耗

docker stats

3cfc7c415c0745f9b3c931c7ef92872b.png

6,查看docker的日志信息

  1. docker logs 【容器ID】
  2. #查看指定容器的日志信息

 三,总结

镜像操作

  1. docker iamges #查看docker镜像
  2. docker inspect 【id号】 #查镜像的详细信息
  3. docker tag nginx:lastest nginx:web #修改docker的标签(见名知意)
  4. #==========删除镜像
  5. docker rmi nginx:web #删除标签为web的nginx镜像(删除标签指定的镜像)
  6. 或者
  7. docker rmi 【镜像id】 #彻底删除该镜像
  8. #注意:如果该镜像一个呗容器使用,正确做法先删除该镜像的所有容器,再删除镜像
  9. #=====导入导出镜像
  10. 存储镜像----》将镜像保存为本地文件
  11. docker save -o 【存储文件名】 【存储的镜像】
  12. docker save -o nginx nginx:latest #实例(保存本地目录)
  13. 导入镜像----》将本地文件导入到容器
  14. docker load < nginx #存入到容器中
  15. docker load -i nginx #也可以存储到容器中
  16. #=====上传镜像====演示上传阿里云和docker hub
  17. 默认上传到docker Hub官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com可以使用docker login命令来输入用户名、密码和邮箱来完成注册和登录。
  18. 在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用docker push命令进行上传。
  19. docker tag nginx:latest ydq/nginx:web #修改docker标签
  20. docker iamges
  21. docker login #登录到docker的hub
  22. docker push 【上传的镜像】 #上传镜像
  23. #=======下载镜像
  24. docker pull nginx #下载nginx镜像

容器操作

  1. ===#先创建后启动
  2. docker create -it nginx:latest /bin/bash #创建容器
  3. docker ps -a #查看所有容器
  4. docker ps #查看运行的容器
  5. docker start 【镜像id】 #启动一个镜像
  6. ========#创建并启动
  7. docker run 【镜像名】 /usr/bin/bash -c ls / #创建一个容器并启动镜像(本地没有将从仓库下载)(运行结束就退出)
  8. docker run -d 【镜像名】 /usr/bin/bash -c "while true;do echo hello;done"
  9. #后台运行(必须要加-d,不然容器无法启动)(会造成cpu100%)
  10. docker run -itd -name test1(名称) 【镜像名】 /bin/bash
  11. #创建容器并持续运行容器(-name:指定名称 )
  12. ======#停止容器
  13. docker stop 【容器id】 #容器id用docker ps -a 查看
  14. =====#容器的进入
  15. docker exec -it 【容器id】 /bin/bash #进入一个启动的容器
  16. docker run -it centos:7 bash #不加-d选项会创建容器后直接进入容器,但是退出容器,容器也会停止
  17. =====#本机文件与容器互传
  18. docker cp ydq.txt 【容器id】:/opt #将本地文件传到容器中的/opt目录下
  19. docker cp 【容器id】:/opt/ydq.txt /home/ydq2.txt #将容器中的文件拷贝到本地
  20. ======#容器的导出导入
  21. docker export 【容器id】 > nginx.tar #将容器导出到本地
  22. cat nginx.tar |docker import - nginx:web #将本地导入到容器
  23. ======#容器的删除
  24. docker rm [-f] 【容器id】 #删除容器(加-f删除正在运行的容器)
  25. docker ps -a |awk 'NR>=2{print "docker stop" $1}'|bash
  26. ......

简单面试题

  1. #1、如果镜像优化?
  2. 有效减少镜像大小(dockerfile 优化方向-》对于部分企业而言,是一种升阶面试题)
  3. #2、怎么看当下有多大号容器,怎么看当下所有容器占用的I/O有多少,占用内存多少?
  4. 使用docker stats命令查看
  5. #3、容器有哪些状态?
  6. Docker容器可以有七种状态:
  7. 已创建(create
  8. 运行(up)
  9. 已暂停(paused)
  10. 重新启动(restarting)
  11. 已退出(exited)正常退出为(exited(0)),人工干预停止会有(exited(137))
  12. 死亡(dead)
  13. 迁移(removing)
  14. #4、overlay2由哪几部分组成 ?
  15. LowerDir
  16. MergedDir
  17. UpperDir
  18. WorkDi

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/593825
推荐阅读
相关标签
  

闽ICP备14008679号