docker容器虚拟技术
1.docker适用环境
其实docker本身也没有太多在Windows下花功夫。目前,docker仅支持Linux与Windows企业版、专业版、教育版。ps:家庭版不支持docker,并且win10下可以安装docker-for-windows,这个安装包是
专门适用于win10,安装简单,而对于win7/8则可以使用Docker Toolbox下载地址
2.Windows下无法对docker容器进行端口访问(端口映射的问题)
1.问题详情
在Windows10系统服务器中安装了docker和docker-compose
并尝试在其中运行Nginx服务,映射也做好
问题:在主机的浏览器中,打开localhost:port无法访问对应的Web服务。
2.问题解析
原因:docker是运行在Linux上的,在Windows中运行docker,实际上还是在Windows下先安装了一个Linux环境,然后在这个系统中运行的docker。也就是说,服务中使用的localhost指的是这个Linux环境的地址,而不是我们的宿主环境Windows10。
3.解决办法
启动docker命令行窗口
输入命令:docker-machine ip default
Linux的ip地址,一般情况下这个地址是192.168.99.100
然后在Windows的浏览器中,输入 http://IP:port 即可启用(http://192.168.99.100:8069)
3.docker与VMware不可兼容
在Windows下安装docker,第一步就是要打开Hyper-V(打开控制面板 - 程序和功能 - 启用或关闭Windows功能,勾选Hyper-V),开启win自带的虚拟管理技术。但是若想要使用VMware,则必须关闭Hyper-V,鱼和熊掌不可兼得呀!(′д` )…彡…彡
4.Windows:vmware与hyper-v不兼容,请移除hyper-v角色
1、请移除hyper-v角色。
(1)以管理员身份(win + x)运行命令提示符;
(2)执行命令:bcdedit /set hypervisorlaunchtype off
(3)重启系统,运行vm即可。
2、如果想要恢复hyper启动:
bcdedit / set hypervisorlaunchtype auto
5.docker run后接/bin/sh和接/bin/bash的区别是什么:
比如我们要获取一个nginx镜像,同一镜像存在有不同的tags
/bin/sh命令仅适用于tags带alpine标签的: nginx:1.17-alpine;
/bin/bash命令仅适用于tags不带alpine标识的:nginx:laster,nginx:1.8…
6.docker运行MySQL服务
- 拉取镜像
docker pull mysql:[tag]- 创建并运行容器
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
ps: -p 表示指定访问端口
-e 设置环境变量,或者覆盖已存在的环境变量
-d 表示以守护式方式来运行容器
MYSQL_ROOT_PASSWORD=123456 声明MySQL的用户名为ROOT,密码为123456
- 查看容器是否启动
docker ps- 启动容器
docker start container_id
- 进入容器内部,以命令行交互
docker exec -it container_id /bin/bash
- 登录MySQL
mysql -u root -p 然后在输入密码
- 成功表示已经成功登陆MySQL
7.最强万能公式:数据卷挂载式创建容器
守护式:docker run -di [--privileged=true] -P(或者指定端口 -p 外部port:该容器默认端口) \--name="newNginx" -v /home/chd/Desktop/entwechatapp:/var/www/EntWeChatApp:rw nginx:1.15.7-alpine交互式:docker run -it [--privileged=true] -P(或者指定端口 -p 外部port:该容器默认端口) \--name="newNginx" -v /home/chd/Desktop/entwechatapp:/var/www/EntWeChatApp:rw nginx:1.15.7-alpine含义:a) 以-v /home/chd/Desktop/entwechatapp:/var/www/EntWeChatApp:rw 带rw(read,write)权限来将宿主机与容器进行数据卷挂载b) docker run 以新容器名和端口号以及守护式或者交互式来创建容器
8.宿主机与docker容器权限纠纷
问题描述:
它来了!问题又出现了!哭啦。数据卷挂载时,即使声明了rw权限,在宿主机中创建文件,数据共享后,容器内能够具有正常的rw权限;但在容器内新建了文件后,宿主机就只有只读权限,无法修改文件内容。
解决方案:宿主机的权限不够
在(7)式中的万能公式中添加:docker run ··· --privileged=true ···
9.docker配置nginx的配置文件
我都想把它杀了,部署nginx太多坑了,不过参考了此博文,最终解决了问题,解决方法:
1.创建三个根目录根据情况创建:/docker/nginx/conf www logs
docker run -d -p 80:80 --name=“nginx” --net host -v /docker/nginx/www:/usr/share/nginx/html -v /docker/nginx/logs:/var/log/nginx nginx:1.17.5
2.不对配置文件进行数据挂载即
-v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf 这个
3.进入容器 获取文件
docker exec -it nginx /bin/bash
4.cd /etc/nginx/
(这里主要获取配置文件路径的),然后exit
5.数据拷贝
进入宿主机目录文件 cd /docker/nginx/conf/
将已经运行成功的容器的配置文件拷贝到宿主机的配置文件目录:docker cp 容器ID:/etc/nginx/nginx.conf .(ps:“.”表示拷贝到当前目录)
ps:文件copy成功后 把nginx容器先删除掉
6.创建最终的nginx容器
docker run -di -p 80:80
--name nginx
[--net host] :再思考一下有没有必要写,使用–net = host时,它告诉容器使用主机网络堆栈.因此无法将端口暴露给主机,因为它是主机(就网络堆栈而言).
-v /docker/nginx/www:/usr/share/nginx/html
-v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /docker/nginx/logs:/var/log/nginx
nginx:1.17.5
ps:成功后就代表部署成功
2019-11-29 新增:
这里宿主机的nginx.conf其实是挂载了一个文件,docker是不推荐这样使用的,可以尝试在宿主机上创建目录为:/docker/nginx/conf/nginx.conf/nginx.conf(当前conf文件是一个具体的配置文件,不是一个目录),这样上式就不会出现docker warning,结合此篇文章 。
PS:访问可能会403 因为/docker/nginx/www/ 里面没有index.html放进去就好了
7.权限赋予
挂载成功后,给宿主机上的www目录(或整个文件目录)增加权限,不然一直无法读写:
sudo chmod -R 777 目标目录 :给目标目录赋予最大管理员权限
sudo chmod +/-rwx 文件名|目录 给文件或目录的赋予权限
10.docker配置MySQL,redis教程等,请点击此处链接
11.docker 容器管理工具:portainer使用
12.外部Windows如何访问docker内的容器
1.基本架构:Windows,Dockers,Linux三者关系
2.相关操作
2.1 关闭Linux防火墙:systemctl stop firewalld.service
2.2 查看Linux,Docker的IP地址:ifconfig(区别于Windows的ipconfig命令)
2.3 Windows访问测试:
思想:docker作为一个容器虚拟技术,创建并启动相关的容器服务,并把端口映射到Linux系统中。比如MySQL:docker启动MySQL服务后,并映射了一个外部访问的某端口(比如还是3306)
,则此刻Linux就具有了3306这个一个端口=>外界访问方式应该是:访问虚拟机Linux上与之相绑定docker容器映射出的端口。
2019-11-27 新增:
Linux:
在 windows 系统中访问 linux 中 nginx,默认不能访问的,因为防火墙问题,即我们可以有两种解决方法
(1)关闭防火墙:参考上述相关操作
(2)开放访问的端口号,比如80端口,操作如下:
查看开放的端口号
firewall-cmd --list-all
设置开放的端口号
firewall-cmd --add-service=http --permanent
firewall-cmd --add-port=80(或其它开放端口号)/tcp --permanent
重启防火墙
firewall-cmd --reload
Ubuntu:
Ubuntu与linux对于防火墙的操作存在很大的区别:注意区分
1、查看端口开启状态(inactive表示已经关闭了防火墙)
sudo ufw status
2、开启某个端口,比如我开启的是3306
sudo ufw allow 3306
3、开启防火墙
sudo ufw enable
4、关闭防火墙
sudo ufw disable
5、重启防火墙
sudo ufw reload
6、禁止外部某个端口比如80
sudo ufw delete allow 80
7、查看端口ip
netstat -ltn
————————————————
docker容器虚拟技术相关推荐
- docker容器虚拟化技术_Docker,虚拟机和容器的全面介绍
docker容器虚拟化技术 by shota jolbordi 通过Shota Jolbordi Docker has been a buzzword for tech people for the ...
- Docker容器虚拟化技术---Docker高级实战(DockerFile)2
Docker容器虚拟化技术-Docker高级实战(DockerFile) DockerFile是一个文本格式的配置文件,用户可以使用DockerFile来快速创建自定义的镜像. 1. DockerFi ...
- Docker容器化技术教程,24小时快速入门
Docker介绍 Docker简介和安装 Docker是什么 为什么使用Docker 和普通虚拟机的对比 打包.分发.部署 小结 Docker部署的优势 Docker通常用来做什么 重要概念:镜像.容 ...
- docker和虚拟技术比较
文章目录 1,之前的虚拟技术 2,docker容器化技术 3,开发和运维的春天 4,企业级应用 1,之前的虚拟技术 虚拟机(virtual machine)就是带环境安装的一种解决方案. 它可以在一种 ...
- 实战:Docker容器虚拟化技术(使用DockerFile构建镜像并搭建 swarm+compose集群)5
实战:Docker容器虚拟化技术 (使用DockerFile构建镜像并搭建 swarm+compose集群)5 要求: 使用DockerFile构建镜像并搭建 swarm+compose集群 在Swa ...
- Docker容器虚拟化技术---Docker运维管理(Docker Compose)4
Docker容器虚拟化技术-Docker运维管理(Docker Compose)4 Docker Compose 通过前面的讲解我们知道使用一个Dockerfile模板文件,可以很方便地定义一个单独的 ...
- Docker容器虚拟化技术---Docker运维管理(Swarm集群管理)3
Docker容器虚拟化技术-Docker运维管理(Swarm集群管理)3 Swarm集群管理 docker swarm是docker官方提供的一套容器编排系统,是Docker公司推出的官方容器集群平台 ...
- 万字长文带你探究 Docker 容器化技术背后的黑科技
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 容器的优势 传统模式的部署,直接将多个应用运行在物理服务器上,如果其中一个应用占用了大部分资源,可能会导致其他应用 ...
- Docker 容器化技术(介绍)
1 虚拟化技术 因为 Docker 的容器化技术是虚拟化的一种体现形式,因此 我们要学习容器化技术之前,需要先来了解一下什么是虚拟化技术: 1.1 什么是虚拟化技术 在计算机中,虚拟化(英语:Virt ...
最新文章
- 详解linux下auto工具制作Makefile源码包(制作篇)
- python 取反_自从用了这招pandas 空数据处理方法,python编程速度提升了不少
- 科技业务同比增长超20%,中国平安“金融+科技”成了吗?
- java中数组的返回值是什么类型_Java数组也是一种数据类型
- packetbeat oracle,packetbeat 无法启动
- 攻击者利用的Windows命令、横向渗透工具分析结果列表
- 图解设计模式,看完秒懂!!!
- mscomm32.ocx 注册 和 web 调用案例
- 阿里云datav看板然后设置密码
- html二级网页命名规范,(网页)设计命名规范
- m4a怎么转换mp3格式?详细的步骤
- php网站banner图片切换,最简单的Banner轮播左右切换效果代码及实现思路(附带源码)...
- 海南化学分析实验室设计工艺归纳
- Hadoop2.0高可用集群搭建【保姆级教程】
- 自定义SmartRefreshLayout 下拉刷新Header(水浪+齿轮动画)
- Excel 数据爬取
- SAP 供应商合作伙伴功能设置
- 云服务器的快照功能是什么?
- C语言(算术、左移、赋值、位、sizeof计算大小、取反~、强制转换、条件)操作符..
- 视觉激光雷达信息融合与联合标定
热门文章
- 泰勒公式求e值——c语言算法实现
- @Autowired vs @PersistenceContext for EntityManager bean
- 算术移位和逻辑移位详解
- 基于STM32F103的USB学习笔记4 - 初始化
- maya 白天室内灯光_maya 灯光怎么打?
- 【Day1】数组、704二分查找、27移除元素
- win10修改系统时间(2038,2050)重启后桌面一直刷新
- C#区域性语言(CultureInfo)与资源本地化(WINFORM,多线程,原理可适用于网络开发)
- 做到这四点,团队必定飞速成长
- 磁盘阵列柜性能介绍(一)