Docker学习笔记-搭建2048小游戏和nginx服务器

以下实例操作基于rhel7.2

一.Docker 简介

Docker 是一个开源的应用容器引擎,主要利用 linux 内核 namespace 实现沙盒隔离,用cgroup 实现资源限制。
Docker 支持三种不同的镜像层次存储的 drivers:aufs、devicemapper、btrfs ;
Aufs:AUFS (AnotherUnionFS) 是一种 Union FS, 简单来说就是支持将不同目录挂载到同一个虚拟 文 件 系 统 下 (unite several directories into a single virtual filesystem) 的 文 件 系 统 。 Aufsdriver 是 docker 最早支持的 driver,但是 aufs 只是 linux 内核的一个补丁集而且不太可以会被合并加入到 linux 内核中。但是由于 aufs 是唯一一个 storage driver 可以实现容器间共享可执行及可共享的运行库, 所以当运行成千上百个拥有相同程序代码或者运行库时时候,aufs是个相当不错的选择。
Device Mapper:Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机制下,用户可以很方便的根据自己的需要制定实现存储资源的管理策略 ( 详见:http://www.ibm.com/developerworks/cn/linux/l-devmapper/index.html) 。
Device mapper driver 会创建一个 100G 的简单文件包含你的镜像和容器。每一个容器被限制 在 10G 大 小 的 卷 内 。 ( 如 果 想 要 调 整 , 参考 :http://jpetazzo.github.io/2014/01/29/docker-device-mapper-resize/ 。 )
你可以在启动 docker daemon 时用参数-s 指定 driver:docker -d -s devicemapper ;
Btrfs:Btufs driver 在 docker build 可以很高效。但是跟 devicemapper 一样不支持设备间共享存储(文档里是 does not share executable memory between devices)。

在 没 有 aufs 支 持 的 linux 发 行 版 本 上 (CentOS,opensuse 等 ) 安 装 docker 可 能 就 使 用 了devicemapper driver。

二.Docker安装

                 下载docker 的rpm包

                 

                 


三.Docker容器管理

    1.容器(container)和镜像(images)的区别示意图

       要点:容器=镜像+读写层

Docker学习笔记-搭建2048小游戏和nginx服务器_第1张图片

    2.Docker容器文件系统

        Docker学习笔记-搭建2048小游戏和nginx服务器_第2张图片

  

    3.Docker命令解释

# docker run -it --name vm1 ubuntu bash    创建容器
# docker ps -a           查看容器进程
# docker attach vm1      连接容器
# docker top vm1        查看容器进程
# docker logs vm1 查看容器指令输出 -f 参数可以实时查看
# docker inspect vm1 查看容器详情
# docker stats vm1 查看容器资源使用率
# docker diff vm1 查看容器修改
# docker run -d --name vm1 ubuntu bash -c "while true; do echo westos; sleep 1; done"    后台运行
# docker stop vm1 停止容器
# docker start vm1 启动容器
# docker kill vm1 强制干掉容器
# docker restart vm1 重启容器
# docker pause/unpause vm1  暂停/恢复容器
# docker rm vm1  删除容器
# docker export vm1 > vm1.tar   导出容器
# docker import vm1.tar image   导入容器为镜像 image


  4.实例

        (1).搭建2048小遊戲

# docker load -i game2048.tar  #导入镜像
# docker inspect game2048       #此命令用来查看镜像詳細信息
# docker run -d  -p 8000:80 --name game game2048  #运行小游戏,并将容器的80端口映射到本机的8090端库执行

          測試:在本機瀏覽器:172.25.254.50:8090

       

       (2).搭建nginx服務器

[root@wrh-50 2-26-文档-Docker]# docker load -i nginx.tar       #导入镜像
d8bd0657b25f: Loading layer 130.9 MB/130.9 MB
a582cd499e0f: Loading layer 1.024 kB/1.024 kB
f5a1ef78853b: Loading layer 1.024 kB/1.024 kB
605083c53cc5: Loading layer 1.024 kB/1.024 kB
c95d1af3960d: Loading layer 67.97 MB/67.97 MB
0a410ba58143: Loading layer 3.584 kB/3.584 kB
fb6fc13654c9: Loading layer 1.024 kB/1.024 kB
36b0adefb2f3: Loading layer 1.024 kB/1.024 kB
[root@wrh-50 2-26-文档-Docker]# docker images             #查看镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              af4b3d7d5401        23 months ago       190.5 MB

#了解nginx容器的配置:
[root@wrh-50 2-26-文档-Docker]# docker run -it nginx bash    
root@1ee3a2a4fa40:/# find / -name nginx  
/etc/default/nginx
/etc/init.d/nginx
/etc/logrotate.d/nginx
/etc/nginx
/usr/lib/nginx
/usr/sbin/nginx
/usr/share/doc/nginx
/usr/share/nginx
/var/cache/nginx
/var/log/nginx
root@1ee3a2a4fa40:/# cd /etc/nginx/conf.d/    
root@1ee3a2a4fa40:/etc/nginx/conf.d# ls
default.conf                                    #nginx的配置文件
root@1ee3a2a4fa40:/etc/nginx/conf.d# cat default.conf     
[root@wrh-50 2-26-文档-Docker]# docker run -d --name nginxserver nginx       #运行nginx容器并起名为nginxserver   
b10bad72981d6b26c2fbcbf21e43eb35d7daa128b290ab110938e5236571b74c
[root@wrh-50 2-26-文档-Docker]# docker kill `docker ps -q`
b10bad72981d
1ee3a2a4fa40

[root@wrh-50 2-26-文档-Docker]# docker rm `docker ps -aq`
b10bad72981d
1ee3a2a4fa40
[root@wrh-50 2-26-文档-Docker]# docker run -d --name web -p 80:80 -v /tmp/docker/web/:/wrh -v /tmp/docker/vhost.conf:/etc/nginx/conf.d/vhost.conf nginx
4b4b297ed6a00f68b5cc2fdc92d1cb446d28da6f46e5083917759fabae7b3c78
[root@wrh-50 2-26-文档-Docker]# vim /tmp/docker/web/index.html





 

你可能感兴趣的:(运维进阶)