Mac 下 docker安装
http://www.th7.cn/system/mac/201405/56653.shtml
Mac 下 docker安装 以及 处理错误Cannot connect to the Docker daemon. Is 'docker -d' running on this host? 和 dial unix /var/run/docker.sock: no such file or directory
云主机可以选择系统镜像快速创建主机,这比虚拟机更便捷了,我们本地也可以这么做了,因为有了Docker这个东西。它依赖于 LXC(Linux Container),从网络上获得配置好的 Linux 镜像,很容易在隔离的系统中运行自己的应用。也因为它的底层核心是个 LXC,所以在 Mac OS X 下需要在 VirtualBox 中跑一个精小的 LXC(这里是一个Tiny Core Linux,完全在内存中运行,个头只约 24MB,启动时间小于 5 秒的boot2docker) 虚拟机。以后的通信过程就是 docker --> boot2docker --> container,端口或磁盘映射也是遵照这一关系。
理解了上面的关系,开始说说安装过程
1. 安装VirtualBox, 不多讲
2. 安装 boot2docker
brew install boot2docker
curlhttps://raw.github.com/steeve/boot2docker/master/boot2docker> boot2docker; chmod +x boot2docker; sudo mv boot2docker /usr/local/bin
3. 安装 Docker
brew install docker
也可手工安装
curl -o dockerhttp://get.docker.io/builds/Darwin/x86_64/docker-latest; chmod +x docker; sudo cp docker /usr/local/bin
4. 配置 Docker 客户端
export DOCKER_HOST=tcp://127.0.0.1:4243
把它写到 ~/.bash_profile 中,如果你是用的 bash 的话
5. boot2docker 初始化与启动
boot2docker init
完成后就能在 VirtualBox 中看到一个叫做 boot2docker-vm的虚拟机,以后只需用 boot2docker 命令来控制这个虚拟机的行为,启动,停止等。
boot2docker up
启动,boot2docker-vm虚拟机,也能在 VirtualBox 中看到该虚拟机变成 Running 状态
直接执行 boot2docker 可以看到可用的参数
Usage /usr/local/bin/boot2docker {init|start|up|save|pause|stop|restart|status|info|delete|ssh|download}
6. 启动 Docker 守护进程
sudo docker -d
这时可执行
boot2docker ssh,输入密码 tcuser 进到该虚拟机的控制台下

上面看到 Mac 启动了 4243 端口,在 boot2docker 虚拟机中也有 4243 端口,并在 /var/run/docker.sock 上监听。借此说下 docker 的通信过程,dock 命令是与 Docker daemon 在 Mac 上开启的 4243 端口通信,该端口映射到 boot2docker 的 4243 端口上,进而通过 /var/run/docker.sock 与其中的容器进行通信。
所以在执行 docker version 时如果没有启动 Docker daemon 会提示
2014/05/16 06:52:48 Cannot connect to the Docker daemon. Is 'docker -d' running on this host?
如果没有启动 boot2docker 会得到提示
Get http:///var/run/docker.sock/v1.11/version: dial unix /var/run/docker.sock: no such file or directory
本文原始链接http://unmi.cc/mac-os-x-experience-docker/, 来自隔叶黄莺 Unmi Blog
现在开始进入 dock 的操作了,有关于 docker 的命令可以参看这里http://blog.tankywoo.com/docker/2014/05/08/docker-4-summary.html。
1. 下载镜像,并加载启动容器
docker images #现在没有一个镜像
docker pull learn/tutorial #我们把这个拉下来试验,可用 docker search ubuntu 找到所有与 ubuntu 有关的镜像
docker run -i -t learn/tutorial #加载镜像 learn/tutorial 并进到 shell 下,这样就直接连接到该容器中,退出后容器也退了
docker ps #在另一个终端中用这个命令,可以看到运行实例,即容器
现在我们在容器的控制台上 oot@95903c1a2bf7:/#,可以安装一个 apche2, curl 并启动 apache2,来测试下
root@95903c1a2bf7:/# apt-get update
root@95903c1a2bf7:/# apt-get install apache2 curl
root@95903c1a2bf7:/# apachectl start
root@95903c1a2bf7:/# curl http://localhost
<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>
Apache2 正常启动了,在容器内可访问。但现在还无法从 Mac OS X 上对该 apache 服务进行访问,这需要端口映射,有两种方式。不过在端口映射之前还需保存下镜像的修改。
2. 保存镜像
如果前面用 docker run -i -t learn/tutorial 运行的镜像,需要新开一个终端来操作。
在运行该镜像的容器中安装了软件,需要把新的内容保存到该镜像中去,不否下次启动该镜像又恢复成原样
uqiu@localhost ~> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
95903c1a2bf7 learn/tutorial:latest /bin/bash 6 minutes ago Up 5 minutes 80/tcp thirsty_colden
看到容器的 ID,然后执行
docker commit 95903c1a2bf7 learn/tutorial:latest #把当前容器的修改提交到镜像 learn/tutorial 中去
以后再次运行该镜像就有了最新安装的内容了。
2. 端口映射
比如我们现在要做的映射关系是 Mac OS X(50080) --> boot2docker(40080) --> container(80),可以有两种办法
1)
boot2docker ssh -L 50080:localhost:40080
docker run -i -t -p 40080:80 learn/tutorial
root@c79b5070a972:/# apachectl start
然后在 Mac 的浏览器中打开 http://localhost:50080

2)
VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port_50080:80,tcp,,50080,,40080"
docker run -i -t -p 40080:80 learn/tutorial
root@c79b5070a972:/# apachectl start
这是直接修改了 boot2docker-vm 的配置,可以在 VirtualBox 中看到这条配置,配置 nat 命令见http://www.virtualbox.org/manual/ch06.html#natforward. 这样做的好处是可以建立许多的端口映射。

也可以直接在这里编辑端口映射关系
在 Mac 下使用 Docker 除了可用 boot2docker 作为 LXC,还有个替代品VAGRANT。
参考:
1.利用Docker构建开发环境
2.Docker学习笔记之一,搭建一个JAVA Tomcat运行环境
3.Installing Docker on Mac OS X
4.https://github.com/boot2docker/boot2docker
5.Docker 快速入门
Mac 下 docker安装的更多相关文章
- mac下docker安装php链接使用国产数据库驱动
docker下配置php macos系统无法使用神通数据库,所以使用docker来安装php 第一步先安装php docker search php docker pull php:7.1-fpm d ...
- Mac下docker搭建lnmp环境 + redis + elasticsearch
之前在windows下一直使用vagrant做开发, 团队里面也是各种开发环境,几个人也没有统一环境,各种上线都是人肉,偶尔还会有因为开发.测试.生产环境由于软件版本或者配置不一致产生的问题, 今年准 ...
- mac系统Docker安装Redis教程
在之前介绍过mac系统安装docker,以及docker安装mysql的傻瓜式教程,如果有需要参考的朋友,可以看下面文章: MacOS安装Docker傻瓜式教程 mac系统下docker安装配置mys ...
- Mac下Jekyll安装
之前一直用Wordpress,虽然功能强大,各种插件各种bug,如果想弄个主题,折腾得要命.最近改用jekyll+gitHub免费空间.记录一下. 我用的是Mac,所以只讲述Mac下如何安装,Wind ...
- 关于解决Mac使用docker安装SQL server for Linux 中文乱码问题
本人是Mac的追随者,无奈本学期数据库课要求使用Microsoft的SQL server.但是Microsoft并没有发布SQL server for Mac ,笔者使用Google搜索后, 发现可以 ...
- Mac下Tomcat安装与Intellij IDEA配置Tomcat
Mac下Tomcat安装与Intellij IDEA配置Tomcat 一 安装 1 下载地址:https://tomcat.apache.org/download-90.cgi 2 将压缩包解压后移至 ...
- CentOS下Docker安装
CentOS下Docker安装 1.安装: #sudo yum install docker 2.启动并加入开机启动: A.#sudo systemctl start docker B.#sudo s ...
- Mac下Maven安装与配置
Mac下Maven安装与配置 下载maven http://maven.apache.org/download.cgi main->download菜单下的Files 下载后解压在Documen ...
- Mac下删除安装的pkg
Mac下的安装和删除都比windows更加简单清晰,这点在dmg方式下非常明显,但很多时候我们会使用pkg来进行安装,这样的安装想删除就有点麻烦了. 比如,我安装了Golang这个pkg用于g ...
随机推荐
- DOS环境下含包并引用第三方jar的java程序的编译及运行
DOS环境下含包并引用第三方jar的java程序的编译及运行 1.程序目录机构 bin:class文件生成目录 lib:第三方jar包目录 src:源程序文件目录 2.程序代码: 3.程序编译 jav ...
- Jquery插件收集
移动端滚动条插件iScroll.js http://www.cnblogs.com/starof/p/5215845.html http://www.codeceo.com/article/35-jq ...
- python学习第六天
一. 模块介绍1. 模块的定义:用一堆代码实现了某个功能的代码集合 包的定义:本质就是一个目录(必须导游一个_init_.py文件),是用来从逻辑上组织模块的.2. 需要多个函数才能完成(函数 ...
- Java 网络编程(转)
一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可 ...
- win2008修改最大远程桌面连接数
win2008修改最大远程桌面连接数 运行——gredit.msc——管理模板——windows组件——远程桌面服务——远程桌面回话主机——连接——限制连接的数量——修改为999999
- 关于htmlentities 、htmlspecialchars、addslashes的使用
1.html_entity_decode():把html实体转换为字符. Eg:$str = "just atest & 'learn to use '"; echo ht ...
- Excel快捷键
Ctrl 组合快捷键 关键字 说明 Ctrl+PgDn 在工作表选项卡之间从左至右进行切换. Ctrl+PgUp 在工作表选项卡之间从右至左进行切换. Ctrl+Shift+& 将轮廓边框应用 ...
- UML类图总结
前言 类图和序列图是UML中最常用的两种Diagram.我将做详细的总结.在许多书中,或者网站中,在介绍一个系统的子系统的设计时,很多时候,都是给出简单的类图来简述构成子系统的类之间的关系.这足以说明 ...
- cocos3.2版本中的一些新特性
1.设置屏幕分辨率的大小,需要手动添加: 2.去掉了所有CC开头的命名: 3.所有的单例(以前是采用shared开头方法),全部改为getInstance(); 4.cocos3.x以上的版本支持C+ ...
- IP地址格式控制
/// <summary> /// 验证IP格式是否输入正确 /// </summary> /// <param name="ip"></ ...