资讯专栏INFORMATION COLUMN

写给docker新手的文章

svtter / 1740人阅读

摘要:为什么要用对开发者来说启动速度快传统虚拟机需要数分钟的启动时间秒秒钟启动。开发者只需要代码到版本管理即可,接下来的自动测试,自动构建,自动部署都交给吧更轻松的扩展。

1. 前言

“相见恨晚”用来形容我对docker的热爱再合适不过了,自从用了docker,开发环境也不安装了,系统想换就换了,部署更是一键部署,再也不用担心在这台机器上跑的好好的,其它机器有问题了...

写这篇文章,也是为docker的发展尽自己一点绵薄之力。

适合人群:您使用docker不久;正打算使用docker;还没有使用过docker。

2. docker是什么

docker是容器(引擎)。

容器用来做什么? 装东西

装什么?装你的应用,例如你的博客网站就是一个应用。

3. 为什么要用docker

3.1 对开发者来说

1 启动速度快,传统虚拟机需要数分钟的启动时间,docker秒秒钟启动。
2 一致的运行环境,用了docker,再也不会出现,为什么在我的电脑运行的好好的,在你的电脑上却有问题!!

3.2 对运维人员来说

1 持续交付和部署。开发者只需要push代码到版本管理(git)即可,接下来的自动测试,自动构建,自动部署都交给docker吧
2 更轻松的扩展。什么?需要增加机器满足日益增长的pv需求,有docker-compose 一键部署就够了。

3.3 与传统虚拟机的比较

4. 如何学习(使用)docker

从现在开始,删除掉你本机上的所有开发环境,包括虚拟机, Vagrant

官方文档 当然是不二之选
当然,也照顾习惯看中文的朋友:
Docker — 从入门到实践

5. docker常用命令

1 service docker start |stop |restart 启动 停止 重启

2 docker run 镜像名称:标签 运行容器 docker -i 交互式操作 docker -t terminal操作
--rm 退出就删除容器
--name 指定容器名称

举例:docker run -it --rm ubuntu:14.04 bash

3 docker images 列出已经下载下来的镜像portcommit

-f dangling= true 显示 虚悬镜像(dangling image)
根据仓库名列出镜像 docker images  "仓库名"
列出特定的某个镜像,也就是说指定仓库名和标签 docker images  "仓库名:标签名"
-f在..之前  docker images -f since=mongo:3.2
-f参数  docker images -f label=com.example.version=0.1
只显示id docker images -q
自定义表格格式 docker images --format "{{.ID}}: {{.Repository}}" 或者 docker images --format "table {{.ID}}	{{.Repository}}	{{.T-pag}}"

4 docker pull 获取镜像

docker pull ubuntu:14.04

5 docker exec 进入容器

docker exec -it webserver bash

6 docker build [选项] 生成的文件名 上下文(context) 构建镜像

例如 : docker build -t nginx:v3 .

7 -p <宿主端口>:<容器端口>

8 docker rmi [选项] <镜像1> [<镜像2> ...]

注意 docker rm 命令是删除容器,不要混淆。

9 docker rm 删除容器

 docker rm $(docker ps -a -q) 删除所有容器
6. docker常见问题

1 由于墙的问题导致docker安装失败或者各种问题
Docker CE 镜像源站
2 pull镜像太慢
Docker 镜像加速器
3 docker mysql设置初始密码(docker mysql启动马上就自动退出)

docker run 加上环境变量参数 -e MYSQL_ROOT_PASSWORD=password1

4 docker redis 设置初始密码

Dockerfile CMD: "redis-server --requirepass "password1""

5 docker cron没有执行

Dockerfile CMD: service cron start

6 docker cron 执行的时候时区不对

RUN echo "Asia/Shanghai" > /etc/timezone
或者
同步主机时区
docker run -v /etc/localtime:/etc/localtime 
以上两种是网上搜索到的,我都没有成功,我目前的解决方案是将crontab -e配置中的时区都往前推8个小时。例如:你本来是要1,9点运行的,设置为1,17

7 docker corn 获取不了环境变量

原因:corn的bash环境变量和docker容器的环境变量不是同一个。
解决:
printenv |grep -v "==" | grep -v " " | sed "s/^(.*)$/export 1/g" > /project_env.sh 
&& chmod +x /project_env.sh 
&& service cron start 
&& bash

两个grep -v 是为了反正docker-compose link的时候变量变量污染


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27199.html

相关文章

  • Python爬虫教学(写给入门新手) 一

    摘要:在不懂和等协议的情况下,我直接打个比方来解释一下什么是请求,以浏览器为例,人在浏览器输入,然后敲击键,直到页面出现,整个过程,我们可以抽象为我们向百度服务器发起的一次请求。更专业,更详细的解释,自己去百度学习吧。 前言   刚学完python基础,想学习爬虫的新手,这里有你想要的东西。  本文着重点在于教新手如何学习爬虫,并且会以外行人的思维进行形象地讲解。最近我一兄弟想学,我就想写个...

    zone 评论0 收藏0
  • 一篇写给新手入门PHP文章

    摘要:如果在学习过程中有什么问题可以关注我公众号琉忆编程库给我留言。有兴趣可以深入学习最后附上学习的知识结构图谱,可以按着下面的这个知识结构图进行学习不一定完整,更多资料,面试题,都可以关注公众号琉忆编程库获取。 你好,是我——琉忆。PHP程序员面试系列图书作者。 作为一名PHP开发者过来人,也是经历了菜鸟到老手的过程,在此给那些想学PHP的同学指条路,即使你是转行学PHP一样可以学会PHP...

    Ilikewhite 评论0 收藏0
  • Python 基础起步(一)写在开篇话,写给同为小白

    摘要:一个小白的成长日记大家好,这是我在饭否的第一篇笔记,先简单介绍一下自己,我于年在北京工业大学本科毕业,同年月来到法国巴黎工程师学校读研,在年月毕业后加入了法国兴业银行担任数据分析师的职位,主要负责数据质量监测,分析,潜在风险预测,前端可视化 一个小白的成长日记 大家好,这是我在饭否的第一篇笔记,先简单介绍一下自己,我于2016年在北京工业大学本科毕业,同年9月来到法国巴黎Efrei工程...

    shadowbook 评论0 收藏0
  • 写给在迷茫中前行前端学习/工作者

    摘要:我从今年的月份开始在知乎上连续回答前端开发相关的问题,至今已有将近三个月,回顾写过的一百多条回答,不少是给迷茫的前端工作者的建议。今天我把我的思考提炼整理成文,希望能给予在迷茫中前行中的前端学习工作者一些有用的建议。 本文首发于知乎专栏——前端指南作者:Mark MFS老师转载请注明来源。 我从今年的2月份开始在知乎上连续回答前端开发相关的问题,至今已有将近三个月,回顾写过的一百多条回...

    罗志环 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<