跳至主要內容

十、Docker start 启动容器

安图新大约 3 分钟云原生Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源

Docker 可以让开发者打包它们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化

Docker 使用完全使用沙箱机制,两个容器之间不会有任何接口 (这个有点像 iPhone 的 app ) ,更重要的是容器性能开销极低

学习前提

在继续阅读之前,我们希望你对 Linux 有一些基本的了解,包括

1、 会使用 Linux 常用的命令;
2、 知道大部分的 Linux 常识,比如终端serviceip用户等;
3、 熟练使用 Ubuntu 或者 Centos 或者 MacOS 种的一种昂;

如果你对这些知识还是一知半解,可以访问我们的 Linux 基础教程 先进行一些简单的了解

Docker 的应用场景

1、 Web 应用的自动化打包和发布;
2、 自动化测试和持续集成、发布;
3、 在服务型环境中部署和调整数据库或其他的后台应用;
4、 从头编译或者扩展现有的 OpenShift 或 CloudFoundry 平台来搭建自己的 PaaS 环境;

Docker 的优点

1、 简化程序;

Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化
Docker 改变了虚拟化的方式,使开发者可以直接将自己的成果放入 Docker 中进行管理
方便快捷已经是 Docker 的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成

2、 解决运维配置噩梦;

在没有 Docker 之前,每一台机器,每一个要用到的依赖,几乎都要重新配置一遍
比如新增一台 MySQL 数据库,就要从头开始配置所有环境
有了 Docker 之后,只需要从仓库里把之前的 MySQL 镜像拉出来,直接使用

3、 节省开支;

使用 Docker ,可以在一台电脑上部署多个服务,多个应用,从而充分榨干每一滴性能
同时,又不用担心多个应用之间出现相互访问的情况

相关链接

Docker 官网: http://www.docker.comopen in new window

Github Docker 源码: https://github.com/docker/dockeropen in new window

对于一个已经是停止状态的容器,我们可以重复使用它们,而再次启动它们的命令就是 docker start

docker start <container_id>

我们先使用 docker ps -a 命令看一下所有容器的状态

[root@www.hotmindshare.com ~]# docker ps -a
CONTAINER ID  ...  STATUS                         ...
cf38bec0c26f  ...  Exited (0) 2 seconds ago       ...
e66458d65564  ...  Up 23 minutes                  ...
4558b3b54da0  ...  Exited (137) About an hour ago ...
e08201b591cd  ...  Exited (0) About an hour ago   ...

找到那条已经停止的,且用来输出 Hello World 的容器,在我这里是 cf38bec0c26f

我们先使用 docker logs 命令查看容器 cf38bec0c26f 的日志

[root@www.hotmindshare.com ~]#  docker logs cf38bec0c26f
Hello world

然后我们就可以使用 docker start 重启这个容器 cf38bec0c26f

[root@www.hotmindshare.com ~]# docker start cf38bec0c26f
cf38bec0c26f

docker start 返回的是启动的容器的 ID,至于容器的日志,会统一保存到 Docker logs

然后我们就可以使用 docker logs 命令查看刚刚容器的输出

[root@www.hotmindshare.com ~]#  docker logs cf38bec0c26f
Hello world
Hello world

更多docker start 命令使用方法,可以访问 docker start 命令

docker start vs docker run

docker rundocker start 看起来好像都是启动一个容器,但它们是有本质区别的

1、 dockerrun从一个镜像启动一个容器,多次运行同样的命令会创建多个容器;
2、 dockerstart从一个容器 ID 启动一个容器,多次启动同一个容器的 ID 的结果都一样;

上次编辑于:
贡献者: Andy