前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker初探 解决一切服务器环境问题

docker初探 解决一切服务器环境问题

作者头像
砸漏
发布2020-10-28 16:09:17
7060
发布2020-10-28 16:09:17
举报
文章被收录于专栏:恩蓝脚本
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权限),在文件的底部加上一行。

代码语言:javascript
复制
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"

然后,重启 Docker 服务。

代码语言:javascript
复制
$ sudo service docker restart

Windows/Mac:

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

实例应用

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

Dockerfile

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

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

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

代码语言:javascript
复制
#创建镜像
$ 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

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

代码语言:javascript
复制
#启动容器
$ 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:容器启动后执行的第一条语句,这里执行命令行
代码语言:javascript
复制
#启动之后看到类似这样,即为成功
root@05c3d9b02ff5:/home/python# python -V
Python 3.7.1

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

容器管理命令

代码语言:javascript
复制
# 在本机的另一个终端窗口,查出容器的 ID
$ docker containers

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

Docker Compose

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

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

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

代码语言:javascript
复制
#克隆镜像
$ git clone https://github.com/yeszao/dnmp.git

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

compose操作命令

代码语言:javascript
复制
#停止
$ docker-compose stop
#删除
$ docker-compose rm
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-11-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是docker
  • docker入门
    • 入门步骤
      • 安装软件
      • 设置国内源
  • 实例应用
    • Dockerfile
      • Docker Compose
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档