想实践一下Docker,手头是个windows电脑,由于想在linux下实践,所以第一步是装虚拟机,我用的是VMware Workstation 12 Player,虚拟机文件用的是ubuntu-16.04-desktop-amd64,装好ubuntu之后,如果想在windows和ubuntu之间方便的传递文件,可以在虚拟机设置中添加共享文件夹,步骤如下图:

这样设置后记得还要安装VMWare Tools,具体的做法是在vm菜单中选择“管理”->安装VMWare Tools,再进入ubuntu,在光驱中找到对应的tar.gz文件,复制到一个新建的目录下解压开,执行解压后的目录中的vmware-install.pl,安装成功后重启ubuntu,在/mnt/hgfs目录下就会发现添加的共享文件夹了。

以上的基本工作完成后,可以开始安装Docker了,在ubuntu中打开控制台,先执行一次update更新:

sudo apt-get update

执行以下命令安装Docker:

sodu curl -sSL https://get.daocloud.io/docker | sh

安装成功的信息如下:

执行docker -v,输出如下:
Docker version 17.03.0-ce, build 60ccb22

由于是自己实践,非生产环境,建议用root身份来操作,否则要输入sudo前缀挺麻烦;

用命令sudo passwd root重新设置root的密码;

设置完毕后执行"su -"再输入root密码,切换到root用户身份;

执行docker images,看看本地已有的docker镜像:

空空如也!

接下来我们安装和运行一个nginx服务,来初探docker的镜像和容器:

下载镜像:

 docker pull daocloud.io/library/nginx
下载完毕后,执行docker images可以看到下载结果:

启动:
执行启动的命令是

docker run --name nginx001 -idt -P -v /mnt/hgfs/common_dir:/usr/Downloads daocloud.io/library/nginx
下面来解释一下这一行命令:
run 根据指定的镜像文件启动一个容器
--name nginx001 启动后这个容器的名字
-d: 后台运行,并返回ID
-i: 互模式运行容器
-t: 为容器分配一个伪输入终端
-P: 随机映射一个端口至容器内部开放的网络端口
-v /mnt/hgfs/common_dir:/usr/Downloads:指定共享文件目录,进入容器后,容器的/usr/Downloads实际上就是ubuntu的/mnt/hgfs/common_dir目录了,这样传文件方便
daocloud.io/library/nginx:镜像文件名称,就是刚才下载的那个

执行docker ps可以看到已经启动的容器:

容器已经启动了,赶紧在ubuntu下打开浏览器,再输入localhost试试吧,咦?访问失败了,unable to connect!

执行docker ps命令,可以看到这么一段信息:0.0.0.0:32769->80/tcp,这里的意思是docker容器的80端口映射到的是ubuntu的32769端口,那么我们在unbuntu的浏览器中只要访问localhost:32769,就能访问到docker容器80端口了,试试吧,果然熟悉的welcome页面终于出现了:

接下来进入容器去看看,执行命令

docker exec -it nginx001 /bin/bash
下面来解释一下这一行命令:
exec 进入容器
--name nginx001 启动后这个容器的名字
nginx001: 容器名字,也可以是id
/bin/bash: 进入容器后执行的命令

现在我们已经进入容器了,执行命令cat /etc/issue看看系统情况

原来这个容器的镜像是Debian系统的,接下来我们尝试修改nginx的配置,改之前先回顾一下共享文件路径,我们从windows到vm的ubuntu,再从ubuntu到docker容器,都设置过共享文件路径的,依次是:

E:\work\vm_share\common_dir -> /mnt/hgfs/u16 -> /usr/Downloads

也就是说三个系统下面,各自的目录其实是同一个目录,在docker容器中执行cp /etc/nginx/nginx.conf ./,回到windows的E:\work\vm_share\common_dir目录下就会发现nginx.conf文件。

在windows下打开nginx.conf这个文件,找到这一行include /etc/nginx/conf.d/*.conf;,在这一行前面加个“#”注释掉这一行配置,然后在这一行下面增加如下语句:

server {server_name localhost;listen 80 default_server;listen [::]:80 default_server ipv6only=on;location / {root html;index welcome.html;}}

这个配置是增加一个目录用来响应http请求,并改写默认index页面以及文件目录的路径,写完并保存后,回到docker容器,执行cp /usr/Downloads/nginx.conf /etc/nginx/,用改好的文件覆盖docker容器中的nginx配置文件;

在docker容器的/etc/nginx/目录下新建一个html目录,进入该目录后执行echo “abcdef” > welcome.html,这样就新建了一个内容为abcdef的html文件;

执行命令service nginx reload来重新加载nginx的配置信息,这时候再去ubuntu的浏览器上重新打开localhost:32769,可以看到默认页面已经改变了:

以上就是初步体验docker的过程,如果想关闭容器,可以执行docker stop nginx001命令来停止,想再次启动该容器,可以执行docker start nginx001。

到此,Docker的准备,安装和初体验就结束了,后续我将结合通常的java开发和部署工作,在Docker上做更多的尝试,第一次写博客,如果大家发现其中的错误的漏洞,欢迎您的指正,期待在探讨中共同进步。

欢迎关注我的公众号

Docker的准备,安装,初体验相关推荐

  1. Docker深入浅出系列 | 容器初体验

    Docker深入浅出系列 | 容器初体验 教程目标 Docker已经上市很多年,不是什么新鲜事物了,很多企业或者开发同学以前也不多不少有所接触,但是有实操经验的人不多,本系列教程主要偏重实战,尽量讲干 ...

  2. Rasa课程、Rasa培训、Rasa面试系列之:Rasa 3.x部署安装初体验

    Rasa课程.Rasa培训.Rasa面试系列之:Rasa 3.x部署安装初体验 Rasa 3.x部署安装 进入Ananconda系统,新建rasa虚拟环境 conda create --name in ...

  3. Windows Server 2012系列之一安装初体验

    微软于2012年9月4日上午8:00(美国时间)发布新一代产品Windows Server 2012,据微软介绍,Windows Server 2012提供了300项新功能,包含新一代Hyper-V ...

  4. 阿里云服务器docker安装初体验

    安装社区版Docker(docker-ce) 1.运行以下命令,添加docker-ce的dnf源. dnf config-manager --add-repo=https://mirrors.aliy ...

  5. visual studio for mac的离线安装初体验

    微软2016 Connect 大会发布了visuo studio for mac的pre版本,由于工作原因,现在工作环境是mac,虽然开发现在是在用python,但一直关注着.net的发展,于是自己很 ...

  6. Docker 1.12.1初体验

    早就知道docker1.12有很大的改变,仰慕也是很久了,十一期间,抽了点时间(其他时间都在玩)根据官方文档试了下,还是挺好玩的,很多功能也很实用(服务发现.自动伸缩等),下面就是我的操作步奏,大家一 ...

  7. Node.js 发展史介绍与安装初体验

    点击上方蓝字关注我们 关于作者 作者简介: 公众号:Flowlet 最近打算做一个个人的Blog系统,用于技术交流与个人主页展示,起初打算通过Wordpress+VPS部署在云上,后来看了下腾讯云CV ...

  8. Visual Studio 2010 RTM版安装初体验

    Visual Studio 2010 RTM版已经发布来两天了,相信很多同仁都已安装.本次的发布可谓千呼万唤始出来,经历了Bata1, Bata2, RC这一系列的版本.笔者是从RC版开始体验的,相信 ...

  9. Meego安装初体验

    Meego1.0于2010-5-25发布了,赶紧来体验一下. 由于Meego SDK采用Xephyr 作为虚拟器,所以要在intel CPU的Linux发行版上运行,例如Fedora 11, Ubun ...

  10. 华为模拟器eNSP安装初体验

    昨天发了一篇EVPN的文章,近期要研究一下EVPN,但是华三的模拟器HCL不支持EVPN,没有办法,只能倒戈转向华为的eNSP了. eNSP(Enterprise Network Simulation ...

最新文章

  1. 关于网站调用在线翻译api实现翻译功能
  2. 信号处理常用算法介绍
  3. matlab 多个波段,MatLab读取ENVI图像统计多波段图像信息
  4. superset出现A valid API access token is required to use Mapbox data
  5. 和华为杯_2019全国大学生物联网设计竞赛(华为杯)拉开序幕
  6. nodejs上传图片并展示
  7. git 新建服务器的版本以及项目的用户
  8. 在浪漫的巴黎,他们举行了世界上首个无人机节
  9. 山西2019数据结构专升本_喜讯!临汾这个学院专升本通过率创新高
  10. 【元胞自动机】基于matlab元胞自动机模拟小区车流量【含Matlab源码 358期】
  11. 如何制作自己的网课网站 需网课查课插件
  12. linux鼠标指针隐藏,触摸屏鼠标指针隐藏消失方法
  13. php 微信代扣开发步骤,PHP实现微信支付(jsapi支付)流程步骤详解
  14. “衣带渐宽终不悔,为伊消得人憔悴”的赏析
  15. android killer反编译闪退,Android Killer反编译失败
  16. iOS UIWebView的基本用法
  17. RPG游戏Demo学习笔记一
  18. APP逆向案例之(一)过 app 更新提示
  19. 数据结构——二叉树遍历和常见问题
  20. // 程序员面试宝典第三版34页,面试题2 ,结果很诡异,指针类型的转换本来意味着指向数据类型的转换,但是似乎不尽然是。

热门文章

  1. 我的世界暮色森林java下载_我的世界暮色森林1.12下载_我的世界1.12暮色森林单机游戏下载...
  2. Android篇 | 爱奇艺App启动优化实践分享
  3. 距离放假还有一周,送个机械键盘吧
  4. Android 性能优化 - 彻底解决内存抖动
  5. 魅族root教程搜索感悟之——直接回答问题
  6. 蒸妙发展的奇妙“5+N”故事擅长将合作方变股东
  7. oracle数据库实时数据同步
  8. 天道好轮回,苍天饶过谁
  9. MES系统费用价格一览,如何优化采购成本?
  10. htop 简介——新