导航:首页 > 文件处理 > docker容器内部解压

docker容器内部解压

发布时间:2023-07-30 06:45:53

① docker怎么清理容器的文件

# 杀死所有正在运行的容器.
alias dockerkill='docker kill $(docker ps -a -q)'
# 删除所有已经停止的容器.
alias dockercleanc='docker rm $(docker ps -a -q)'
# 删除所有未打标签的镜像.
alias dockercleani='docker rmi $(docker images -q -f dangling=true)'
# 删除所有已经停止的容器和未打标签的镜像.
alias dockerclean='dockercleanc || true && dockercleani'
另附上docker常用命令
docker version #查看版本
docker search tutorial#搜索可用docker镜像
docker pull learn/tutorial #下载镜像
docker run learn/tutorial echo "hello word"#在docker容器中运行hello world!
docker run learn/tutorial apt-get install -y ping#在容器中安装新的程序
保存镜像
首先使用docker ps -l命令获得安装完ping命令之后容器的id。然后把这个镜像保存为learn/ping。
提示:
1.运行docker commit,可以查看该命令的参数列表。
2.你需要指定要提交保存容器的ID。(译者按:通过docker ps -l 命令获得)
3.无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分。(译者按:非常类似git里面的版本号)
正确的命令:
docker commit 698 learn/ping

② 详解Docker——你需要知道的Docker进阶知识五

Dockerfile 是一个文本文件,其中包含了构建 Docker 镜像需要执行的命令序列。使用 docker build 命令从 Dockerfile 中读取指令来构建镜像。

构建镜像时,该过程的第一件事是将 Dockerfile 文件所在目录下的所有内容发送给 Docker 守护进程。所以大多数情况下,最好创建一个新的目录,在其中保存 Dockerfile ,以及构建镜像所需的其它文件。Dockerfile 文件所在目录也被称为构建上下文(context)。

使用 FROM 指令指定一个基础镜像,后续指令将在此镜像基础上运行:

在 Dockerfile 中可以指定一个用户,后续的 RUN , CMD 以及 ENTRYPOINT 指令都会使用该用户身份去执行,该用户必须已存在。

除了指定用户之外,还可以使用 WORKDIR 指定当前工作目录(CWD), RUN , CMD , COPY , ADD 指令将在指定的工作目录中执行。

RUN 指令用于执行命令,该指令有两种形式:

例如我们执行更新命令:

CMD 的使用方式跟 RUN 类似,不过在一个 Dockerfile 文件中只能有一个 CMD 指令,如果有多个,则只有最后一个会生效。该指令指定了启动容器时要执行的命令,例如:

可以在 docker run 时指定命令来覆盖默认的 CMD 命令,比如 docker run image echo"hello shiyanlou" 。

CMD 指令还有一种特殊用法。在 Dockerfile 中,如果使用 ENTRYPOINT 指令指定了入口命令,则 CMD 指令的内容会作为 ENTRYPOINT 指令的参数:

ENTRYPOINT 指令会覆盖 CMD 指令作为容器运行时的默认指令,并且该指令不会被 docker run 时指定的指令覆盖,如下示例:

上述文件构建出来的镜像,使用 docker run image 等同于 docker run image ls-a-l 。使用 docker run image-i-s 等同于 docker run image ls-a-i-s 。即 CMD 指令的值会被当作 ENTRYPOINT 指令的参数附加到 ENTRYPOINT 指令的后面,只有 CMD 指令可以被覆盖。

COPY 和 ADD 都用于将构建上下文中的文件,目录等复制到镜像中。使用方式如下:

`` 可以指定多个,但是其路径不能超出构建上下文范围,即必须在 Dockerfile 同级或子目录中。

不需要预先存在,不存在时会自动创建,如果使用相对路径,则 为相对于工作目录的路径。塌陪

COPY 和 ADD 的不同之处在于,ADD 可伏衫或以添加远程文件,并且 `` 可以是 gzip 或 tar 等格式的压缩文件,添加时会自动进行解压

ENV 指令用于设置环境变量:

VOLUME 指令指定要创建的挂载路径,在容器运行时,将为每个挂载路径创建一个匿名卷并挂载上去:

上述指令将会在容器运行时,创建两个匿名卷,并分别挂载到容器中的 /data1 和 /data2 路径。

学习了上面这些常见的 Dockerfile 指令之后,可以使用这些指令来构建一个镜像。如下所示,构建一个提供 ssh 服务的镜像:

构建镜像

查看镜像

启动容器

查看已经启动的容器

测试远程登录

Compose 是运行由多个容器组成的 Docker 应用的工具,使用 Compose 可以一次启动一组有关联的服务,每个服务由来自同一镜像的单个或多个容器组成。

在复杂应用中,应用一般由多个服务(service)组成,例如一个网站后台通常包含 Web 服务、数据库服务、缓存缺伍服务、消息队列服务等。

使用 Compose 的步骤如下:

目前有三种版本的 Compose 文件格式:

下载 docker-compose-Linux-x86_64

下载成功后,为了方便使用,可以将其添加到 PATH 路径下

执行完成后,就能够在终端下直接使用 docker-compose 命令了:

接下来我们将创建一个 Web 应用,该应用包含两个容器:

项目目录结构如下:

首先编辑 app/web/web.py 文件,写入下面的内容:

上述代码创建了一个简单的 Web 应用。该应用会连接 redis 服务,在访问 / 页面时,自动将变量 number 加 1。

编辑 app/web/requirements.txt 文件,输入如下内容:

requirements.txt 文件存放了 Web 应用依赖的第三方库包的名称和版本信息。

编辑 app/web/Dockerfile 文件,添加如下内容

上述 Dockerfile 定义了 Web 应用镜像,该镜像基于 python:2.7 基础镜像,在其基础上安装了应用依赖的库包,并通过 CMD 指令指定了应用的启动命令。

编辑 app/docker-compose.yml 文件:

该 docker-compose.yml 文件定义了两个服务,分别为 web 和 redis 服务,并且配置了 web 服务的端口映射和挂载目录。 depends_on 定义了依赖关系,被依赖的服会先启动。

进入 app 目录,执行 docker-compose up 命令来启动应用:

启动成功后,就可以打开网址 127.0.0.1:8001 来访问 Web 应用了。

另外一些命令:

③ docker常用命令

1、 service docker start // 启动docker
2、 docker images // 查看docker所安装的镜像
3、 docker search [name] 查询某个镜像 例如查询mysql docker search mysql
4、 docker pull [name] 拉取某个镜像 例如mysql docker pull mysql
5、 docker pull [name] [:tag] tag版本肢键号 如果不写默认拉取最新的版本
例如: docker pull mysql:5.7
6、 docker rmi [imgaeId] 删除命令,imageId是镜像id

2.1 新建一个新的容器 docker pull centos
2.2 docker run [可选参数] image名字
参数说明
--name="Name" 给容器命名
-d 后台方式运行
-p [主机端口]:[容器端口] 指定容器的端口 例如启动tomcat 命令: docker run -p 8081:8080 tomcat 解释:8081是对外访问(服务器)的端口。8080是docker里面的tomcat端口. tomcat是镜像拉取下来后的名字. 例:若别人访问。IP+8081端口才能访问到tomcat启动的项目
-P 大写P是随机指定端口
-it 与容器交互,就是进入到容器里面

命令: docker run -it [镜像名称] /bin/bash 例子: docker run -it centos /bin/bash

docker ps 查看运行派行中的容器
docker ps -q 只查询运行容器的编号,一般与下面-a合并使用, docker ps -aq
docker ps -a 查看曾经运行过的容器
docker ps -a -n=1 加上-n可以指定查询最近几个运行的容器、

Ctrl+p+q 这样退出就不会停止容器

docker rm -f [容器id] 指定删除某个运行的容器
docker rm -f $(docker ps -aq) 删除全部运行的容器

docker start [容器id] 启动容器
docker restart [容器id] 重启容器
docker stop [容器id] 停止容器
docker kill [容器id] 强制停止容器

docker run -d [镜像名] 例如: docker run -d centos
但是有问题, docker ps 查询不到运行的容器
原因:docker容器用后台运行,就必须要有一个前台进程,docker发现没有应用,所以就自动停止

docker logs -tf --tail 10 [容器id]
t的意思是时间戳,f保留日志打印窗口,tail持续打印,10打印最后10条

docker top [容器id]

docker inspect [容器id]

方式一: docker exec -it [containt_id] /bin/bash // 进入该镜像内部

docker cp [容器id]:[容器路径] [主机路历带巧径]

④ docker容器下搭建python环境

1)进入容器

docker exec -it 容器id(或容器名) /bin/bash

查看当前操作系统cat /etc/issue

Debian GNU/Linux 10 \n \l

这里查到的是Debian系统(不是ubuntu, 也不是centos),这里yum是没有的,所以不能用yum安装了,这里用apt-get代替yum

先执行更新apt-get

apt-get update

2)在当前容器目录下(自己的虚拟机:/usr/local/tomcat)

mkdir python3

cd python3/

执行命令:wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz

解压:tar -xvf Python-3.6.8.tgz

cd Python-3.6.8/

然后执行:./configure --prefix=/usr/local/tomcat/python3,会报错:configure: error: no acceptable C compiler found in $PATH

apt-get 安装依赖包

这个是因为缺少gcc相关依赖包,使用apt-get代替yum安装相关依赖包

apt-get -y install gcc automake autoconf libtool make

apt-get -y install make*

apt-get -y install zlib*

apt-get -y install openssl libssl-dev

apt-get install sudo

make编译安装

./configure --prefix=/usr/local/tomcat/python3 --with-ssl

make

make install

最后:添加软链接

添加python3软链接

ln -s /var/jenkins_home/python3/bin/python3.6 /usr/bin/python3

添加pip3软链接

ln -s /var/jenkins_home/python3/bin/pip3 /usr/bin/pip3

注:

ssl问题

如果pip3安装的时候遇到报ssl相关问题:pip is configured with locations that require TLS/SSL, however the ssl mole in Python is not available.

这个是因为缺少ssl依赖包,网上的解决方案是yum install openssl-devel ,由于Debian系统没有yum,用apt-get安装

apt-get -y install openssl libssl-dev

安装完成之后只能解决系统自带的python2对应的pip安装问题,无法解决python3的pip3安装问题。

解决办法:上面编译的时候需加上参数 --with-ssl

./configure --prefix=/usr/local/tomcat/python3 --with-ssl

重新执行make和make install 就可以了

阅读全文

与docker容器内部解压相关的资料

热点内容
阿里云服务器远程链接 浏览:247
墨镜慧眼怎么下载厂商的app 浏览:61
iphone加密专线 浏览:491
aes产生加密文件 浏览:413
编程实现蓝牙通信 浏览:768
怎么恢复掉签的app 浏览:847
服务器部署ip地址 浏览:321
涉密场所周边安全防护距离算法 浏览:672
安卓fpse模拟器怎么设置加速 浏览:946
建行app怎么生成电子签章 浏览:508
获取当前时间javadate 浏览:73
带密码的wifi如何加密 浏览:237
服务器怎么变成阵列 浏览:718
web前端黑客技术pdf 浏览:71
育儿百科全书pdf 浏览:600
任务栏启动命令 浏览:912
编译优化等级区别 浏览:757
unix网关命令 浏览:877
想自己做网站要学编程吗 浏览:599
租个服务器开个私服需要什么 浏览:273