docker: 构建自己的镜像

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

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

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

[email protected]:/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

[email protected]:/home/zhf/桌面#
docker cp /home/zhf/docker/requirement.txt
f98b8e77182b:/home/software_requirement

[email protected]:/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

[email protected]:/home/software_requirement#
python3 install -r requirement.txt

保存镜像:

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

[email protected]:/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
镜像名就可以生成镜像了

[email protected]:/home/zhf/docker#
docker commit f98b8e77182b maple412/ubuntu:test

sha256:bca747cf9c55617d802d9e1633c6d70149959caef49af9a44f6d0a4b840c6c96

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

[email protected]:/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后就可以上传就成功了

[email protected]:/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

原文地址:https://www.cnblogs.com/zhanghongfeng/p/11569109.html

时间: 2024-11-08 23:34:33

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

DOCKER构建本地局域网镜像

本人所使用的操作系统:CENTOS7 x64 DOCKER版本:1.12.5 实验机器: 192.168.88.101(DOKCER仓库机器) 192.168.9.71(用于开发的机器,二者虽不在统一网段,但是可以互通) 第一步,我是先从docker hub上拉了一个官方的centos镜像 [[email protected] ~]$ sudo docker pull centos 第二步,又拉了一个registry镜像用来构建本地仓库,同时本地目录同步到registry镜像中 [[email 

docker构建JDK最小镜像

一.构建最小JDK 1.解压jre # mv jre-8u181-linux-x64.tar.gz java1.8.tar.gz # tar -xvcf jre-8u181-linux-x64.tar.gz 2.删除无用文件 # cd jre1.8.0_181/ # rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txt THIRDPARTYLICENSEREADME.txt Welcome.html

Docker 构建NetCore 基础镜像

一般制作docker镜像,都是基于网络同道精心打造的镜像.如果想自己构建一个基础的镜像可以通过此次示例来学习. 学习之路 alpine-minirootfs-3.10.2-x86_64.tar.gz alpine(linux环境) aspnetcore-runtime-3.0.0-linux-musl-x64.tar.gz linux环境下的netcore runtime dockerfile 构建镜像的命令集 下载源码并构建docker镜像 下载地址 说明: 需要切换到项目目录下执行构建命令

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

Dcokerfile配置信息 ############################################## # 基于centos7构建python3运行环境 # 构建命令: 在Dockerfile文件目录下执行 docker build -t python-centos:3.5 . # 容器启动命令: docker run -itd --name python --restart always --privileged=true -v /root/dockers/python:/

使用docker构建、运行jenkins镜像

目录: 1.基于docker官方的jenkins镜像启动容器 2.使用源码构建jenkins镜像并运行容器 3.使用csphere产品对容器.镜像.主机进行管理 docker近两年很火,最近在听cSphere希云主办的docker培训, 之前也参加过docker相关的技术沙龙(如docker meetup). 同时也使用Jenkins近两年,所以尝试使用docker构建jenkins镜像.运行基于镜像的容器. 因为听希云的docker培训获得了一张200元的腾讯云代金券, 所以用代金券在腾讯云上

构建Docker镜像实战之构建Tomcat9.0镜像(RPM一键安装Java环境)

构建Docker镜像实战之构建Tomcat9.0镜像(RPM一键安装Java环境) tomcat是一个免费开源的轻量级web服务器,在中小型企和并发访问量不高的场合普遍使用,是开发和调试JSP程序的首选.下面使用Dockerfile文件的方式来创建带有tomcat服务的Dockerfile镜像.(注:这里的Java环境是使用rpm一键式安装的且小编创建的是tomcat9.0的镜像) 下面直接开始实验 关闭防火墙及SELinux systemctl stop firewalld.service s

Docker容器-构建Tomcat业务镜像

接着上一篇文章来构建Tomcat业务镜像,上篇已经把tomcat基础镜像已经完成了.这次基于tomcat基础镜像构建实际业务镜像. 退到tomcat目录下,新建两个业务用的目录文件 [[email protected] /data/dockerfile/web/tomcat/tomcat-base]#cd .. [[email protected] /data/dockerfile/web/tomcat]#mkdir tomcat-app1 [[email protected] /data/do

Docker构建nginx+uwsgi+flask镜像(二)

Dockerfile搭建环境并打包应用 在上一章Docker构建nginx+uwsgi+flask镜像(一)的学习中,我们学会用命令行一句一句在alpine环境中搭建nginx+uwsgi+flask服务,但这体现不了Docker为我们带来的便利,而本章,我们将通过Dockerfile来制作基础镜像和打包应用,因此会有两个Dockerfile文件. 我们先来写第一个Dockerfile文件,这个文件负责搭建运行环境,运行环境需要包括:nginx.uwsgi.Python3: # 配置基础镜像 F

Docker 构建私有镜像仓库(6)

title: Docker 构建私有镜像仓库(6) date: 2018-12-18 08:47:27 tags: Docker categories: Docker copyright: true --- Docker是基于Go语言实现的开源容器项目,Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口,Docker诞生于2013年年初,最初发起者是dotCloud公司.