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

[[email protected] ~]# 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
[[email protected] ~]#

pull下载镜像

上面找的想要下载的镜像centos/python-36-centos7,接下来下载到自己本地

docker pull centos/python-36-centos7

[[email protected] ~]# 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
[[email protected] ~]# 

images本地镜像查看

使用docker images查看本地已经下载好的镜像

docker images

[[email protected] ~]# 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退出

[[email protected] ~]# 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 centos/python-36-centos7 /bin/echo "hello world"

[[email protected] ~]# docker run centos/python-36-centos7 /bin/echo "hello world"
hello world
[[email protected] ~]# docker run -d centos/python-36-centos7 /bin/echo "hello world"
1e5c22451bf2215f6c098e066b74363f1db9cde97e9ecea02947ccbbf2fa7e8f
[[email protected] ~]# 

使用-d后台执行后,会发现下面多了一长串,这个就是容器的唯一id,可以通过这个id找到容器

ps查看容器

先run下 training/webapp

docker run -d -p 5000:5000 training/webapp python app.py

使用docker ps查看正在运行的容器

docker ps

[[email protected] ~]# 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
[[email protected] ~]# 

上面的echo "hello world"只是一个很简单的输出指令,执行完就关闭了,所以ps查找正在运行的查不到,可以加个-a参数,显示所有的容器,包括未运行的

ps 查找参数相关语法

  • -a :显示所有的容器,包括未运行的。
  • -f :根据条件过滤显示的内容。
  • --format :指定返回值的模板文件。
  • -l :显示最近创建的容器。
  • -n :列出最近创建的n个容器。
  • --no-trunc :不截断输出。
  • -q :静默模式,只显示容器编号。
  • -s :显示总的文件大小。

docker ps -a

[[email protected] ~]# 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
[[email protected] ~]#

这样就能找到上面的容器id 1e5c22451bf2 ,不过没那么长

logs查看日志

可以通过容器id去查运行的日志

docker logs [容器id]

[[email protected] ~]# docker logs 1e5c22451bf2
hello world
[[email protected] ~]# 

也可以通过容器的名称去查看,注意这里是容器的名称,不是镜像名称。容器名称是系统自动分配的,如上面的最后一项NAMES 值hopeful_poincare

[[email protected] ~]# docker logs hopeful_poincare
hello world

-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。

docker logs -f 1e5c22451bf2

停止容器

可以用ps查看正在运行的容器

docker ps

[[email protected] ~]# 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启动容器

[[email protected] ~]# docker start c9e8a325b145
c9e8a325b145
[[email protected] ~]# 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
[[email protected] ~]# 

正在运行的容器,可以使用 docker restart 命令来重启

[[email protected] ~]# docker restart c9e8a325b145
c9e8a325b145
[[email protected] ~]# 

删除容器

使用 docker rm 命令来删除不需要的容器

[[email protected] ~]# 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
[[email protected] ~]# docker rm 1e5c22451bf2
1e5c22451bf2
[[email protected] ~]# docker rm 1d14dd77352f
1d14dd77352f
[[email protected] ~]# docker rm kind_kirch
Error response from daemon: You cannot remove a running container c9e8a325b14534f0b27cfd34e3ceefd16f6a6c9f136c0305d4e60de61f2badc3. Stop the container before attempting removal or force remove
[[email protected] ~]# 

但是rm 正在运行的容器时候,它会报错,需先stop,才能rm

[[email protected] ~]# docker stop kind_kirch
kind_kirch
[[email protected] ~]# docker rm  kind_kirch
kind_kirch
[[email protected] ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[[email protected] ~]# 

原文地址:https://www.cnblogs.com/yoyoketang/p/11087523.html

时间: 2024-10-02 03:04:32

docker学习2-快速搭建centos7-python3.6环境的相关文章

docker学习12-docker快速搭建禅道环境

前言 bug管理系统是每个公司测试团队必备的,当去一个新的公司组建一个测试团队的时候,需快读搭建一套bug管理系统,使用docker搭建禅道就非常方便. 拉取镜像 先拉取zentao镜像,镜像地址https://hub.docker.com/r/idoop/zentao docker pull 拉取镜像 docker pull idoop/zentao 启动容器 创建本地目录 mkdir -p /data/zbox 启动容器 docker run -d -p 8080:80 -p 3316:33

快速搭建虚拟桌面测试环境(NetScaler10.1.119.7、StoreFront、XenDesktop7.5)

经过本人几天的摸索和测试 快速搭建虚拟桌面的步骤如下: 1.制作Windows2008R2的模版(安装上Xentools.dotNet4.0.dotNet4.5.SQLServer2008R2安装准备.关闭IE安全.关闭防火墙,然后使用Sysprep封装,转成模版) 2.使用模版生产3个虚拟机分别命名为AD50,DB49,XD55,PVS56(安装域控,把XD55和PVS56都加入到域中,还有安装一个数据库) 3.在XD55上安装Xendesktop软件,在PVS上安装PVS软件 4.安装Win

高效5步走,快速搭建Hadoop2伪分布环境

前两天将Hadoop2的完全分布式搭建文档整理发布于网上(http://blog.csdn.net/aaronhadoop/article/details/24859369),朋友相邀,就再将Hadoop2的伪分布式文档整理一下,搭建过Hadoop2完全分布式后,就笑对"伪分布式"说声 呵呵吧. 前期的jdk环境.SSH免密钥登录配置在此就不再赘述了,直接进入hadoop2的配置.本文Hadoop2配置文件路径:/usr/local/hadoop/etc/hadoop. 开启Hadoo

快速搭建 Node.js 开发环境以及加速 npm

在公交车上刷微博,还是有很多同学在咨询: 如何快速搭建 node 开发环境 npm 超慢 github 无法打开的问题 于是我觉得应该写一篇文章解答所有这些起步问题,让新同学也能顺顺利利入门. 快速搭建 Node.js 开发环境 如果你想长期做 node 开发, 或者想快速更新 node 版本, 或者想快速切换 node 版本, 那么在非 Windows(如 osx, linux) 环境下, 请使用 nvm 来安装你的 node 开发环境, 保持系统的干净. 如果你使用 Windows 做开发,

Docker学习(二)Centos7环境安装Docker

前言 windows10 64位专业版本才可以使用docker Centos安装可以参考 ,基于安装完成的Centos进行今天的docker安装 Docker学习(一)环境准备安装centos7 环境准备 安装docker持久化包和yum工具包 yum install -y yum-utils device-mapper-persistent-data lvm2 yum-utils 简化yum安装的工具包,后面会用到相关命令修改镜像加速,非必选 device-mapper-persistent-

Hadoop初体验:快速搭建Hadoop伪分布式环境

0.前言 本文旨在使用一个全新安装好的Linux系统从0开始进行Hadoop伪分布式环境的搭建,以达到快速搭建的目的,从而体验Hadoop的魅力所在,为后面的继续学习提供基础环境. 对使用的系统环境作如下说明: 操作系统:CentOS 6.5 64位 主机IP地址:10.0.0.131/24 主机名:leaf 用户名:root hadoop版本:2.6.5 jdk版本:1.7 可以看到,这里直接使用root用户,而不是按照大多数的教程创建一个hadoop用户来进行操作,就是为了达到快速搭建Had

docker-compose快速搭建lnmp+redis服务器环境

因为我用的是MacOS 安装docker sudo yum update sudo tee /etc/yum.repos.d/docker.repo <<-'EOF' [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg

SpringBoot学习&lt;一&gt;——快速搭建SpringBoot

这是我的第一篇博客,博客记录我以后的学习,包括一些总结之类的东西,当然,这些记录是针对于与我个人而言的,可能有些地方会有不好的,或者出现错误,欢迎大家来指正(如果有人看的话)废话不多说.进入正题:SpringBoot 当我在学习SSM框架的时候,先不谈Spring的一些核心开年,比如DI ,IOC,AOP等等,只是刚开始它的那些配置就让我觉得很头痛,在网上看了很多配置,但是很杂,而我自己在看了这些很杂的配置后,自己慢慢总结了配置,但也花了不少时间才真正的去弄懂它,不过这已经让我这个对设计思想一无

使用Amazon免费云主机和Docker技术,快速搭建Squid服务器!

首要要申请使用Amazon的EC2,具体步骤就不啰嗦了,不熟悉的同学可以参考以下步骤(Amazon网站上有详细的在线说明). 账号注册 绑定信用卡:这个是必须过程,但不需要付费. 访问AWS控制台:https://console.aws.amazon.com 在主WEB面板点击compute的EC2 接着在EC2面板中点击Launch Instance 选择主机镜像 选择实例的类型,这里我们选择第一个:Free tier eligible,不要选择其它的,否则导致付费 配置实例的细节,这里要注意