一个乐于分享的博客
关注互联网折腾服务器分享码农的日常

docker初探 解决一切环境问题

docker初探 解决一切环境问题

docker很早就有了,岩兔站也是久仰大名。最近尝试了一下,发现出乎意料的好用!所以总结一下入门必备,给同样折腾docker的小白一点启示。

事情是这样的,岩兔站想使用一个python的爬虫程序,就在GitHub上找大佬的开源项目。代码到手了,怎么运行就成了问题。由于Python不熟悉,装环境折腾了半天,然后又装依赖,折腾了半天也没运行成功。后来改用docker,结果一次就成功了,这里记录分享一下。

什么是docker

了解docker的大佬可以跳过本段了,上网查了也没找到特别官方的定义。岩兔站就以自己的理解,给大家简单归纳一下。

docker是以容器(Container)为基础运行的,而容器又是建立在标准化镜像(image)之上的。

docker相比虚拟机能提供更轻量化的运行环境,同时也保证了应用环境的一致性和可迁移性,简化环境部署,让开发者集中精力到开发本身。

要总结优缺点的话,就是在有更好解决方案之前,现在没有缺点,全是优点。所以这么好的东西,赶紧用起来。

docker入门

入门教程网上多的是,岩兔站再罗列一遍没什么意义,上几个链接供大家参考。

官方网站:https://www.docker.com/

入门教程:http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html

入门步骤

安装软件

必不可少的是安装软件,WindowsMac都有提供现成的安装包,安装完基本就是程序栏一个小图标,主要使用还是要在命令行中完成。

设置国内源

千万别对自己的网速太自信,一定要设置国内源,否则每次获取镜像的过程都会异常艰难甚至失败。

Linux:

打开/etc/default/docker文件(需要sudo权限),在文件的底部加上一行。

DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"

然后,重启 Docker 服务。

$ sudo service docker restart

Windows/Mac:

提供图形化界面,打开Settings,在DaemonRegistry mirrors里添加https://registry.docker-cn.com,随后右键重启服务即可。

docker初探 解决一切环境问题

实例应用

列举两个岩兔站实际用到的实例,从实际使用的角度出发,记录一下使用过程。岩兔站使用环境以windows为例,因为docker专为跨平台而生,所以各种平台其实都一样。

Dockerfile

岩兔站以开篇提到的python为例,使用docker创建一个python开发环境。对于不需要多镜像关联的应用,使用Dockerfile就能满足需求。

Dockerfile怎么写,岩兔站也没完全弄明白,要讲明白这件事,估计够一篇论文了。暂时先从实际使用出发,站在巨人肩膀上,学会使用dockerfile。

在GitHub上找到了python 3.7官方提供的Dockerfile,将Dockfile储存到本地,然后在当前文件夹中执行创建镜像命令

#创建镜像
$ docker image build -t my-python:3.7 .
#查看镜像
$ docker images
REPOSITORY   TAG  IMAGE ID      CREATED      SIZE
my-python    3.7  6d8708c79e48  3 hours ago  143MB

镜像有了,接下来就要以当前镜像来启动容器。

#启动容器
$ docker container run --rm -v C:/app/python:/home/python -w /home/python -it my-python:3.7 /bin/bash

命令比较长,一点一点看

  • docker container run:启动容器
  • –rm:运行完成后删除容器,适合本地测试程序使用
  • -v:文件夹映射,将本地C:/app/python文件夹,映射为容器中的/home/python文件夹
  • -w:设置docker中的工作目录为/home/python,与上方-w参数配合即可将本地目录映射为容器工作目录。
  • -it:将本地Shell映射到容器中,这样在本地窗口输入的命令就是操作容器。
  • my-python:3.7:要启动的镜像
  • /bin/bash:容器启动后执行的第一条语句,这里执行命令行
#启动之后看到类似这样,即为成功
root@05c3d9b02ff5:/home/python# python -V
Python 3.7.1

#在这里也可以执行本地python文件如
root@05c3d9b02ff5:/home/python# python test.py
Hello word!

容器管理命令

# 在本机的另一个终端窗口,查出容器的 ID
$ docker containers

# 停止指定的容器运行
$ docker container kill [containerID]

Docker Compose

Compose其实是docker中的一个工具软件,他可以将多个镜像整合成一个应用,从而简化使用。

针对比较复杂应用,如建立网站,就需要Nginx、PHP、MySQL等镜像,他们之间还会有一些连接,这时候使用Docker Compose会比较方便,compose文件采用YAML格式记录,文件名类似docker-compose.yml

我们仍然先不深究compose如何运行,先学会使用他。仍然GitHub上找到DNMP的compose文件。

#克隆镜像
$ git clone https://github.com/yeszao/dnmp.git

#启动镜像
$ cd dnmp
$ cp env.sample .env   # Windows系统请用copy命令,或者用编辑器打开后另存为.env
$ docker-compose up

compose操作命令

#停止
$ docker-compose stop
#删除
$ docker-compose rm
转载务必注明出处:岩兔站 » docker初探 解决一切环境问题
赞 (1) or 打赏

讨论区 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    不得不说Docker是个好东西。有了这玩意儿可以省事好多。

    Omega3周前 (11-24)回复
    • 是啊,手工配置搞不定的,docker就解决了!

      岩兔站3周前 (11-25)回复