目的
docker的出现,极大的改变了我们的软件发布模式.就好像集装箱对于现代运输业的影响, 可能是我们无法估量的. 那么如何开始呢?
准备工作
首先需要安装客户端
如果是mac机器, 推荐使用官方的dmg方式安装。如果是命令行爱好者,可以使用brew进行安装Boot2dcoker:
brew install boot2docker
安装后, 还需要初始化:
boot2docker init
在初始化结束后, 会提示你设置docker需要的环境变量, 你可以运行提示中的命令,也可以将提示中的环境变量放到你的 /etc/zshrc 或者bashrc中
镜像加速下载1(推荐)
在网易蜂巢的镜像中心 搜索需要的镜像, 镜像的链接会直接显示在网页上, 比如, 我需要一个nodejs
docker pull hub.c.163.com/public/nodejs:6.11.0
镜像加速下载2
国内访问docker的仓库 hub是会时常连接不上. 市面上已经有很多服务商提供镜像加速服务.
boot2docker ssh sudo "sh -c \"echo EXTRA_ARGS=\'--registry-mirror=[http://hub-mirror.c.163.com\'](http://hub-mirror.c.163.com/') >>/var/lib/boot2docker/profile\""
DaoCloud, 阿里云, 网易蜂巢都有相应的免费服务. 但是Dao Cloud是需要自己登入一个系统然后接入镜像, 而阿里云和网易蜂巢都可以通过设置镜像链接的方式完成. 这里推荐使用网易蜂巢, 速度比较快.
为了镜像加速生效, 需要重新启动
boot2docker restart
初使用
- 查找镜像
docker search [字符串]
例如, docker search php
- 拉取镜像
docker pull [镜像名]:[镜像tag]
例如, docker pull doctorq/infer:v1.1
- 查看已经拉取到本地的镜像
dock images
- 运行一个镜像(使用一个container装载一个image)
docker run [参数] [镜像id/镜像名] [初始命令]
常用的参数有:
-d 代表以后台进程的方式运行
-i 代表交互方式
-P 代表container的端口会映射到宿主机器
-t 代表tty
举个例子
在前台,运行一个镜像, 加载成功后运行/bin/bash:
docker run -t -i -P d9f531802b2e /bin/bash
运行后, 我们可以通过docker 的ps命令查看运行状态:
~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
931e4697b9f6 milo/shop "/bin/bash" 6 seconds ago Up 5 seconds 0.0.0.0:32771->22/tcp, 0.0.0.0:32770->80/tcp grave_mestorf
注意, 0.0.0.0:32770->80 表示container的80端口是docker的32770.
通过boot2docker的ip命令得到docker的ip
~ boot2docker ip
192.168.59.103
通过如下的地址就可以访问到container上的服务器:
http://192.168.59.103:32770/
- 删除某个镜像
如果出现docker rmi [镜像id]
则需要删除Error response from daemon: conflict: unable to delete xxxxx (must be forced) - image is being used by stopped container xxxxxx
- 查看container
docker ps -a
- 删除container
docker rm [container id]