实例 : 查看Docker容器内文件系统

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: dockfile ; docker container ; docker images
目的:下载 docker images 之后,了解 images 内部目录、文件结构,以及容器内部程序运行情况

方法:

1. 使用docker exec (最简单)

nsenter命令类似,docker exec 命令可以在已经运行的容器运行新的进程(容器必须已经运行才可以,否则会报错),可以运行/bin/bash进入容器:

[arthur@localhost Downloads]$ sudo docker ps
[sudo] password for arthur: 
CONTAINER ID   IMAGE                COMMAND       CREATED       STATUS       PORTS     NAMES
09b6673f175a   hicstuff:v1.0        "/bin/bash"   2 hours ago   Up 2 hours             quizzical_chatelet
c67a7e98646a   koszullab/hicstuff   "/bin/bash"   4 hours ago   Up 4 hours             sleepy_bhabha
[arthur@localhost Downloads]$ sudo docker exec -it  quizzical_chatelet /bin/bash
(base) root@09b6673f175a:/app# pwd
/app
(base) root@09b6673f175a:/app# ls
LICENSE      __init__.py  distance_law.py  io.py     pipeline.py       test_commands.py     test_filter.py    tests
MANIFEST.in  commands.py  filter.py       iteralign.py  requirements.txt  test_digest.py     test_hicstuff.py  version.py
Makefile     cutsite.py   hicstuff       log.py     setup.cfg       test_distance_law.py  test_io.py       view.py
README.md    digest.py      hicstuff.py       main.py     setup.py       test_doctests.py     test_pipeline.py
2. 使用快照(snapshotting)
#查看已经运行的容器,记录要查看容器的 ID 
$ docker ps
#创建新的 images 
$ docker commit  ID  NewImagesName
#通过 `bash` 进入新镜像
$ docker run -it NewImagesName /bin/bash
#删除新的镜像 NewImagesName
$ docker rmi NewIamgesName
3. 使用 ssh

如果需要持续性连接到容器,可以在容器内安装sshd,并运行sshd

#查看 容器 port
$ docker ps
#
$ docker run -d -p PortNumber ContainerName /usr/sbin/sshd -D
4. 使用nsenter
5. 覆盖默认的 ENTRYPOINT
$ docker run --rm -it --entrypoint=/bin/bash NameofImage
#########################################################################
--entrypoint string              Overwrite the default ENTRYPOINT of the image

#覆盖默认 entrypoint  
[arthur@localhost Downloads]$ sudo docker run --rm -it --entrypoint=/bin/bash koszullab/hicstuff  
[sudo] password for arthur: 
(base) root@1f60e1415681:/app# pwd
/app
(base) root@1f60e1415681:/app# ls
LICENSE      __init__.py  distance_law.py  io.py     pipeline.py       test_commands.py     test_filter.py    tests
MANIFEST.in  commands.py  filter.py       iteralign.py  requirements.txt  test_digest.py     test_hicstuff.py  version.py
Makefile     cutsite.py   hicstuff       log.py     setup.cfg       test_distance_law.py  test_io.py       view.py
README.md    digest.py      hicstuff.py       main.py     setup.py       test_doctests.py     test_pipeline.py
(base) root@1f60e1415681:/app# 

#未覆盖
[arthur@localhost Downloads]$ sudo docker run -it koszullab/hicstuff 
[sudo] password for arthur: 
INFO :: generated new fontManager
usage:
    hicstuff [-hv] <command> [<args>...]
[arthur@localhost Downloads]$ sudo docker run -it koszullab/hicstuff  /bin/bash
INFO :: generated new fontManager
Unknown command.
usage:
    hicstuff [-hv] <command> [<args>...]
[arthur@localhost Downloads]$ 
#运行其他 images 
[arthur@localhost Downloads]$ sudo docker run -it hicpro:homo.v1
root@5bf6508e2b7c:/# exit
exit
[arthur@localhost Downloads]$ sudo docker run -it nservant/hicpro:v3.01
root@fb00a89cb150:/# exit
exit
#原镜像运行 commit 之后的
[arthur@localhost Downloads]$ 
[arthur@localhost Downloads]$ sudo docker run -it hicstuff:v1.0 
[sudo] password for arthur: 
(base) root@4de5fd7f7bae:/app# pwd
/app
(base) root@4de5fd7f7bae:/app# ls
LICENSE      __init__.py  distance_law.py  io.py     pipeline.py       test_commands.py     test_filter.py    tests
MANIFEST.in  commands.py  filter.py       iteralign.py  requirements.txt  test_digest.py     test_hicstuff.py  version.py
Makefile     cutsite.py   hicstuff       log.py     setup.cfg       test_distance_law.py  test_io.py       view.py
README.md    digest.py      hicstuff.py       main.py     setup.py       test_doctests.py     test_pipeline.py

拓展:

  1. 镜像构建 dockfile 存在差别:

    koszullab/hicstuff 镜像为 from conda , nservant/hicpro from ubuntu

  2. 原镜像 koszullab/hicstuff commit 之后与原镜像的差别:登陆方式出现差别

Reference :
[1] exploring Docker container's file system.stack overflow.

目录
相关文章
|
3天前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
24 5
|
7天前
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
|
5天前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
4天前
|
开发者 Docker Python
从零开始:使用Docker容器化你的Python Web应用
从零开始:使用Docker容器化你的Python Web应用
13 1
|
10天前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
8天前
|
运维 持续交付 虚拟化
深入解析Docker容器化技术的核心原理
深入解析Docker容器化技术的核心原理
28 1
|
10天前
|
JavaScript 开发者 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
10天前
|
持续交付 开发者 Docker
Docker容器化技术实战指南
Docker容器化技术实战指南
26 1
|
10天前
|
安全 Docker 微服务
深入理解Docker容器技术:从基础到实践
深入理解Docker容器技术:从基础到实践
|
1天前
|
存储 Cloud Native 开发者
深入探索容器化技术——Docker的实战应用
深入探索容器化技术——Docker的实战应用
6 0
下一篇
无影云桌面