云原生社区 > 容器服务 > 正文

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

简介: 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.

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Docker镜像操作、容器操作、数据卷及挂载数据卷
Docker镜像操作、容器操作、数据卷及挂载数据卷
12 0
云原生之容器编排实践-Docker使用JDK-Alpine镜像的时区问题导致定时任务不执行
云原生之容器编排实践-Docker使用JDK-Alpine镜像的时区问题导致定时任务不执行
18 0
云原生之容器编排实践-SpringBoot应用Docker化
云原生之容器编排实践-SpringBoot应用Docker化
13 0
云原生之容器编排实践-通过IDEA连接Docker服务
云原生之容器编排实践-通过IDEA连接Docker服务
18 0
Docker Review - 使用docker volume数据卷实现容器内的数据与宿主机同步
Docker Review - 使用docker volume数据卷实现容器内的数据与宿主机同步
10 0
Docker Review - docker 容器 常用命令(下)
Docker Review - docker 容器 常用命令(下)
13 0
Docker Review - docker 容器 常用命令(上)
Docker Review - docker 容器 常用命令(上)
17 0
Docker基础 & 镜像、容器
Docker的入门篇, docker的基本命令应该了解一下的
48 0
[第二部:容器和微服务架构](3)Docker应用程序中的状态和数据
[第二部:容器和微服务架构](3)Docker应用程序中的状态和数据
16 0
「第一部:容器和Docker」(4) Docker容器、镜像和注册表
「第一部:容器和Docker」(4) Docker容器、镜像和注册表
18 0
容器服务
+关注
国内唯一 Forrester 公共云容器平台领导者象限。
+关注
biocodee
bio2coder
文章
问答
视频
相关课程
更多
相关电子书
更多
阿里巴巴集团容器技术现状与未来路线
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关镜像