Docker学习一(安装docker并构建一个可ssh登录的镜像)
2016-05-15 15:38
861 查看
为什么使用Docker
Docker应用简介
Docker安装
Docker Hello World
使用SSH连接Container
保存自己的镜像
总结
.
.
.
当然不是这样咯, Docker的好处可以多多通过搜索引擎查询得到, 用过的人都说好。
Docker的镜像可以随意拷贝分发, 需要做的仅仅是可以连接的网络,或者可以拷贝的U盘
物理机上运行十位数的虚拟机将导致性能亏空,而运行百位数的Docker也没有什么大碍
各个系统之间隔离严谨
有别遇传统VirtualBox或者vmware, Docker程序可直接与硬件交互
Docker的运行依赖于镜像
可见下图:
图片地址
一个Image可以理解为一个操作系统,系统上面肯可能只有用户所关心的一个或者几个功能(App)。
其中image作为docker 启动的基础镜像,可以启动多个Container。 而Container的修改又可以提交到Image上。
可见下图:
图片地址
http://docker.widuu.com/installation/mac.html
如果是Mac用户推荐换用其它Linux系统安装而不是通过Boot2docker安装。
如下为通过daocloud安装Docker
需要注意的是:高版本的Docker对Linux内核有要求。
下载完毕之后可查看本地镜像:
如果觉得下载下来的 /daocloud.io/ubuntu 不好看。 还可以通过如下命令重命名:
如上, 通过导出Container, 删除老旧Image, 导入镜像实现了image的重命名
至于Hello World:
通过命令
进入Container:
安装OpenSSH服务。
安装Supervisor并加载ssh服务.
保存退出并将修改提交到image:
使用ssh连接Container:
再通过如下命令导入
可以看出save/load将之前docker的所有操作快照都保存了下来,可以回滚。
而export/import只是将这个镜像给保存了起来,不可回滚。
方便的应用拷贝以及强大的系统隔离,无不处处彰显着Docker强劲的魅力。
Dokcer 命令小示例:
见博客:
http://blog.chinaunix.net/uid-10915175-id-4443127.html
Docker 命令参数以及解释可通过 docker [command] –help调出。
Docker应用简介
Docker安装
Docker Hello World
使用SSH连接Container
保存自己的镜像
总结
为什么使用Docker
因为公司的服务将要部署到基于Docker的应用上。.
.
.
当然不是这样咯, Docker的好处可以多多通过搜索引擎查询得到, 用过的人都说好。
Docker的镜像可以随意拷贝分发, 需要做的仅仅是可以连接的网络,或者可以拷贝的U盘
物理机上运行十位数的虚拟机将导致性能亏空,而运行百位数的Docker也没有什么大碍
各个系统之间隔离严谨
Docker应用简介
Docker可以简单的理解为一个轻量级虚拟机有别遇传统VirtualBox或者vmware, Docker程序可直接与硬件交互
Docker的运行依赖于镜像
可见下图:
图片地址
一个Image可以理解为一个操作系统,系统上面肯可能只有用户所关心的一个或者几个功能(App)。
其中image作为docker 启动的基础镜像,可以启动多个Container。 而Container的修改又可以提交到Image上。
可见下图:
图片地址
Docker安装
Docker的安装可以通过如下地址学习得到:http://docker.widuu.com/installation/mac.html
如果是Mac用户推荐换用其它Linux系统安装而不是通过Boot2docker安装。
如下为通过daocloud安装Docker
curl -sSL https://get.daocloud.io/docker | sh
需要注意的是:高版本的Docker对Linux内核有要求。
# cat /proc/version Linux version 3.10.0-123.9.3.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Thu Nov 6 15:06:03 UTC 2014 # docker version Client: Version: 1.11.1 API version: 1.23 Go version: go1.5.4 Git commit: 5604cbe Built: Wed Apr 27 00:34:42 2016 OS/Arch: linux/amd64 Server: Version: 1.11.1 API version: 1.23 Go version: go1.5.4 Git commit: 5604cbe Built: Wed Apr 27 00:34:42 2016 OS/Arch: linux/amd64
Docker Hello World
通过pull的方式:docker pull ubuntu // 从docker.io下载(墙)
docker pull daocloud.io/library/ubuntu // 从daocloud下载
下载完毕之后可查看本地镜像:
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 2d809b0b71cc 38 minutes ago 295.4 MB nginx latest 9a96d9ef7daf 48 minutes ago 201.3 MB
如果觉得下载下来的 /daocloud.io/ubuntu 不好看。 还可以通过如下命令重命名:
# docker run -it -d daocloud.io/ubuntu:latest /bin/bash # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 19818cef5f63 daocloud.io/ubuntu:latest "/bin/bash" 4 seconds ago Up 3 seconds 22/tcp clever_swanson # docker export 19818cef5f63 > ubuntu_rename.tar # ls ubuntu_rename.tar # docker rmi daocloud.io/ubuntu:latest # cat ubuntu_rename.tar | docker import - ubuntu:rename # docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu rename 62f59d366fa8 7 seconds ago 254.1 MB
如上, 通过导出Container, 删除老旧Image, 导入镜像实现了image的重命名
至于Hello World:
# docker run -it ubuntu:rename /bin/echo "Hello World" Hello World
使用SSH连接Container
注意:boot2docker会有多重问题, 不建议初学者使用
通过命令
docker run -it -d -p 22 ubuntu:rename /bin/bash启动docker的时候会发现无论如何Container也没有绑定22端口并跟主机建立联系。 这是因为这条命令仅仅在于启动了一个镜像生成Container, 并没有模拟一个操作系统的启动。 因此
chkconfig命令或者是在
/etc/init.d/rc.local添加启动项也是没有用处的。
进入Container:
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 82a40248ef4a ubuntu:rename "/bin/bash" 3 minutes ago Up 3 minutes 0.0.0.0:32768->22/tcp berserk_heyrovsky # docker attach 82a40248ef4a // 访问Container
安装OpenSSH服务。
安装Supervisor并加载ssh服务.
# apt-get install supervisor # cd /etc/supervisor/conf.d/ # echo '[supervisord] nodaemon=true [program:sshd] command=/usr/sbin/sshd -D ' > ssh.conf
保存退出并将修改提交到image:
# docker ps -aq // 单人操作,选最上面这个就行。 此处为了页面美观 82a40248ef4a # docker commit 82a40248ef4a ubuntu:rename // 提交变更 # docker rm 82a40248ef4a // 清除多余Container
使用ssh连接Container:
# docker run -d -p 10000:22 ubuntu:rename /usr/bin/supervisord # ssh root@127.0.0.1 -p 10000
保存自己的镜像
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu rename 580188896211 7 minutes ago 254.1 MB # docker save 580188896211 > docker_rename_save.tar # ls docker_rename_save.tar ubuntu_rename.tar
再通过如下命令导入
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE # docker load < docker_rename_save.tar d920f62504fb: Loading layer [==================================================>] 267.6 MB/267.6 MB af7dc432d6f1: Loading layer [==================================================>] 6.144 kB/6.144 kB # docker images REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 580188896211 13 minutes ago 254.1 MB
可以看出save/load将之前docker的所有操作快照都保存了下来,可以回滚。
而export/import只是将这个镜像给保存了起来,不可回滚。
总结
Docker 有着一个爆发式的增长。 开发人员需要只要其基本原理以及基本用法。方便的应用拷贝以及强大的系统隔离,无不处处彰显着Docker强劲的魅力。
Dokcer 命令小示例:
见博客:
http://blog.chinaunix.net/uid-10915175-id-4443127.html
Docker 命令参数以及解释可通过 docker [command] –help调出。
相关文章推荐
- Docker学习系列(三):Ubuntu下使用Docker的基本指令记录及一些注意事项
- Docker学习系列(二):Ubuntu下安装Docker
- docker命令总结
- docker 概述
- CentOS7上安装和使用Docker
- Docker中一些常用的命令
- Docker的一些概念(1)
- Docker的四个基本概念
- 教你怎么半天搞定Docker
- 【Docker 在 windows 10 / windows 8 下安装】
- Docker学习 ----常用操作命令大全及例子[陆续更新中...]
- docker动态映射运行的container端口
- Docker容器的跨主机连接
- (OK) Fedora23—NS3—Docker—MANETs—Testing
- (OK) Docker中使用固定IP——docker run -i -t --rm --net='none'
- docker常用命令记录
- docker学习-简单安装及使用
- Docker 容器十诫
- Docker 容器十诫
- docker入门实战笔记