1. 编写 Vagrantfile 并创建虚拟机 并虚拟机绑定外部 192.168.205.10:8888 ip:port

# -*- mode: ruby -*-

# vi: set ft=ruby :

Vagrant.require_version ">= 1.6.0"

boxes = [

{

:name => "docker-node1",

:eth1 => "192.168.205.10",

:mem => "1024",

:cpu => "1",

:port => "8888"

}

]

Vagrant.configure(2) do |config|

config.vm.box = "centos/7"

boxes.each do |opts|

config.vm.define opts[:name] do |config|

config.vm.hostname = opts[:name]

config.vm.network "forwarded_port", guest: 80, host: opts[:port]

config.vm.provider "vmware_fusion" do |v|

v.vmx["memsize"] = opts[:mem]

v.vmx["numvcpus"] = opts[:cpu]

end

config.vm.provider "virtualbox" do |v|

v.customize ["modifyvm", :id, "--memory", opts[:mem]]

v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]

end

config.vm.network :private_network, ip: opts[:eth1]

end

end

config.vm.synced_folder "./labs", "/home/vagrant/labs"

config.vm.provision "shell", privileged: true, path: "./setup.sh"

end

2.创建labs 文件夹 及编写 setup.sh 文件

  mkdir labs

  vim setup.sh

#setup.sh

  

#/bin/sh

  # install some tools

  sudo yum install -y wget

  sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak

  sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

  sudo yum makecache

  sudo yum -y update

  sudo yum install -y git vim gcc glibc-static telnet bridge-utils

# install docker

  curl -fsSL get.docker.com -o get-docker.sh

  sh get-docker.sh

# start docker service

  sudo groupadd docker

  sudo usermod -aG docker vagrant

  sudo systemctl start docker

  rm -rf get-docker.sh

  sudo tee /etc/docker/daemon.json <<-'EOF'

  {

    "registry-mirrors": ["https://v2ltjwbg.mirror.aliyuncs.com"]

  }

  EOF

  sudo systemctl daemon-reload

  sudo systemctl restart docker

  docker version

3.创建虚拟机

  vagrant up

4.创建 redis 容器  不用使用 -p 将 docker 参数暴露

  docker run -d --name redis redis

5.编写dockerFile 文件

  FROM python:2.7    #基础镜像为 python:2.7

  LABEL maintaner="eaon eaon123@docker.com"  #创建者为eaon

  COPY . /app            # 复制当前的文件到 /app下

  WORKDIR /app            # 工作目录为 /app

  RUN pip install flask redis      #安装 flask 和 redis

  EXPOSE  5000             # 暴露 5000 端口进行访问

  CMD ["python", "app.py"]      # 运行 python app.py

6. build Dockerfile  创建镜像

  docker build -t 'flask-redis' .

7.编写 python 文件 app.py

 from flask import Flask    

 from redis import Redis

 import os

 import socket

 app = Flask(__name__)

redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)

 @app.route('/')

 def hello():    //定义 hello 函数  1.添加每次自增hits  2 返回一句话

  redis.incr('hits')

  return 'Hello Container World! I have been seen %s times and my hostname is %s.\n' % (redis.get('hits'),socket.gethostname())

if __name__ == "__main__":

   app.run(host="0.0.0.0", port=5000, debug=True)

8. 创建 redis-flask 容器

  docker run -d --link redis --name redis-flask -e REDIS_HOST=redis redis-flask

  -d 为后台运行

  --link redis 表示链接 redis 容器

  --name 表示容器名为 redis-flask

  -e 设置环境变量 REDIS_HOST=redis

  最后为启动镜像的名称

9. 虚拟机内访问

  将 redis-flask 添加参数 -p 4321:5000 并重新 创建容器 (前面是虚拟机的端口,后面是容器端口)

  docker stop redis-flask && docker rm redis-flask

  docker run -d --link redis --name redis-flask -p 4321:5000  -e REDIS_HOST=redis redis-flask

  在虚拟机内(容器外)使用 curl 127.0.0.1:4321 即可访问 容器内的应用

10 在外部访问 虚拟机内的容器

  将 redis-flask 修改参数 -p 8888:5000 并重新 创建容器 (前面是虚拟机的端口,后面是容器端口)

  docker stop redis-flask && docker rm redis-flask

  docker run -d --link redis --name redis-flask -p 8888:5000  -e REDIS_HOST=redis redis-flask

  在浏览器使用 192.168.205.10:8888 即可访问 虚拟机的容器内的应用

11. 环境变量 设置

  使用 -e env 可以自定义配置参数

  创建镜像

  docker run -d --name test -e EAON=eaon44 busybox /bin/sh -c "while true; do sleep 3600; done"

  运行镜像

  docker exec -it test /bin/sh

  查看环境变量

  env

  

18. docker 容器部署 python-redis的更多相关文章

  1. docker容器化python服务部署(supervisor-gunicorn-flask)

    docker容器化python服务部署(supervisor-gunicorn-flask) 本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-furt ...

  2. 庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群

    庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群 一.简介      前面的两篇文章,我们已经介绍了Net Core项目基于Docker容器部署在Linux服 ...

  3. Docker 容器部署 Consul 集群

    Docker 容器部署 Consul 集群 一.docker安装与启动1.1安装docker[root@localhost /]# yum -y install docker-io 1.2更改配置文件 ...

  4. pycharm使用docker容器的python解释器,

    上一篇是pycharm调用docker的镜像的python解释器. 此篇介绍pycharm 调用docker的容器的python解释器. 这两个思路还是不一样的,第一个是用pycham界面的选择pyt ...

  5. [笔记]使用Go语言Redigo包在Docker容器内连接Redis容器的方法

    Docker容器之间的连接可以带来不少方便,下面记录下如何在自己容器内通过环境变量连接与之连接的Redis容器的方法. 先起一个Redis的Docker容器,命名为 redis,再起一个自己的Dock ...

  6. Docker容器部署tomcat出现中文乱码

    docker 容器部署tomcat后,日志文件中出现中文乱码,很多问号,中文的文件夹也是问好.先看看容器的locale: [root@docker1 ~]# docker exec -it 41de9 ...

  7. Docker容器编译安装Redis

    Docker容器编译安装Redis 1.创建容器 -i 交互模式 -d 后端运行 -h 容器的hostname --name 容器名 --network 网卡 --ip IP地址 -p 端口映射 -- ...

  8. Docker如何部署Python项目

    Docker 部署Python项目 作者:白宁超 2019年5月24日09:09:00 导读: 软件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装.只有它们都正确,软件才能运行.如 ...

  9. python + docker, 实现天气数据 从FTP获取以及持久化(五)-- 利用 Docker 容器化 Python 程序

    背景 不知不觉中,我们已经完成了所有的编程工作.接下来,我们需要把 Python 程序 做 容器化 (Docker)部署. 思考 考虑到项目的实际情况,“持久化天气”的功能将会是一个独立的功能模块发布 ...

随机推荐

  1. PATH环境 变量

    PATH环境 变量 $HOME/.bash_profile和/etc/profile 两个文件在登陆用户的时候会执行, /etc/profile 所有用户都执行,$HOME/.bash_profile ...

  2. 069-PHP数组下标

    <?php $arr=array(98,'hello',67,'A',85,NULL); //定义一个数组 $x=0; //定义三个作为下标的变量 $y=3; $z=5; echo " ...

  3. React 学习笔记(3) B站视频总结1

    视频地址 项目基础 react-cli // 项目结构 src │ App.js # 应用根组件 │ index.js # 入口js ├─api ├─assets ├─components ├─con ...

  4. ACM-Maximum Tape Utilization Ratio

    题目描述:Maximum Tape Utilization Ratio Tags: 贪婪策略 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上.程序i存放在磁带上的长度是li ,1 < ...

  5. linux 命令之 objdump 简单使用

    objdump 介绍 objdump命令是用查看目标文件或者可执行的目标文件的构成的gcc工具 objdump 选项介绍 --archive-headers -a 显示档案库的成员信息,类似ls -l ...

  6. CentOS下的安装命令 安装Nginx 更新yum源 kali系统当中的软件管理命令(第五天)

    Linux下软件的安装:方式:yum/rpm/源码安装YUM安装(帮助管理员解决依赖关系):yum search mysqld 在源中搜索软件包yum install mysql-connector- ...

  7. python3.7使用etree遇到的问题

    使用python3.6时安装好lxml时按照许多网上的教程来引入会发现etree没被引入进来 解决办法: 一.import lxml.htmletree = lxml.html.etree这样就可以使 ...

  8. 04-String——课后作业1:字串加密

    题目:请编写一个程序,加密或解密用户输入的英文字串要求设计思想.程序流程图.源代码.结果截图. 程序设计思想:首先由用户选择是加密还是解密,利用String类中的charAt函数依次取出字串中的字符, ...

  9. 76.Python中F表达式详解

    F表达式是用来优化ORM操作数据库的. 举个例子:我们做口罩的公司要将所有员工的薪水增加2000元,如果按照正常的流程,应该是先从数据库中提取所有的员工的工资到Python内存中,然后使用Python ...

  10. 吴裕雄--天生自然 JAVASCRIPT开发学习:输出

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...