Docker系列之(一):10分钟玩转Docker
Docker系列之(二):使用Mesos管理Docker集群(Mesos + Marathon + Chronos + Docker)
Docker系列之(三):Docker微容器Alpine Linux
Docker系列之(四):Win10上运行Docker
Docker系列之(五):使用Docker Compose编排容器
docker入门与实践
用Mesos管理Docker
Docker微容器+微服务
- docker是一个开源的软件部署解决方案;
- docker也是轻量级的应用容器框架;
- docker可以打包、发布、运行任何的应用。
- Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker系统有两个程序:docker服务端和docker客户端。其中docker服务端是一个服务进程,管理着所有的容器。docker客户端则扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。大部分情况下,docker服务端和客户端运行在一台机器上。
docker version
docker search tutorial
docker pull learn/tutorial
docker run learn/tutorial echo "hello word"
docker ps -l
docker inspect idNumber
docker rm container
docker rmi image
安装
Docker是基于Linux 64bit的
因为Docker守候进程依赖于linux内核,所以无法直接在windows环境中直接运行Docker。解决方案就是使用docker-machine命令创建一个Docker虚拟机并附加到它上面。这个Docker虚拟机来为你的windows系统提供Docker服务。
这个Docker虚拟机专门为windows运行环境优化过,轻量级,完全在内存中运行,很小,下载不超过24M,5秒那可以启动。
which curl
ubuntu安装文档
CentOS 6.5安装Docker(内核升级问题)
centos6.5删除docker
yum list installed | grep docker
yum -y remove docker-io.x86_64
rm -rf /var/lib/docker/
- web项目docker化的两种方法:
第一种:启动镜像后进入容器中操作,将需要的软件或者项目移动到容器中,安装或者部署,然后退出即可
第二种:编写dockerfile,将需要的镜像一层层叠加上去,比如我们要部署项目,可以先下载一个ubuntu基础镜像,然后叠加jdk,然后tomcat,然后项目
第二种比较体现docker的镜像叠加特性,第一种到最终只有一层镜像.
- dockerfile
#Version 0.1
# 基础镜像
FROM ubuntu:latest
# 维护者信息
MAINTAINER test@test.com
#指定容器运行的用户
USER test
# 镜像操作命令
RUN apt-get update && apt-get install apache2 && apt-get clean
#指定后续命令的执行目录
WORKDIR /var/www/html
#对外连接端口号
EXPOSE 80
#设置容器主机名
ENV HOSTNAME shiyanloutest
#向镜像中增加文件
COPY simplecloudsite /var/www/html
#ADD 命令支持添加本地的tar压缩包到容器中指定目录,压缩包会被自动解压为目录,也可以自动下载URL并拷贝到镜像
ADD html.tar /var/www
ADD http://www.shiyanlou.com/html.tar /var/www
#挂载数据卷
VOLUME ["/var/log/apche2"]
#设置容器内的环境变量
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apche2
ENV APACHE_PID_FILE /var/run/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOCK_DIR /var/lock/apche2
#CMD如果只有一个命令,那如果我们需要运行多个服务怎么办呢?最好的办法是分别在不同的容器中运行,通过link进行连接,比如先前实验中用到的web,app,db容器。如果一定要在一个容器中运行多个服务可以考虑用Supervisord来进行进程管理,方式就是将多个启动命令放入到一个启动脚本中
# 容器启动命令
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
docker build -t test001:0.1 .
docker run -d -p 8080:8080 --name tomcat2 tomcat2
- docker attach 只要用于重新登录一个正在执行的容器,如果容器没有在运行那么先start.
docker stop
docker kill