docker学习2-快速搭建centos7-python3.6环境
前言
当我们在一台电脑上搭建了python3.6的环境,下次换了个电脑,或者换成linux的系统了,又得重新搭建一次,设置环境变量、下载pip等操作。
好不容易安装好,一会Scrips目录找不到pip.exe,一会提示pip不是内部或外部命令,一会又提示pip: command not found,想死的心都有了。
搭建环境成为不少小伙伴学习的障碍,从今天开始学好docker,环境问题从此和你说再见~~~
search搜索镜像
docker search : 从Docker Hub(https://hub.docker.com)中搜索指定的镜像
比如我这里搜索一个基于centos7环境安装的python3.6版本
- NAME 镜像仓库名称
- DESCRIPTION 镜像描述信息
- STARS 镜像收藏数
- OFFICIAL 是否为docker官方发布的镜像
- AUTOMATED 是否为自动化构建的镜像
关于自动化构建,可以查看官方文档:https://docs.docker.com/docker-hub/builds/#how-automated-builds-work
docker search python
[root@yoyo ~]# docker search python
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
python Python is an interpreted, interactive, objec… 4288 [OK]
django Django is a free web application framework, … 847 [OK]
pypy PyPy is a fast, compliant alternative implem… 193 [OK]
kaggle/python Docker image for Python scripts run on Kaggle 123 [OK]
arm32v7/python Python is an interpreted, interactive, objec… 37
centos/python-35-centos7 Platform for building and running Python 3.5… 36
joyzoursky/python-chromedriver Python with Chromedriver, for running automa… 33 [OK]
circleci/python Python is an interpreted, interactive, objec… 29
nikolaik/python-nodejs Python with Node.js 18 [OK]
arm64v8/python Python is an interpreted, interactive, objec… 17
centos/python-36-centos7 Platform for building and running Python 3.6… 17
centos/python-27-centos7 Platform for building and running Python 2.7… 15
iron/python Tiny Python Microcontainer 9
publicisworldwide/python-conda Basic Python environments with Conda. 6 [OK]
dockershelf/python Repository for docker images of Python. Test… 4 [OK]
i386/python Python is an interpreted, interactive, objec… 3
bitnami/python Bitnami Python Docker Image 3 [OK]
komand/python-plugin DEPRECATED: Komand Python SDK 2 [OK]
centos/python-34-centos7 Platform for building and running Python 3.4… 2
muccg/python-base Base images that use python 1 [OK]
amd64/python Python is an interpreted, interactive, objec… 1
ccitest/python CircleCI test images for Python 0 [OK]
saagie/python Repo for python jobs 0
qbtrade/python python 3.6.5 with requirements last update s… 0
openshift/python-33-centos7 DEPRECATED: A Centos7 based Python v3.3 imag… 0
[root@yoyo ~]#
pull下载镜像
上面找的想要下载的镜像centos/python-36-centos7
,接下来下载到自己本地
docker pull centos/python-36-centos7
[root@yoyo ~]# docker pull centos/python-36-centos7
Using default tag: latest
latest: Pulling from centos/python-36-centos7
8ba884070f61: Pull complete
c3dca185eb14: Pull complete
ee720ba20823: Pull complete
497ef6ea0fac: Pull complete
ebf1fb961f61: Pull complete
b8249f70ce00: Pull complete
ebd817e2efe7: Pull complete
d3d10dd0937c: Pull complete
a8ad47ec8182: Pull complete
Digest: sha256:d10c46b6db436357965a96716e9f5d230d9b1a58c6db1f0c4f43c1fb1994cd79
Status: Downloaded newer image for centos/python-36-centos7:latest
[root@yoyo ~]#
images本地镜像查看
使用docker images查看本地已经下载好的镜像
docker images
[root@yoyo ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos/python-36-centos7 latest b8d15efaa8ec 2 months ago 651MB
ubuntu 15.10 9b9cb95443b5 2 years ago 137MB
training/webapp latest 6fae60ef3446 4 years ago 349MB
运行交互式的容器
Docker会在隔离的容器中运行进程。当运行docker run命令时,Docker会启动一个进程,并为这个进程分配其独占的文件系统、网络资源和以此进程为根进程的进程组。
在容器启动时,镜像可能已经定义了要运行的二进制文件、暴露的网络端口等,但是用户可以通过docker run命令重新定义
最基本的docker run命令的格式如下:
$ sudo docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
比如我这里要启动centos7,进入交互模式,通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力
- t: 在新容器内指定一个伪终端或终端。
- i: 允许你对容器内的标准输入 (STDIN) 进行交互
docker run -i -t centos/python-36-centos7 /bin/bash
如下进入centos终端后,进python交互环境打印"hello world! I’m comming!!!",最后用exit退出
[root@yoyo ~]# docker run -i -t centos/python-36-centos7 /bin/bash
(app-root) python
Python 3.6.3 (default, Mar 20 2018, 13:50:41)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("hello world! I’m comming!!!")
hello world! I’m comming!!!
>>> exit()
(app-root) exit
后台模式启动
run加上-i -t是进交互模式,如果不想进交互模式直接执行脚本,可以直接使用run,比如echo "hello world",屏幕会输出"hello world"
docker run centos/python-36-centos7 /bin/echo "hello world"
如果不想在前台执行,一般我们运行环境会选择挂后台,加个-d 参数即可
docker run -d centos/python-36-centos7 /bin/echo "hello world"
[root@yoyo ~]# docker run centos/python-36-centos7 /bin/echo "hello world"
hello world
[root@yoyo ~]# docker run -d centos/python-36-centos7 /bin/echo "hello world"
1e5c22451bf2215f6c098e066b74363f1db9cde97e9ecea02947ccbbf2fa7e8f
[root@yoyo ~]#
使用-d后台执行后,会发现下面多了一长串,这个就是容器的唯一id,可以通过这个id找到容器
ps查看容器
先run下 training/webapp
docker run -d -p 5000:5000 training/webapp python app.py
使用docker ps查看正在运行的容器
docker ps
[root@yoyo ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
c9e8a325b145 training/webapp "python app.py" 16 hours ago Up 16 hours 0.0.0.0:32768->5000/tcp
[root@yoyo ~]#
上面的echo "hello world"只是一个很简单的输出指令,执行完就关闭了,所以ps查找正在运行的查不到,可以加个-a参数,显示所有的容器,包括未运行的
ps 查找参数相关语法
- -a :显示所有的容器,包括未运行的。
- -f :根据条件过滤显示的内容。
- --format :指定返回值的模板文件。
- -l :显示最近创建的容器。
- -n :列出最近创建的n个容器。
- --no-trunc :不截断输出。
- -q :静默模式,只显示容器编号。
- -s :显示总的文件大小。
docker ps -a
[root@yoyo ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e5c22451bf2 centos/python-36-centos7 "container-entrypoin…" 10 minutes ago Exited (0) 10 minutes ago hopeful_poincare
1d14dd77352f centos/python-36-centos7 "container-entrypoin…" 12 minutes ago Exited (0) 12 minutes ago nervous_visvesvaraya
fefdcbb9c662 centos/python-36-centos7 "container-entrypoin…" 13 minutes ago Exited (0) 13 minutes ago quirky_cray
9df329b5effd centos/python-36-centos7 "container-entrypoin…" 13 minutes ago Exited (0) 13 minutes ago nifty_roentgen
c9e8a325b145 training/webapp "python app.py" 16 hours ago Up 16 hours 0.0.0.0:32768->5000/tcp kind_kirch
[root@yoyo ~]#
这样就能找到上面的容器id 1e5c22451bf2
,不过没那么长
logs查看日志
可以通过容器id去查运行的日志
docker logs [容器id]
[root@yoyo ~]# docker logs 1e5c22451bf2
hello world
[root@yoyo ~]#
也可以通过容器的名称去查看,注意这里是容器的名称,不是镜像名称。容器名称是系统自动分配的,如上面的最后一项NAMES 值hopeful_poincare
[root@yoyo ~]# docker logs hopeful_poincare
hello world
-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。
docker logs -f 1e5c22451bf2
停止容器
可以用ps查看正在运行的容器
docker ps
[root@yoyo ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9e8a325b145 training/webapp "python app.py" 17 hours ago Up 17 hours 0.0.0.0:32768->5000/tcp kind_kirch
停止容器的话,可以用stop容器的id或者容器NAME名称
docker stop c9e8a325b145
或者提供容器名称kind_kirch来停止
docker stop kind_kirch
启动容器
提供start启动容器
[root@yoyo ~]# docker start c9e8a325b145
c9e8a325b145
[root@yoyo ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9e8a325b145 training/webapp "python app.py" 17 hours ago Up 5 seconds 0.0.0.0:32769->5000/tcp kind_kirch
[root@yoyo ~]#
正在运行的容器,可以使用 docker restart 命令来重启
[root@yoyo ~]# docker restart c9e8a325b145
c9e8a325b145
[root@yoyo ~]#
删除容器
使用 docker rm 命令来删除不需要的容器
[root@yoyo ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e5c22451bf2 centos/python-36-centos7 "container-entrypoin…" 24 minutes ago Exited (0) 24 minutes ago hopeful_poincare
1d14dd77352f centos/python-36-centos7 "container-entrypoin…" 27 minutes ago Exited (0) 27 minutes ago nervous_visvesvaraya
fefdcbb9c662 centos/python-36-centos7 "container-entrypoin…" 27 minutes ago Exited (0) 27 minutes ago quirky_cray
9df329b5effd centos/python-36-centos7 "container-entrypoin…" 27 minutes ago Exited (0) 27 minutes ago nifty_roentgen
c9e8a325b145 training/webapp "python app.py" 17 hours ago Up 41 seconds 0.0.0.0:32770->5000/tcp kind_kirch
[root@yoyo ~]# docker rm 1e5c22451bf2
1e5c22451bf2
[root@yoyo ~]# docker rm 1d14dd77352f
1d14dd77352f
[root@yoyo ~]# docker rm kind_kirch
Error response from daemon: You cannot remove a running container c9e8a325b14534f0b27cfd34e3ceefd16f6a6c9f136c0305d4e60de61f2badc3. Stop the container before attempting removal or force remove
[root@yoyo ~]#
但是rm 正在运行的容器时候,它会报错,需先stop,才能rm
[root@yoyo ~]# docker stop kind_kirch
kind_kirch
[root@yoyo ~]# docker rm kind_kirch
kind_kirch
[root@yoyo ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@yoyo ~]#
python接口QQ群:717225969
docker学习2-快速搭建centos7-python3.6环境的更多相关文章
- docker学习12-docker快速搭建禅道环境
前言 bug管理系统是每个公司测试团队必备的,当去一个新的公司组建一个测试团队的时候,需快读搭建一套bug管理系统,使用docker搭建禅道就非常方便. 拉取镜像 先拉取zentao镜像,镜像地址ht ...
- centos7 快速搭建redis集群环境
本文主要是记录一下快速搭建redis集群环境的方式. 环境简介:centos 7 + redis-3.2.4 本次用两个服务6个节点来搭建:192.168.116.120 和 192.168.1 ...
- 快速搭建 Node.js 开发环境以及加速 npm
如何快速搭建 node 开发环境 npm 超慢 github 无法打开的问题 于是我觉得应该写一篇文章解答所有这些起步问题,让新同学也能顺顺利利入门. 快速搭建 Node.js 开发环境 如果你想长期 ...
- windows下9款一键快速搭建PHP本地运行环境的好工具(含php7.0环境)
推荐几款一键快速搭建PHP本地运行环境的好工具(含php7.0及apache,nigix,mysql) 首推phpstudy2016和wampServer3.0.6 理由支持php7.0 目前 ...
- 【转】使用nvm快速搭建 Node.js 开发环境
原文链接:http://www.cnblogs.com/shuoer/p/7802891.html 快速搭建 Node.js 开发环境 如果你想长期做 node 开发, 或者想快速更新 node 版本 ...
- 搭建centos7的开发环境3-Spark安装配置
说起大数据开发,必然就会提到Spark,在这片博文中,我们就介绍一下Spark的安装和配置. 这是Centos7开发环境系列的第三篇,本篇的安装会基于之前的配置进行,有需要的请回复搭建centos7的 ...
- Spring Boot 学习(一) 快速搭建SpringBoot 项目
快速搭建一个 Spring Boot 项目 部分参考于<深入实践Spring Boot>.<Spring实战 第四版>与程序猿DD的有关博客. 参考(嘟嘟独立博客):http: ...
- 快速搭建appium自动测试环境
首先申明本文是基本于Python与Android来快速搭建Appium自动化测试环境: 主要分为以下几个步骤: 前提条件: 1)安装与配置python环境,打开 Python官网,找到"Do ...
- docker-compose快速搭建lnmp+redis服务器环境
因为我用的是MacOS 安装docker sudo yum update sudo tee /etc/yum.repos.d/docker.repo <<-'EOF' [dockerrep ...
随机推荐
- Centos各版本系统ISO镜像下载地址
https://www.centos.org/download/mirrors/ 需要在里面一个个看,有些是没有旧版本镜像的 补充: 上面这个方法很难再找到旧版本了 更好的方法如下:以下载Centos ...
- Zabbix 3.0 配置企业微信报警(配置zabbix-web)
一.添加报警媒体类型 Name:自定义 Type:选择script Scripts name:填写脚本名称 Script parameters:脚本参数 --corpid=XXX --corpsecr ...
- solr添加中文IK分词器,以及配置自定义词库
Solr是一个基于Lucene的Java搜索引擎服务器.Solr 提供了层面搜索.命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式).它易于安装和配置,而且附带了一个基于H ...
- TCP Socket 套接字 和 粘包问题
一.Scoket 套接字 Scoket是应用层(应用程序)与TCP/IP协议通信的中间软件抽象层,它是一组接口.也可以理解为总共就三层:应用层,scoket抽象层,复杂的TCP/IP协议 基于TCP协 ...
- robotframework_酷我音乐_That Girl
*** Settings *** Library Selenium2Library *** Test Cases *** music # 打开浏览器 Open Browser https://www. ...
- java基础 构造方法
/** * 继承关系中,父子类构造方法的访问特点 * * 1.子类构造方法中有一个默认隐含的"super()"调用,所以一定是先调用父类构造,后执行的子类构造 * 2.子类构造可以 ...
- C#关键字:static
一.static关键字 下面我设计了一个房贷利率上浮类(用来计算房贷利率上浮多少): public class InterestRateGoUp { public InterestRateGoUp() ...
- python Mock 示例
在Python3.x中,mock已经被集成到了unittest单元测试框架中,所以,可以直接使用. 可能你和我初次接触这个概念的时候会有这样的疑问:把要测的东西都模拟掉了还测试什么呢? 但在,实际生产 ...
- python中字符串的常用(部分)处理方法
myStr = "hello world itcast and hahaitcastcpp" 方法的查询方法: help(myStr.replace) myStr.find(&qu ...
- 1.java小作业-计算1到100的整合-指定输入多少行输出就打印多少行-打印24小时60分钟每一分钟-重载基础练习-面向java编程初学者
可能有和我一样刚开始学习java的小伙伴们, 可以或多或少了解一点别的语言知识,我就是中途转过来的, 明白一点,关键不在语言本身····· 所以面对初学者来说,基础要学好, 下面列举几个没什么难度的小 ...