docker扫盲,面试连这都不会就等着挂吧!
现在很多公司项目部署都是采用K8S docker容器方式,出门面试被问的概率极大,如果被面试官问docker相关知识点直接懵逼,那么基本就是被pass了,除非其他方面技术过硬。所以这种相对前沿的技术,就算达不到精通的程度,起码还是要了解基础理论和操作
一.安装docker
Docker要求运行在Centos 7上,要求系统为64位,系统内核版本3.10以上
uname -an
查看当前系统版本yum -y install docker
下载安装dockerservice 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 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
启动一个使用镜像docker.io/nginx
,名字container_nginx
的容器,-p 8080:80
表示将容器的80端口映射到主机的8080端口,这样我们只要访问主机的8080端口就可以访问到容器的服务了。
注意:name
前面是两个-
, 端口前面有-p
, 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_nginx
container_nginx
[root@iz2zehzeir87zi8q99krk1z ~]# docker exec -it container_nginx /bin/bash
root@84683e425116:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@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的容器与镜像的区别 https://www.cnblogs.com/linjiaxin/p/7381421.html
那么其实镜像与容器的本质区别并不大,那么镜像可以生成容器 ,容器是否可以做成镜像呢?
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产生的文件,也会出现问题。
先写到这,文章略显粗糙,希望对您有一点用,学无止境加油!
WeChat:关注公重号:【程序员内点事】,免费获取2000G学习资料,内含精选面试题,SSM、Spring全家桶、微服务、MySQL、MyCat、集群、分布式、中间件、Linux、网络、多线程,Jenkins、Nexus、Docker、ELK等等免费学习视频,持续更新!
docker扫盲,面试连这都不会就等着挂吧!的更多相关文章
- 你要的 React 面试知识点,都在这了
摘要: 问题很详细,插图很好看. 原文:你要的 React 面试知识点,都在这了 作者:前端小智 Fundebug经授权转载,版权归原作者所有. React是流行的javascript框架之一,在20 ...
- Docker、Dockerfile、Docker镜像、容器这些都是什么鸟?
老生常谈,再再再……普及一下: Docker:最早是dotCloud公司出品的一套容器管理工具,但后来Docker慢慢火起来了,连公司名字都从dotCloud改成Docker. Dockerfile: ...
- .Net程序员面试 每个人都应知道篇 (回答Scott Hanselman的问题)
昨天回答了Scott Hanselman在他清单上关于C#那部分的题目,.Net 程序员面试 C# 语言篇 (回答Scott Hanselman的问题),今天接着回答他在清单上列出的"每个写 ...
- 一些Java中不为人知的特殊方法,学完后面试官可能都没你知道的多!
如果你用过反射并且执行过getDeclaredMethods方法的话,你可能会感到很吃惊.你会发现出现了很多源代码里没有的方法.如果你看一下这些方法的修饰符的话,可能会发现里面有些方法是volatil ...
- 面试HashMap你都扛不住,还想拿到offer?
当我们面试Java开发岗位时,面试官问的频率出现最多的问题,就是这个HashMap,不管是传统型公司还是互联公司,HashMap是必问的,所以作者爆肝整理了HashMap的23个问题以及答案,请查收! ...
- 浏览器执行js代码的机制--对于我们深入了解js有很大的帮助,同时面试时候也都能用得到。
前端小菜又来了,这些天每天工作,晚上学习太累了.趁星期天给自己放个假.写完这个博客就要出去high了.鸡冻.接下来进入正题啦, 你可能要问,我们学习这个有什么用啊?这样我先给大家来个小小的面试题. a ...
- java SSH框架详解(面试和学习都是最好的收藏资料)
Java—SSH(MVC)1. 谈谈你mvc的理解MVC是Model—View—Controler的简称.即模型—视图—控制器.MVC是一种设计模式,它强制性的把应用程序的输入.处理和输出分开.MVC ...
- 面试最后HR都要问一句"有没有什么问题要问我"?
HR最想听到的问题是: 1.询问职位发展方面的问题: (1)比如:这个职位的未来的发展空间如何,公司是如何对员工进行绩效考评的...等等这类问题,可以让HR觉得你是一个有长远目标和规划的人. 2.询问 ...
- Docker 入门 到部署Web 程序- (阿里面试常用的docker命令和优点)
最近阿里的面试官问我Docker是做什么用的,我记得之前360和美团,京东的都问过,但是一直没时间看,最近有时间了,系统的学习了一下Docker,在此做一下记录,方便各位看官学习交流 一.Docker ...
随机推荐
- mysql:创建新库,新表,查看character
创建新库create database wenda; 创建新表drop table if exists `user`;create table `user`( `id` int(11) unsigne ...
- 超简单!pytorch入门教程(四):准备图片数据集
在训练神经网络之前,我们必须有数据,作为资深伸手党,必须知道以下几个数据提供源: 一.CIFAR-10 CIFAR-10图片样本截图 CIFAR-10是多伦多大学提供的图片数据库,图片分辨率压缩至32 ...
- 超简单!pytorch入门教程(二):Autograd
一.autograd自动微分 autograd是专门为了BP算法设计的,所以这autograd只对输出值为标量的有用,因为损失函数的输出是一个标量.如果y是一个向量,那么backward()函数就会失 ...
- EnvironmentAware接口的作用
在SpringBoot中的应用 凡注册到Spring容器内的bean,实现了EnvironmentAware接口重写setEnvironment方法后,在工程启动时可以获得application.pr ...
- XRPC之接口双向调用
一般远程接口调用的服务都是基于客户端主动调用服务端,由服务端来提供相关的接口服务:在新版本的XRPC中引入了一个新的功能,即接口双向通讯,组件提供服务创建客户会话的接口代理并调用客户提供的接口服务.接 ...
- 《带你装B,带你飞》pytest成神之路2- 执行用例规则和pycharm运行的三种姿态
1. 简介 今天北京下的雪好大好美啊!!!哎呀,忘记拍照片了,自己想象一下吧.言归真传,今天还是开始pytest的学习和修炼,上一篇写完后群里反响各式各样的,几家欢乐几家愁,有的高兴说自己刚好要用到了 ...
- Flink入门(五)——DataSet Api编程指南
Apache Flink Apache Flink 是一个兼顾高吞吐.低延迟.高性能的分布式处理框架.在实时计算崛起的今天,Flink正在飞速发展.由于性能的优势和兼顾批处理,流处理的特性,Flink ...
- Logger日志打印规范
首先来看一下比较常用的Logger日志级别(部分未列出): error - 运行期错误日志记录,应该有专门的error日志文件.: warn - 警告信息,如程序调用了一个即将作废的接口,接口的不当使 ...
- css3让元素自适应高度
知识点: viewport:可视窗口,也就是浏览器.vw Viewport宽度, 1vw 等于viewport宽度的1%vh Viewport高度, 1vh 等于viewport高的的1% calc( ...
- STM32F429的特点
STM32F429 内核 Crotex M4 最高主频 180MHZ FPU 有 DSP指令集 有 最大SRAM 256K 备份域SRAM 有 最大FLASH 2MB GPIO最高翻转速度 90MHZ ...