Docker 初体验 (1) - 环境搭建,入门操作

Docker 是当下非常流行的容器平台。什么是容器?我们可以这样理解:容器是一个为独立运行应用程序提供的一个沙箱环境。docker 相当于轻量级的虚拟机,把应用独立为一个沙箱,这个沙箱运行的应用包含了应用所需要的所有依赖配置环境。docker 它也是建立在一个物理机上的,区别于传统的虚拟机,虚拟机要部署 N个 web 服务器的话,需要虚拟出 N个 OS,而采用 docker 部署N个 web 服务器的话,则只需要虚拟出 N 个容器(沙箱)就可以了,同样的在 docker 的容器环境运行的各个应用,都是互相隔离的。Now,我们大概知道 docker 的优势在哪了:快速的应用服务部署、无需再重复安装配置应用环境;相比于虚拟机,具备快速的应用启动能力。

废话不多说,纸上谈兵是没用的,先安装体验玩一波才会更深刻理解 docker 的魅力。

Homebrew 安装 docker

1
brew cask install docker


brew cask 安装完后,将会自动移动到 launcher 里

启动 docker 配置镜像加速

首先我们需要先配置一下阿里云的镜像加速服务,要不然待会下载镜像会慢的要死。

1、先到阿里云申请一个加速服务 https://cr.console.aliyun.com/

2、打开 docker 应用,选择 preference > Daemon,在 Registry mirrors 下面添加刚刚阿里云申请的加速地址。然后 apply & restart 就可以了。

docker 小试牛刀

常用命令:

1
2
3
4
5
6
7
8
9
docker --version 	// 查看 docker 当前安装版本
docker info // 查看 docker 当前状态信息
docker pull // 拉取(下载) docker 镜像
docker run // 运行 docker 镜像
docker ps // 查看 Containers 中的容器运行信息
docker images // 查看本地主机上的所有镜像列表
docker stop // 停止 docker 容器
docker rm // 从 Containers 中移除 docker 容器
docker rmi // 删除 docker 镜像

下载 docker 镜像

1
docker pull mysql/mysql-server:latest

启动 docker 镜像(创建容器)

1、启动刚刚下载的 mysql 镜像

1
2
// 创建一个 name 为 mysql ,本地端口号为 3306 的容器
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql/mysql-server:latest

2、启动的时候 image 不存在(还没下载)

1
2
3
4
// 创建一个 name 为 webserver 的容器
docker run -d -p 80:80 --name webserver nginx
// 上面命令的 80:80,
// 左边表示本地将采用80端口运行该镜像,右边80则是容器暴露的端口。

如果本地没有找到该镜像,则 docker 会从镜像仓库中 pull 到本地,然后运行起来。

在浏览器中直接输入 localhost:80,则可以看到 Nginx 正常运行了。

查看 docker 容器运行情况

1
docker ps -a      // 查看所有容器的进程状态

status 中,前两个 UP 的表示是正在运行的,Exited 表示是已经退出的了。
可以看到,MySQL 和 Nginx 都已经启动了。

由于屏幕截图,往右拉还有一个 names 的字段

关闭 docker 容器

可以通过 CONTAINER ID 或者 NAMES 来关闭容器

1
docker stop webserver         // 停止 name 为 webserver 的容器


1
docker stop 1792599a5922      // 停止 CONTAINER ID 为 1792599a5922 的容器

删除 docker 镜像

1、先从 Containers 中删除一个容器,通过 docker ps -a 可以查看容器集合里的所有容器。

1
docker rm 4f937d2c3312      // 删除 CONTAINER ID 为 4f937d2c3312 的容器

从下图可以看到,容器 8140 已经从 Containers 中移除了。

2、执行 docker images ,查看所有镜像,通过 IMAGE ID 删除该镜像。

  • 确保该镜像已经从 Containers 中移除,否则将提示该镜像还在被使用错误
1
docker rmi 8140d0c64310      // 删除 IMAGE ID 为 8140d0c64310 的镜像

从下图可以看到,镜像 centos 已经被删除了。

参考

【1】Get started with Docker for Mac https://docs.docker.com/docker-for-mac/#explore-the-application-and-run-examples
【2】docker 下的 Mysql 镜像的使用方法 http://blog.csdn.net/stemq/article/details/52934795
【3】深入浅出Docker(一):Docker核心技术预览 http://www.infoq.com/cn/articles/docker-core-technology-preview
【4】Docker — 从入门到实践 https://yeasy.gitbooks.io/docker_practice/content/

docker