建设分销网站,培训网站源码wordpress,顺德 网站开发 招聘,手机网站建设推荐乐云seo学习如何进入一个正在运行的容器的内部#xff0c;要求学习者参照示例#xff0c;进入一个名为container2的容器内部#xff0c;并在容器内部创建一个1.txt文件。
相关知识
使容器在后台运行
因为本关要使用docker run -d命令#xff0c;所以在本关的开始#xff0c;将…学习如何进入一个正在运行的容器的内部要求学习者参照示例进入一个名为container2的容器内部并在容器内部创建一个1.txt文件。
相关知识
使容器在后台运行
因为本关要使用docker run -d命令所以在本关的开始将花费少量篇幅介绍这条命令。
有些时候需要让容器在后台运行而不是直接把“启动命令”的结果输出在当前宿主机下。此时可以通过添加-d参数来实现。
举个例子假如不使用-d参数执行下面这条命令
docker run ubuntu /bin/sh -c while true; do echo hello world; sleep 1; done
那么会一直在控制台输出hello world如下图所示
docker run ubuntu /bin/sh -c while true; do echo hello world; sleep 1; donehello worldhello worldhello world...
但是如果使用了-d参数此时容器会在后台运行并且不会将输出结果输出到控制台。如下图所示
docker run -d ubuntu /bin/sh -c while true; do echo hello world; sleep 1; doneccd644424bffed71747e2a36977d70745cc211e7dac71006437ca52914c1b743
进入一个docker容器的几种方法
使用ssh登陆进容器使用nsenter、nsinit等第三方工具使用docker本身提供的工具。
在这里我只介绍Docker本身提供的工具大家如果对其他的两种方式感兴趣可以阅读扩展链接中的内容。
Docker目前主要提供了docker exec和docker attach两个命令。
docker attach进入一个容器内部
1. docker attach containerId|containerName
如下图所示首先使用docker run创建了一个容器为其分配了伪终端打开了它的标准输入流并且让它在后台执行。
然后使用docker attach进入了该容器内部实际上就是进入容器“启动命令”的终端。containerId可以不用输全只要能代表容器即可。例如下面的0539就是代表容器ID以0539开头的容器一般情况下前4位就能唯一标识一个容器了
[rootlocalhost Desktop]# docker run -itd ubuntu /bin/bash0539852938cdb9538f67750d07ed8c7fa072de742d5c0c02128576f2d227ec46[rootlocalhost Desktop]# docker attach 0539root0539852938cd:/# root0539852938cd:/# lsbin dev home lib64 mnt proc run srv tmp varboot etc lib media opt root sbin sys usrroot0539852938cd:/# exitexit[rootlocalhost Desktop]#
docker exec进入一个容器内部
2. docker exec [options] containerName|containerId command [arg]
如下图所示首先使用docker run创建了一个容器并使它在后台运行。
docker exec命令可以在一个运行的容器内部执行一条命令例如下图中执行docker exec aec0 mkdir dir1后就在容器中创建了一个dir1的文件夹。除此以外还可以在容器中启动一个新的bash例如下图执行了docker exec -it aec0 /bin/bash在容器内部启动了一个新的bash终端并使用-it为其分配一个伪终端绑定到标准输出上。
[rootlocalhost Desktop]# docker run -itd ubuntu /bin/bashaec040300549f95a8c4b37fecd3059122f08cb5422673640bd0bd9e641d0644c[rootlocalhost Desktop]# docker exec aec0 mkdir dir1[rootlocalhost Desktop]# docker exec -it aec0 /bin/bashrootaec040300549:/# lsbin dev etc lib media opt root sbin sys usrboot dir1 home lib64 mnt proc run srv tmp varrootaec040300549:/# exitexit[rootlocalhost Desktop]#
attach与exec的比较
使用docker run -d ubuntu while true ; do sleep 1 ; echo hello; done创建并在后台启动容器每隔一秒打印一个hello。
[rootlocalhost Desktop]# docker run -d ubuntu /bin/sh -c while true ; do sleep 1 ; echo hello; donea695e721e324f11cc958867d13c9c6707018e359c747ba103554d4d8e9e7750f
使用docker attach 5719进入容器内部后会在控制台每隔一秒打印了一个hello。
[rootlocalhost Desktop]# docker attach a695hellohello...
但是使用docker exec –it 5719 /bin/bash进入容器后并没有打印“hello”因为docker exec执行后在容器中打开一个新的终端该终端与“启动命令”的终端不是同一个。
[ootlocalhost Desktop]# docker exec -it a695 /bin/bashroota695e721e324:/#
attach与exec的主要区别
attach直接进入容器“启动命令”的终端不会启动新的进程exec则是在容器中打开新的终端并且可以启动新的进程如果想直接在终端中查看容器“启动命令”的输出用attach其他情况使用exec。 #注意如果想在右侧使用命令行模拟操作请先输入service docker start#否则将不能执行docker命令#基于ubuntu镜像创建并在后台启动一个名为container2的容器#拉取ubutun 最新镜像实际生产中docker pull ubutun可以省略docker run的时候会自己去拉取。docker pull ubuntudocker run -itd --name container2 ubuntu /bin/bash #由于测试环境不允许从终端输入所以请使用docker exec完成任务 #********** Begin *********# docker exec container2 touch 1.txt #********** End **********#
参考链接 两种进入容器的方法 - 每天5分钟玩转 Docker 容器技术23_docker 多次进入容器-CSDN博客 Docker系列~exec与attach四-CSDN博客 扩展链接 Docker容器进入的4种方式 - 純黑色 - 博客园