推荐阅读:

java喵:6大面试技能树:JAVA基础+JVM+算法+数据库+计算机网络+操作系统​zhuanlan.zhihu.com

一只Tom猫:都是“Redis惹的祸”,害我差点挂在美团三面,真是“虚惊一场”!​zhuanlan.zhihu.com

现在很多公司项目部署都是采用K8S docker容器方式,出门面试被问的概率极大,如果被面试官问docker相关知识点直接懵逼,那么基本就是被pass了,除非其他方面技术过硬。所以这种相对前沿的技术,就算达不到精通的程度,起码还是要了解基础理论和操作

一.安装docker

Docker要求运行在Centos 7上,要求系统为64位,系统内核版本3.10以上

  • uname -an 查看当前系统版本
  • yum -y install docker 下载安装docker
  • service docker start 启动docker服务
  • docker version 检查docker是否安装成功

当看到下图的信息,就是表示本机docker已经安装成功,很简单

二.镜像操作

创建容器要以镜像为基础,所以先讲下docker镜像的操作

搜索镜像

docker images ll 查看下本机的是否已经有了镜像

目前机器里还没有镜像,去Docker Hub下载(镜像还可自定义,这里就不细说了)

docker search java ,还能指定具体的版本进行下载,

例如:docker search Ubuntu:1.2.5.4,可以进行搜docker Hub 会列出很多镜像

下载镜像

docker pull http://docker.io/nginx 进行下载

下载到本地的镜像要比docker Hub上搜索出来的要大,因为下载过程中自动解压了,在查看镜像列表就有了刚才下载的镜像

列表包含了仓库名,版本标签,镜像ID,创建时间以及所占用的空间

删除镜像

删除没用的镜像docker rmi 镜像id

三.容器的操作

前边我们已经下载好了Nginx的镜像,接下来我们就创建一个只有Nginx应用的容器

docker run -i -t <IMAGE_ID> /bin/bash

-i:标准输入给容器 -t:分配一个虚拟终端 /bin/bash:执行bash脚本

docker run -idt --name container_nginx -p 8080:80  docker.io/nginx复制代码

启动一个使用镜像http://docker.io/nginx,名字container_nginx的容器,-p 8080:80表示将容器的80端口映射到主机的8080端口,这样我们只要访问主机的8080端口就可以访问到容器的服务了。

注意:name前面是两个-, 端口前面有-p, http://docker.io/nginx是镜像名,8080是主机的端口,80是Nginx应用的端口

主机上的一个端口只能映射一个容器端口,不可以多个容器端口对应一个主机端口(如果容器安装的centos类的系统,那么容器端口随便设定,但如果容器内只是单纯的应用,那么容器端口要是应用自身的端口)

这样我们就创建并启动了一个容器!

exit 退出容器
docker ps 查看运行中的容器
docker ps -a 查看运行中和非运行中的所有容器
docker exec -it container_nginx /bin/bash 进入容器
如果容器还未启动 执行docker start container_nginx

进入容器后启动Nginx

whereis nginx 找Nginx的启动目录

[root@iz2zehzeir87zi8q99krk1z ~]# docker start container_nginxcontainer_nginx[root@iz2zehzeir87zi8q99krk1z ~]# docker exec -it container_nginx /bin/bashroot@84683e425116:/# whereis  nginxnginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginxroot@84683e425116:/#  /usr/sbin/nginx 复制代码

此时在浏览器访问 http://51.110.218.9:8080/ 就可以直接访问容器内的Nginx

如果访问不成功,可能是主机端口的防火墙开着,执行下边的命令关闭

/ sbin / iptables -I INPUT -p tcp --dport 8080 -j ACCEPT复制代码

由于我用的阿里云服务器,所以需要在阿里云把8080端口开放

删除容器

容器删除之前先将容器停止

docker stop container_nginx 或者是容器的id

docker rm -f container_nginx 容器删除

docker start 与 docker run 的区别

docker start name 启动一个已经创建的容器

docker run 创建并启动一个容器

docker run 命令其实是 docker create 和 docker start 的命令组合,先执行docker create 创建一个容器 再接着docker start启动

主机和容器文件相互复制

从主机复制到容器 sudo docker cp host_path containerID:container_path从容器复制到主机 sudo docker cp containerID:container_path host_path复制代码

请注意,以上这两个命令都是在主机中执行的,不能再容器中执行

docker cp container_nginx:/usr/local/xin.txt  /usr/local/software/   容器向主机复制文件docker cp /usr/local/xinzhifu.txt  container_nginx:/usr/local/  主机向容器复制文件复制代码

这样一个基础的docker容器就创建完了 。。。。。。。。。。。。

反过来大家再看一看docker的容器与镜像的区别 http://www.cnblogs.com/linjiaxin/p…

那么其实镜像与容器的本质区别并不大,那么镜像可以生成容器 ,容器是否可以做成镜像呢?

docket commit container_nginx  image_nginx:v1复制代码

container_nginx 容器名

image_nginx:v1 自己起一个镜像的名字:版本号


这样做有什么好处呢?

例如:A、B两台机器都想安装redis,A机器上创建容器并在容器中做好redis的一切配置,让后将这个容器docker commit 成镜像image_redis,B机器也想要安装redis,直接用镜像image_redis创建容器就行了,docker就是做这样一劳永逸的事情。

而且传统方式得在每台机器上安装配置redis非常麻烦

四.镜像的导入与导出

镜像压缩打包 (主机上进行操作),有两种方式 docker save 与 docker load 和 docker export 与 docker import

docker save nginx | gzip > nginx_xin_image.tar.gz  将现有的镜像压缩打包docker load -i nginx_xin_image.tar.gz  压缩的镜像解压docker images 进行查看复制代码

docker save 是直接将镜像进行打包 docker save <镜像名>或<镜像id>

docker export container_nginx> nginx_image.tar  cat nginx_image.tar | sudo docker import  - nginx_image:import复制代码

docker export 是直接将容器进行打包 docker export <容器名>或<容器id>

需要注意两种方法配套的,切不可混用。虽然导入导出时没问题,但是在创建容器时候会报错

如果使用import导入save产生的文件,虽然导入不提示错误,但是启动容器时会提示失败,

会出现类似"docker: Error response from daemon: Container command not found or does not exist"的错误。

类似,使用load载入export产生的文件,也会出现问题。

先写到这,文章略显粗糙,希望对您有一点用,学无止境加油!

作者:程序员内点事
链接:https://juejin.im/post/5e38e60d6fb9a07c9f3fcaed
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

docker导入镜像 liunx_docker扫盲?面试连这都不会就等着挂吧相关推荐

  1. docker导入镜像报错:invalid diffID for layer xxx: expected “sha256:xxx“, got “sha256:xxx“(文件被更改过)

    参考文章:Invalid diffID error on loading docker image [root@ubuntu /home/yg/H7 HEOP]4# docker image load ...

  2. linux docker导入镜像,Docker镜像的导入和导出

    相关阅读: 场景描述: 需要在客户现场快速部署应用,东西多,时间短 场景分析: 为了节省时间,使用docker进行快速部署,由于不是内部环境,无法使用内部私有库,于是构建镜像,将镜像导出 解决办法: ...

  3. docker导入镜像报错:open /var/lib/docker/tmp/docker-import-970689518/bin/json: no such file or

    使用docker load导入镜像报错:open /var/lib/docker/tmp/docker-import-970689518/bin/json: no such file or direc ...

  4. docker 导入镜像_官方下一代Docker镜像构建神器 -- BuildKit

    BuildKit是Docker官方社区推出的下一代镜像构建神器--可以更加快速,有效,安全地构建docker 镜像.Docker v18.06已经集成了该组件.BuildKit可用于多种导出格式(例如 ...

  5. docker保存linux镜像,docker导入导出容器和保存加载镜像

    系统环境:centos7.4 版本: # docker -v 1.docker容器导入导出 (1)查看:# docker ps -a (2)导出---export # docker export we ...

  6. Docker的镜像导出与导入与拷贝

    #将镜像存储 docker save nginx:latest > /root/docker-images/nginx.tar#导入镜像文件 docker load --input /root/ ...

  7. Docker 导出/导入镜像

    如果服务器网络不好或者pull不下来镜像,只能在其它网络比较好的机器上pull下来镜像,导出成一个文件,再下载上传到网络不好的机器上,然后再从文件中导出来,这样在网络不好的机器上也能使用docker镜 ...

  8. docker离线安装并导入镜像

    实际项目开发过程中,客户环境大多是全内网环境,无法连接互联网.这样docker就不能yum在线联网安装,所需要的镜像也不能在线pull下载.这时就需要进行离线安装docker及镜像. 1.下载dock ...

  9. Docker - 本地镜像的导出、导入(export、import、save、load)

    Docker - 本地镜像的导出.导入(export.import.save.load)

最新文章

  1. bootstrap的php写在哪里,bootstrap用什么编辑器写
  2. jqueryppt_jquery简单实现幻灯片的方法
  3. 从时分复用、频分复用到码分复用(CDMA)
  4. 课文电子计算机与多媒体减写,课文电子计算机与多媒体关系介绍
  5. 雄狮少年,究竟怎样,我们用实际的数据来一探究竟
  6. Python实现:超分子化学的建模------如何操控客体分子穿过主体分子和计算该过程能量变化(高斯(Gauss)输入文件为例,一键批量处理)
  7. 计算机应用于针灸,中医针灸临床治疗专家系统的研究与实现
  8. 计算机好多个页面,哪些电脑分屏软件好用?好用电脑分屏软件推荐
  9. 禁用浏览器的后退按钮
  10. week8-csp-B(HRZ学英语)
  11. C++ XML操作类
  12. 每日一课 | 数据分析的本质是什么?
  13. 对K8s集群外部ElasticSearch集群监控实战
  14. 2022年忍者必须死3到达无双纪念
  15. Android 时光轴 -记录生活
  16. 超详细淘宝小程序的接入开发步骤
  17. 大数据剖析热点新闻:996、巴黎圣母院、奔驰维权为什么成为本周热搜
  18. 【体验系列】云IDE使用初体验
  19. 提高数据库查询速度的方法
  20. 绿盟科技软件测试招聘,【绿盟科技软件测试面试】面试官很随和-看准网

热门文章

  1. centos7安装oracle12c 三
  2. Android7.0反射类找不到的问题
  3. 02 List、Tuple、Dict、Set
  4. 3.10 十进制转换为二进制
  5. Spring boot 中pom.xml 各个节点详解
  6. C# 文件操作详解(三)---------Directory类
  7. CSS布局教程:用DIV CSS实现国内经典式三行两列布局-CSS布局实例
  8. 新手指导:51CTO微博小技巧
  9. c语言实验四报告,湖北理工学院14本科C语言实验报告实验四数组
  10. Docker 入门(2)技术实现和核心组成