Docker 5分钟入门

环境

要求64位os,centos7及以上。建议使用最新版本docker与docker-compose
官方文档:https://docs.docker.com
官方镜像:https://hub.docker.com
官内回速源:https://get.daocloud.io/
compose: https://docs.docker.com/compose/
在官方网站能找到所有支持,赖得看en的,可以继续看本书。
镜像站上能找到所有常用开源程序的镜像,如mysql、percona、redis等等。附带各种运行文档。

例子-从官方镜像源开始

以 percona-mysql https://docs.docker.com/_/percona/ 为例。
hub文档一般会先标出此镜像可使用的 tag,即版本,如此mysql支持 5.5~5.7。
然后就是如何运行此镜像,一般列出一个启动命令样例,形如:

docker run –name some-percona -e MYSQL_ROOT_PASSWORD=my-secret-pw -d percona:tag

实际上,你如用选用5.6版本的mysql,你的命令是这样的:

docker run –name you-mysql-name -e MYSQL_ROOT_PASSWORD=you-passwd -d percona:5.6

即你可以改实例名字,环境变量对应的值,而-d表示后台运行;最后一个参数是指定tag(版本)。

第一次运行docker run

  • 首次运行,如果本地没有此镜像源,docker会自动去官方下载,你会看到下载过程的输出。
  • 首次运行使用run参数,如果是第二运行(启动)使用start参数+实例名字即可。
  • 如果不指定 –name <实例名字> ,docker会随机生一个,
  • 第二次运行,使用docker start <实例名>
  • 注意,首次运行时,run后面带的参数会对镜像进行初始化,在下一次start时,不必带上其它参数。

个性化

1.可以改变挂载目录,(使用 -v 指令,参数中的目录使用冒号隔开)

docker run –name you-mysql-name -v /you-path:/var/lib/mysql

2.使用自定义的my.cnf 配置, 原理与使用 改变挂载目录一下,只是把conf.d指定一下。
3 文档最还有列出了可使用用的环境变量。
4 或者直接先用docker-storage指定一个挂载卷, 运行docker实例时指定使用此卷

常用管理命令

docker ps -a # 列出所有docker实例与状态
docker run <实例名> # 不使用-d参数,可以看到stdout输出,用作调试
docker rm <实例名>
docker stop <实例名> # 理论上会安全退出
docker logs <实例名> # 查看stdout的log输出,如果run时使用 -d参数
docker exec -it <实例名> bash #进入docker环境的bash

杀手锏 docker-compose

关于docker-compose更多内容, 可以点去 https://docs.docker.com/compose/
举个例子:
0. 安装好docker-compose 后
1. 创建一个docker-compose.yml 文件,内容如下,注意文件名固定。

# 第一步创建一个存储卷区
zabbix-db-storage:  
  image: busybox:latest
  volumes:
    - /data/docker/mysql:/var/lib/mysql

# 第二步,运行一个mysql,使用mariadb分支版本,
# 并且指定使用第一步中创建的卷区,使用keyvolumes_from指定。
# 还有环境变量什么的
zabbix-db:
  image: zabbix/zabbix-db-mariadb
  volumes:
    - /data/docker/backups:/backups
    - /etc/localtime:/etc/localtime:ro
  volumes_from:
    - zabbix-db-storage
  environment:
    - MARIADB_USER=zabbix
    - MARIADB_PASS=password_abc

# 第三步,支行zabbix服务程序,并且与link到第二步中的mariadb
# ports为导出宿主机对应端口
zabbix-server:
  image: zabbix/zabbix-3.0:latest
  ports: 
    - "80:80"  
    - "10051:10051"
    - "10050:10050"
  volumes:
    - /etc/localtime:/etc/localtime:ro
    - ./yahei.ttf:/usr/local/src/zabbix/frontends/php/fonts/DejaVuSans.ttf
    - ./locales.inc.php:/usr/local/src/zabbix/frontends/php/include/locales.inc.php
    - ./default-ips.conf:/etc/nginx/conf.d/default-ips.conf
    - ./sms.sh:/usr/local/share/zabbix/alertscripts/sms.sh
    - ./sms.py:/usr/local/share/zabbix/alertscripts/sms.py
  links:
    - zabbix-db:zabbix.db
  environment:
    - ZS_DBHost=zabbix.db
    - ZS_DBUser=zabbix
    - ZS_DBPassword=password_abc
  1. 在此docker-compose.yml 文件目录下运行以下命令即可同行运行1个storage与2个服务程序

docker-compose up -d # -d表示后台运行

Dockerfile

  1. 写好Dockerfile后,同目录运行 docker build -t ‘your_img_name’ 可创建出iamge.

  2. docker run -d your_img_name 运行刚刚创建的镜像–相当于调试。

  3. docker logs -t ‘image-runing-NAMES’ 查看最后输出日志。

  4. 进入docker容器: docker exec -it CONTAINER bash

风险

  1. 导出端口功能,是使用iptables的类似forward的chain功能,会修改系统iptables设置,但并不会持久=化,所以建议使用导出端口运行后,执行iptables-save > /etc/sysconfig/iptables
  2. 由于Docker容器是建立在Aufs文件系统基础上,网上有相关资料、文章说过,当硬盘IO与网络IO大的容器,会有性能上的间断性抽风。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值