我们给予ubuntu的镜像然后拷贝python的requirement.txt文件进去,再根据这个文件安装对应的python库

拷贝文件到docker容器。首先查找对应的容器ID。然后执行命令

docker cp 文件源路径 文件目标路径

root@zhf-maple:/home/zhf/桌面# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

f98b8e77182b maple412/ubuntu:nb_test "/bin/bash" 22 seconds ago Up 17 seconds tender_rosalind

root@zhf-maple:/home/zhf/桌面#
docker cp /home/zhf/docker/requirement.txt
f98b8e77182b:/home/software_requirement

root@f98b8e77182b:/home/software_requirement#
ls -al

total
12

drwxr-xr-x
2 root root 4096 Sep 22 06:08 .

drwxr-xr-x
4 root root 4096 Sep 22 06:08 ..

-rw-r--r--
1 root root 2058 Sep 22 06:03 requirement.txttxt

root@f98b8e77182b:/home/software_requirement#
python3 install -r requirement.txt

保存镜像:

Docker
ps -l找到最近一次修改的容器id。

root@zhf-maple:/home/zhf/桌面#
docker ps -l

CONTAINER
ID IMAGE COMMAND CREATED
STATUS PORTS NAMES

f98b8e77182b
maple412/ubuntu:nb_test "/bin/bash" 17
minutes ago Exited (1) 10 minutes ago
tender_rosalind

然后使用docker
commit 容器ID
镜像名就可以生成镜像了

root@zhf-maple:/home/zhf/docker#
docker commit f98b8e77182b maple412/ubuntu:test

sha256:bca747cf9c55617d802d9e1633c6d70149959caef49af9a44f6d0a4b840c6c96

此时查看镜像就有了我们生成的镜像

root@zhf-maple:/home/zhf/docker#
docker images

REPOSITORY
TAG IMAGE ID CREATED
SIZE

maple412/ubuntu
test bca747cf9c55 19 seconds ago 522MB

maple412/ubuntu
nb_test 1a2a83944331 8 months ago 521MB

通过docker
login -u xx -p xx 登录docker后就可以上传就成功了

root@zhf-maple:/home/zhf/docker#
docker push maple412/ubuntu:test

The
push refers to repository [docker.io/maple412/ubuntu]

21b2d81ef223:
Pushed

df28f5ba1b2a:
Pushed

2c77720cf318:
Layer already exists

1f6b6c7dc482:
Layer already exists

c8dbbe73b68c:
Layer already exists

2fb7bfc6145d:
Layer already exists

test:
digest:
sha256:0a0ecefa6226f7cb22bf8387ec2ac766ab6c958a9b38cdeecc0063da85d2e6f8
size: 1573

docker
hub上也可以看到上传的镜像

对应的Dockerfile如下:

FROM ubuntu

WORKDIR /home/software_requirement

COPY ./requirement.txt /home/software_requirement

RUN apt-get update && apt-get install python3-pip --assume-yes

RUN pip3 install -r requirement.txt

这里有2点需要注意下:

1
这里的COPY命令,源路径要写相对路径。也就是requirement.txt相对于Dockerfile的位置,否则会提示找不到源路径位置

2
在使用apt-get
install的时候会遇到如下错误,提示是否需要安装,然后自动退出

Step
5/7 : RUN apt-get install python3.6

--->
Running in c96a012485da

Reading
package lists...

Building
dependency tree...

Reading
state information...

The
following additional packages will be installed:

file
libexpat1 libmagic-mgc libmagic1 libmpdec2 libpython3.6-minimal

libpython3.6-stdlib
libreadline7 libsqlite3-0 libssl1.1 mime-support

python3.6-minimal
readline-common xz-utils

Suggested
packages:

python3.6-venv
python3.6-doc binutils binfmt-support readline-doc

The
following NEW packages will be installed:

file
libexpat1 libmagic-mgc libmagic1 libmpdec2 libpython3.6-minimal

libpython3.6-stdlib
libreadline7 libsqlite3-0 libssl1.1 mime-support

python3.6
python3.6-minimal readline-common xz-utils

0
upgraded, 15 newly installed, 0 to remove and 0 not upgraded.

Need
to get 6580 kB of archives.

After
this operation, 33.7 MB of additional disk space will be used.

Do
you want to continue? [Y/n] Abort.

The
command '/bin/sh -c apt-get install python3.6' returned a non-zero
code: 1

解决办法就是在命令最后加上--assume-yes

RUN
apt-get update && apt-get install python3-pip --assume-yes

docker: 构建自己的镜像的更多相关文章

  1. 使用Docker构建jdk1.8镜像

    一.下载centos镜像 下载自己需要的版本TAG,详见: docker安装指定版本TAG的镜像 $ sudo docker pull centos:centos7 二.下载jdk1.8,并上传到/u ...

  2. Docker构建一个node镜像

    0. 设置国内docker镜像源 进入Settings->Daemon->Advanced,添加如下配置. { "registry-mirrors": [ " ...

  3. docker构建一个简易镜像

    一 下载centos镜像 docker pull centos 二 启动镜像 [root@Centos-node3 ~]# docker run -it --name my_ng centos bas ...

  4. 使用Docker构建基于centos7镜像的python环境

    Dcokerfile配置信息 ############################################## # 基于centos7构建python3运行环境 # 构建命令: 在Dock ...

  5. Docker教程:镜像构建和自动镜像构建dockerfile

    http://blog.csdn.net/pipisorry/article/details/50805379 Docker透过Dockerfile来记录建立Container映象文件的每一个步骤,可 ...

  6. Docker 使用 Dockerfile 构建自己的镜像

    可以使用Dockerfile的配置文件方式进行构建自己的镜像 下面利用docker构建一个Caddy web服务器 构建脚本 Dockerfile有自己的命令,下面使用了一些比较常用的命令,更多的Do ...

  7. 物联网架构成长之路(25)-Docker构建项目用到的镜像1

    0. 前言 现在项目处于初级阶段,按照规划,先构建几个以后可能会用到的Image,并上传到阿里云的Docker仓库.以后博客中用到的Image,大部分都会用到这几个基础的Image,构建一个简单的物联 ...

  8. Docker 构建镜像

    Docker 构建镜像 1.首先,在项目的根目录下,新建一个文本文件.dockerignore,写入下面的内容. 下面三行代码表示: 1.这三个路径要排除,不要打包进入 image 文件. 2.如果你 ...

  9. docker构建自定义镜像

    docker构建自定义镜像 要构建一个镜像,第一步准备所需要的文件,第二步编写Dockerfile文件,比如我现在构建一个java web镜像 第一步:准备java web工程的war包文件(这里假设 ...

随机推荐

  1. httprunner学习8-validate校验器

    前言 在一个完整的测试用例中,断言是必不可少的,断言是拿实际结果和期望结果去比较,在httprunner中用validate来对比测试结果. validate校验器 在httprunner的源码里,u ...

  2. Alibaba Java Coding Guidelines,以后我的Java代码规范,就靠它了

    前言 对于Java代码规范,业界有统一的标准,不少公司对此都有一定的要求.但是即便如此,庞大的Java使用者由于经验很水平的限制,未必有规范编码的意识,而且即便经验丰富的老Java程序员也无法做到时刻 ...

  3. Visual Studio 调试 ---- 系列文章

    调试是软件开发过程中非常重要的一个部分,它具挑战性,但是也有一定的方法和技巧. Visual Studio 调试程序有助于你观察程序的运行时行为并发现问题. 该调试器可用于所有 Visual Stud ...

  4. Mobx | 强大的状态管理工具 | 可以用Mobx来替代掉redux

    来源简书 电梯直达 https://www.jianshu.com/p/505d9d9fe36a Mobx是一个功能强大,上手非常容易的状态管理工具.就连redux的作者也曾经向大家推荐过它,在不少情 ...

  5. js的原型与模板类型

    原型处于复用(原型)链上: 模版类型属于构造概念: 对象复用原型的数据和函数: 对象由模版类型+原型构造而成: 模版类型属于构造对象的临时变量,包含了对象空间的所有信息: 原型包含了对象所引用的原型空 ...

  6. matlab基础向9:动画

    先定义坐标变量,确定范围,画出起始静态图,存进图形变量h.通过对坐标的变化,把新的坐标放进图形变量h,再实时刷新看起来就是动态的. 1.动态的sin曲线 X = -2*pi:0.1:2*pi; Y = ...

  7. 给codeblocks的c编译选项添加c99标准

    在codeblocks的settings中选择 compiler and debugger,选择compile setting 在其中有other options,在里面写上-std=c99 这样就可 ...

  8. 《Java虚拟机JVM故障诊断与性能优化》读书笔记(未完待续)

    前言: 对于JVM学习用处的理解:我们程序员写的代码,虽说是放在服务器(linux)系统上的.但是很多时候,受JVM的影响,其实程序并没有发挥出服务器的最大性能.这时候,JVM就成为了瓶颈了.有瓶颈就 ...

  9. DISCO Presents Discovery Channel Code Contest 2020 Qual题解

    传送门 \(A\) 咕咕 int x,y; int c[4]={0,300000,200000,100000}; int res; int main(){ cin>>x>>y; ...

  10. PHP Record the number of login users

    Function to record how many times the user logs in Connect to the database first: you can create a n ...