摘要:

docker是啥就不多讲了,简言之就是更轻量、更牛叉的新一代虚拟机技术。下面是安装步骤: 一、mac/windows平台的安装 docker是在linux内核基础上发展而来的,无法直接运行在mac/windows上,需要借助docker-machine工具,先在mac/windows上建一个linux的虚拟机,然后才能继续玩下去。

docker是啥就不多讲了,简言之就是更轻量、更牛叉的新一代虚拟机技术。下面是安装步骤:

一、mac/windows平台的安装

docker是在linux内核基础上发展而来的,无法直接运行在mac/windows上,需要借助docker-machine工具,先在mac/windows上建一个linux的虚拟机,然后才能继续玩下去。默认内置的虚拟机引擎是Oracle的免费软件VirtualBox,可支持vmware fusion之类的商业软件。

1.1 下载docker toolbox

下载地址:www.docker.com/docker-tool… ,toolbox已集成了docker-machine,docker client,virtualbox之插件,强烈建议在mac/windows上学习docker的同学用这种方式安装docker(注:虽然mac上也可以通过brew install 方式安装,但是没有图形界面,学习起来不方便)。

安装过程很简单,一路Next就可以了,唯一要注意的是最后一个界面:

docker toolbox提供了二种运行方式,终端命令行及图形界面,建议初学者选择图形界面,以降低学习难度。

进入后,会要求先创建一个docker hub的账号,注册账号完成邮箱验证后,就能进入了,docker hub上提供了大量的docker镜像文件(可以理解各种虚拟机的模板,不过建议翻~*墙,否则速度奇慢,甚至打不开),基本上可以满足各种要求,比如:需要一个持续集成的虚拟机,可以直接使用jenkins镜像,需要一个mysql,可以直接使用mysql镜像...

天朝的程序员估计是全世界幸福感最差的程序员,所有外国的好东西,要么不能用,要么龟速,docker hub下载巨慢,第1次接触慢慢等吧,后面会介绍如何使用国内daocloud的代理进行加速。

注:toolbox并没有提供卸载工具,如果出于某种原因需要卸载,可利用github.com/docker/tool… 这个脚本完成,脚本内容如下:

#!/bin/bash

# Uninstall Scriptif [ "${USER}" != "root" ]; thenecho "$0 must be run as root!"exit 2
fiwhile true; doread -p "Remove all Docker Machine VMs? (Y/N): " yncase $yn in[Yy]* ) docker-machine rm -f $(docker-machine ls -q); break;;[Nn]* ) break;;* ) echo "Please answer yes or no."; exit 1;;esac
doneecho "Removing Applications..."
rm -rf /Applications/Dockerecho "Removing docker binaries..."
rm -f /usr/local/bin/docker
rm -f /usr/local/bin/docker-machine
rm -r /usr/local/bin/docker-machine-driver*
rm -f /usr/local/bin/docker-composeecho "Removing boot2docker.iso"
rm -rf /usr/local/share/boot2dockerecho "All Done!"
复制代码

上面的脚本并没有删除virtualbox,如果连virtualbox也要卸载,自行到Application面板里,把virtualbox拖到垃圾箱里即可。  

1.2 下载镜像

先选一个小点儿的镜像感受下,比如:用kitematic/hello-world-nginx测试下nginx

点击New,搜索nginx就能找到,其文档地址为:hub.docker.com/r/kitematic…,通过GUI界面下载的过程,等效于下面的命令:

docker pull kitematic/hello-world-nginx
复制代码

1.3 一些常规操作

下图是KI的GUI界面,打红圈的地方可以直接操作,工具栏里的Start点击一下,把nginx容器运行起来

点击上图中"浏览nginx首页"的按钮,就可以直接在浏览器里看到nginx首页了,很方便吧!工具栏里的STOP/RESTART这些按钮看名字就知道用途了,不再啰嗦。

可以有同学注意到了,浏览器里的地址类似:http://192.168.99.100:32774,如果想知道为啥是这个IP及端口,可以看下Ports页,如下图:

上图的意思是,将docker容器中的80端口,映射到虚拟机的32774端口,那么问题来了,192.168.99.100又是哪里来的?

点击左下角的DOCKER CLI,就能进入docker终端,然后运行:

docker-machine ls 
复制代码

会显示出当前创建的虚拟机(还记得本文最开头说的,mac上不能直接运行docker,必须先创建一个linux虚拟机吧),输出的default就是虚拟机的名字,然后再运行:

docker-machine ip default
复制代码

就能看到virtual box给虚拟机default分配的IP. 继续,点击下图中的Exec,将进入nginx docker容器的bash命令行模式:

输入nginx -V查看配置文件的位置:

可以看出配置文件为/etc/nginx/nginx.conf,用cat命令查看一下:

从上图看,网站的根目录为/website_files,回到KI中,点击Volumns标签

可以看到实际是上把mac本机的~/Documents/Kitematic/hello-world-nginx/website_files 映射到docker容器实例中的/website_files,大家可以尝试把mac本机~/Documents/Kitematic/hello-world-nginx/website_files 中的index.html修改下,再刷新下浏览器中nginx页面,应该马上就能看到效果了。

1.4 docker 命令行的秘密

如果直接在mac本机打开一个终端,然后输入docker ps之类的命令,会提示

Cannot connect to the Docker daemon. Is the docker daemon running on this host?
复制代码

但是从KI界面点击DOCKER CLI进入终端后,再输入docker ps,能正常显示正在运行的容器信息:

原因在于:通过KI进入终端后,会先执行

bash -c "clear && DOCKER_HOST=tcp://192.168.99.100:2376 DOCKER_CERT_PATH=/Users/yjmyzz/.docker/machine/machines/default DOCKER_TLS_VERIFY=1 /bin/zsh"
复制代码

大家在docker CLI终端里,按一下向上的箭头就能发现这个秘密了,把这一行长长的命令换行整理一下,

bash -c "
clear &&
DOCKER_HOST=tcp://192.168.99.100:2376
DOCKER_CERT_PATH=/Users/yjmyzz/.docker/machine/machines/default
DOCKER_TLS_VERIFY=1
/bin/zsh"
复制代码

并没有什么特别之处,就是定义了几个bash变量而已,上面这一段不用死记,可以简化成:

docker-machine start default #启动虚拟机default,如果vm未启动的话,先执行这一行
docker-machine env default #获取default的环境变量
复制代码

第二行执行完以后,会输出:

export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/yjmyzz/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env default)  复制代码

注意最后一行,按提示复制 eval $(docker-machine env default),然后执行一下,bash终端就有docker的上下文环境,然后执行docker ps之类的,就不会报错了。  

类似的,点击顶部工具栏上的EXEC,实际上等效于

bash -c "clear && DOCKER_HOST=tcp://192.168.99.100:2376 DOCKER_CERT_PATH=/Users/yjmyzz/.docker/machine/machines/default DOCKER_TLS_VERIFY=1 docker exec -it hello-world-nginx sh"
复制代码

换行整理一下:

bash -c "
clear &&
DOCKER_HOST=tcp://192.168.99.100:2376
DOCKER_CERT_PATH=/Users/yjmyzz/.docker/machine/machines/default
DOCKER_TLS_VERIFY=1
docker exec -it hello-world-nginx sh"
复制代码

只是多了最后一行,所以上面这一段相当于:

eval $(docker-machine env default)
docker exec -it hello-world-nginx sh
复制代码

二、linux平台的安装(以centos为例)  

注意:centos要求7以上版本,低版本的内核docker不支持。

curl -sSL https://get.daocloud.io/docker | sh
sudo chkconfig docker on
sudo systemctl start docker
复制代码

3行代码就搞定了,其中第1行,是从国内daocloud公司下载的,如果你想从官网下载,可以改成 sudo yum install docker 或 curl -sSL https://get.docker.com/ | sh, 安装完成后,执行:

sudo systemctl status docker
复制代码

查看docker deamon状态,如果有active(running)字样输出,表示docker运行正常.

参考文章:

docs.docker.com/engine/inst…

原文链接

docker学习(1) 安装相关推荐

  1. 【原】Docker学习_安装篇(一)

    CentosDocker安装 来源:https://www.runoob.com/docker/centos-docker-install.html 1.前提条件 目前,CentOS 仅发行版本中的内 ...

  2. Docker学习和安装

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.Docker指引 1.LINUX虚拟机升级,准备 2.安装docker 二.使用步骤 3.docker命令分类 4.Do ...

  3. docker学习4-docker安装mysql环境

    前言 docker安装mysql环境非常方便,简单的几步操作就可以了 拉取mysql镜像 先拉取mysql的镜像,可以在docker的镜像仓库找到不同TAG标签的版本https://hub.docke ...

  4. docker学习5-docker安装tomcat环境和部署war包

    下载tomcat镜像 [root@bogon data]# docker pull tomcat Using default tag: latest latest: Pulling from libr ...

  5. docker学习-1CentOS安装Docker CE

    1 moby.docker-ce与docker-ee docker原是一个开源项目,主要由docker公司维护,2017年年初,docker公司将原先的docker项目改名为moby,并创建了dock ...

  6. [转]Docker学习之四:使用docker安装mysql

    本文转自:https://blog.csdn.net/qq_19348391/article/details/82998391 Docker学习之一:注册Docker Hub账号 Docker学习之二 ...

  7. Docker学习一:Docker简介与安装

    前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...

  8. docker学习(一)在centos7上安装与启动docker

    CentOS Docker 安装 1.Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提条件 目前,CentOS ...

  9. Docker学习笔记 之 Docker安装配置使用

    简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare met ...

  10. Docker学习笔记——(一)docker简介与docker安装

    Docker简介与安装 1. Docker简介 docker是什么? docker架构原理 docker有什么用? docker容器与虚拟机的区别 虚拟机与Docker的体系结构说明: 整体对比: 2 ...

最新文章

  1. 计算机组成定点数的编码,2.1.1 定点数的表示
  2. JDK动态代理和Cglib的动态代理
  3. @ControllerAdvice注解(全局异常捕获)
  4. [小才能]防备误删文件
  5. 命令点无效怎么处理_怎么更好处理闲置包包,买包卖包都要记住这5点
  6. android -support-v4.jar是什么文件
  7. 数据结构与算法--第一个只出现一次的字符
  8. Codeforces Round #709 (Div. 2, based on Technocup 2021 Final Round) 题解
  9. Python入门(05) -- 类
  10. 【华为云技术分享】序列特征的处理方法之二:基于卷积神经网络方法
  11. python 内存管理
  12. ABBYY PDF Transformer+ 给你好看
  13. time模块时间格式转换及faker库数据伪造
  14. 中兴捧月2020年比赛CV方向思路
  15. mysql with,mysql+with
  16. “免费代理IP” 又双叒叕来了,这次无限量、更稳定。(附带使用教程)
  17. 如何查看某台计算机的IP地址 物理地址,显示ip:如何查看电脑ip地址和物理地址(地址)? _ 惠州SEO...
  18. 第四周作业上(2014.3.31)
  19. 渗透之SQL注入-MYSQL常用语法
  20. 典型相关分析及相关知识

热门文章

  1. MCU新趋势—Cortex M0/M3/M4 行业应用主题研讨会
  2. Mobile Widget是一种新的手机应用形式吗
  3. 简易JTAG线缆原理
  4. 19【CTR15】会话兴趣⽹络
  5. PyTorch:tensor-数据处理
  6. #单机只打开一次窗口_单窗口单IP和单机单IP哪个好?
  7. Eclipse-project 重命名问题(如何彻底修改Eclipse工程名),4种解法
  8. 7-4 输出三角形字符阵列 (15 分)
  9. 1046 划拳 (15 分)—PAT (Basic Level) Practice (中文)
  10. python学习笔记:第21天 常用内置模块之collections和time