Docker改变了我们对于软件的部署和运维模式:
认识Docker
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个容器中,然后发布到任何支持Docker的操作系统中;例如:你可以在Windows主机上创建一个基于Cent OS某个版本的容器,容器里面安装好了你的应用程序所需求的服务(如:Nginx、Python)及你的应用,容器内部可以看作一个独立的操作系统。
Docker可以运行在物理主机或者虚拟机中,每个容器带来的额外消耗很小,可以在一台机器上同时运行很多Docker容器。
使用Docker
安装完成后就可以运行一个docker容器了,网上有大量定制好的docker image可供使用,下面命令从docker仓库中下载官方建立好的mysql image,并为此image建立容器并运行
# docker run -it --restart=always -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 mysql /bin/bash
要正式使用MySQL还需要多做一些配置,请参考:Docker中使用MySQL
构建Docker应用
除了网上已经打包好的Image可使用外,大部分时间我们要为自己的应用构建Image并运行。
这些都从『编写Dockerfile』开始
操作管理容器
- Docker常用操作 镜像的获取、删除,容器的启动、停止、及删除等操作
- Docker容器迁移
- Docker修改容器参数 容器已经建立如果不想删除容器重新建立,只是想修改一些参数,如果启动配置等。
- Docker日志配置
Docker应用模式
- Docker部署模型-小型应用
- Docker容器间互相访问 使用link或者user-defined network实现容器的互访。
- Docker外部数据及卷
- Docker私有仓库,Docker目前主要服务器没有再国内,所以使用时需要从国外下载镜像,可以自己搭建私有仓库,将常用的镜像保存到私有仓库,方便使用。
- 使用Docker Compose管理多个容器 爱死它了,有了它管理一组相关的服务太简单了。
常用Docker镜像配置
Jenkins
create : 建立jenkins容器,将数据挂载在外部目录,并设置正确的时区。
1 2 3 4 5 6 7 8 9 10 11 12 | #!/bin/bash basepath=$(cd `dirname $0`; pwd) mkdir -p data chown -R 1000.1000 data chmod 755 data docker run \ --name jenkins \ --restart=always \ -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \ -d -v $basepath/data:/var/jenkins_home jenkins |
update:更新容器
1 2 3 4 5 | #!/bin/bash basepath=$(cd `dirname $0`; pwd) docker stop jenkins && docker rm jenkins && $basepath/create |
MySQL
如果你是在Mac中使用MySQL,请升级docker到最新版本,否则会出现挂载外部数据时的权限问题,Version 17.09.0-ce-mac32 (19506)已经没有问题。