实时搜索: docker如何进入容器

docker如何进入容器

445条评论 6345人喜欢 4221次阅读 789人点赞
...

如何进入Docker容器:

题主说的进入docker容器应该是获取运行中的docker容器的shell吧

如果是的话可以使用docker exec -it 容器id bash来获得

容器id通过docker ps -a查看

详细可参考获取运行中的docker容器shell

如何查看docker 里某个容器的的启动命令?:

1,在容器外部,物理机上,可以用docker inspect查看或者,docker inspect container。

2,如果在容器内部。可以用 ps -fe 查看。其中1号进程就是启动命令。

3,Docker会在隔离的容器中运行进程。当运行docker run命令时,Docker会启动一个进程,并为这个进程分配其独占的文件系统、网络资源和以此进程为根进程的进程组。在容器启动时,镜像可能已经定义了要运行的二进制文件、暴露的网络端口等,但是用户可以通过docker run命令重新定义(译者注:docker run可以控制一个容器运行时的行为,它可以覆盖docker build在构建镜像时的一些默认配置),这也是为什么run命令相比于其它命令有如此多的参数的原因。

4,命令格式

5,最基本的docker run命令的格式如下:
$ sudo docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]

6,如果需要查看[OPTIONS]的详细使用说明,请参考Docker关于OPTIONS的章节。这里仅简要介绍Run所使用到的参数。OPTIONS总起来说可以分为两类:

设置运行方式:

决定容器的运行方式,前台执行还是后台执行;

设置containerID;

设置网络参数;

设置容器的CPU和内存参数;

设置权限和LXC参数;

设置镜像的默认资源,也就是说用户可以使用该命令来覆盖在镜像构建时的一些默认配置。

7,docker run [OPTIONS]可以让用户完全控制容器的生命周期,并允许用户覆盖执行docker build时所设定的参数,甚至也可以修改本身由Docker所控制的内核级参数。

如何进入到Docker容器内部: 首先你要把容器运行起来,在使用docker attach+容器名/ID就进入容器了。docker pull下来的可能无法进入,自己可以Pull一个centos的镜像,并使用这个镜像创建一个容器,再使用docker attach+容器名/ID进入。

如何查看docker容器状态:

docker ps

docker ps -a

网页链接

参考一下吧

希望可以帮到你

如何让人进不了docker:

镜像(image)

Docker 镜像(Image)就是一个只读的模板。例如:一个镜像可以包含一个完整的操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。

镜像(Image)就是一堆只读层(read-only layer)的统一视角,也许这个定义有些难以理解,看看下面这张图:

右边我们看到了多个只读层,它们重叠在一起。除了最下面一层,其它层都会有一个指针指向下一层。这些层是Docker内部的实现细节,并且能够在docker宿主机的文件系统上访问到。统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。

仓库(repository)

仓库(Repository)是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。

仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括 时速云 、网易云 等,可以提供大陆用户更稳定快速的访问。当然,用户也可以在本地网络内创建一个私有仓库。

当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。

Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。

容器(container)

Docker 利用容器(Container)来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

一个运行态容器被定义为一个可读写的统一文件系统加上隔离的进程空间和包含其中的进程。下面这张图片展示了一个运行中的容器。

正是文件系统隔离技术使得Docker成为了一个非常有潜力的虚拟化技术。一个容器中的进程可能会对文件进行修改、删除、创建,这些改变都将作用于可读写层。

如何在线升级Docker: 首先说一点,docker stop了,但是容器并不一定“没了”。
我理解的所谓的“没了”,就是指容器的进程不存在的。
所有的容器进程,都是docker daemon的子进程。当docker daemon直接挂了,容器的主进程(就是由Entrypoint或者CMD生成的那个进程),会有两种情况:
1. 直接消失。这种情况常见于CMD是/bin/bash的情形。直接消失的原因据我猜测是因为这是个有pty的进程,需要跟父进程(docker daemon)保持一定的联系。父进程挂了,这个子进程就直接没了。
2. 被1号进程托管(父进程变成了1号进程)。这种情况应该常见于CMD是sshd -D或者sleep 99999d的情况。
但是无论哪种情况,当docker daemon再次start时候,会直接去检查容器进程是不是running。如果running,那么清理容器遗留进程。这也就是为什么启动起来docker daemon,所有的容器都是关闭的原因了。
docker为什么要在启动时候关闭这些进程呢?他们running不好么?
根据我对docker源码的理解,docker不放心其他进程来管理。他一定要亲自管理这些容器,他是所有容器的父进程。这样有很多好处。最大的好处就是实时监控,一旦容器挂了,他立即可以知道,并重启(如果容器设置了restart=always的话)。
-----------------------------华丽的分割线-----------------------------------------
上面的只是铺垫,现在说正题:
我们的意愿是良好的。希望能够docker在线升级。我看来一个可能的解决方法就是,在docker daemon start的时候,去检查容器是不是running,如果running,那么清理容器遗留进程,接着再重新start容器。以保证仍然作为容器的父进程进行管理。当然,这就要求给docker新增这么一段代码以实现该功能。

DOCKER里两个容器如何设为不同的IP,指定不同的网关: 要重新再获得被分配IP地址,可以在客户端主机的DOC下(在[开始]-[运行]里输入“cmd”或点击附件里的[命令提示符]就可以进入)
输入命令 ipconfig/release (释放掉你获得的IP)
然后 ipconfig/renew(重新到DHCP服务器那里获得IP)

A类是第1段1-126,B类第1段是128-191,C类第1段就是192-223
A、B类被作为外网地址,C类被用做局域网地址。
你要连通外网后A、B类的都是网络经营商拥有的,你得花钱租的。

DHCP有一定的记忆性,如果只连一台计算机,肯定经常出现总分配同1个地址,或差不多的地址,以求网络的稳定,并节省消耗。

如何构建Memcached Docker容器: Docker容器运行后,如何进入容器进行操作呢看起初我是用SSH。如果只启动一个容器,用SSH还能应付,只需要将容器的22端口映射到本机的一个端口即可。当我启动了五个容器后,每个容器默认是没有配置SSH Server的,安装配置SSHD,映射容器SSH端口,实在是麻烦。 我发现很多Docker镜像都是没有安装SSHD服务的,难道有其他方法进入Docker容器看
有很多种方法,包括使用 docker attach 命令或 nsenter 工具等。
使用 attach 命令有时候并不方便。当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示。
nsenter 可以访问另一个进程的名字空间。
为了连接到容器,你还需要找到容器的第一个进程的 PID,可以通过下面的命令获取。
PID=$(docker inspect –format 逗{{ .State.Pid }}地 <container>) //将<container>换成你的容器id
通过这个 PID,就可以连接到这个容器:
$ nsenter –target $PID –mount –uts –ipc –net –pid
更简单的,建议大家下载 .bashrc_docker,并将内容放到 .bashrc 中。
$ wget -P ~
$ echo 逗[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker地 >> ~/.bashrc; source ~/.bashrc
这个文件中定义了很多方便使用 Docker 的命令,例如 docker-pid 可以获取某个容器的 PID;而 docker-enter 可以进入容器或直接在容器内执行命令。
$ echo $(docker-pid <container>)
$ docker-enter <container>
附.bashrc_docker文件内容:
# Some useful commands to use docker.
# Author: yeasy@github
# Created:2014-09-25
alias docker-pid=地sudo docker inspect –format ‘{{.State.Pid}}’地
alias docker-ip=地sudo docker inspect –format ‘{{ .NetworkSettings.IPAddress }}’地
#the implementation refs from
function docker-enter() {
if [ -e $(dirname "$0")/nsenter ]; then
# with boot2docker, nsenter is not in the PATH but it is in the same folder
NSENTER=$(dirname 逗$0″)/nsenter
else
NSENTER=nsenter
fi
[ -z "$NSENTER" ] && echo 逗WARN Cannot find nsenter地 && return
if [ -z "$1" ]; then
echo 逗Usage: `basename 逗$0″` CONTAINER [COMMAND [ARG]…]地
echo 逗地
echo 逗Enters the Docker CONTAINER and executes the specified COMMAND.地
echo 逗If COMMAND is not specified, runs an interactive shell in CONTAINER.地
else
PID=$(sudo docker inspect –format 逗{{.State.Pid}}地 逗$1″)
if [ -z "$PID" ]; then
echo 逗WARN Cannot find the given container地
return
fi
shift
OPTS=地–target $PID –mount –uts –ipc –net –pid地
if [ -z "$1" ]; then
# No command given.
# Use su to clear all host environment variables except for TERM,
# initialize the environment variables HOME, SHELL, USER, LOGNAME, PATH,
# and start a login shell.
#sudo $NSENTER 逗$OPTS地 su – root
sudo $NSENTER –target $PID –mount –uts –ipc –net –pid su – root
else
# Use env to clear all host environment variables.
sudo $NSENTER –target $PID –mount –uts –ipc –net –pid env -i $@
fi
fi
}

  • hl是谁

    信用卡逾期,银行循环利息是怎么收取的: 若是招行信用卡,循环利息是在您使用循环信用方式还款或是使用预借现金时收取的。若您在当期账单周期的到期还款日前,全额还清全部的消费款项,刷卡消费即可享受免息期,不会产生循环利息;若您当期账单未全部按时还清,则视为使用循...

    842条评论 1309人喜欢 5910次阅读 649人点赞
  • edta有几个配位原子

    杏林春晓是什么?: 应该是“苑”才对。医学界古称“杏林”,“春晓”,则可以解释为两种意思:一是谦虚表示初出茅庐,二则认为自己将成为里程碑。(好像还暗示自己是女性) ...

    357条评论 6500人喜欢 3423次阅读 620人点赞
  • 2018年残保金如何计算

    光大银行信用卡逾期后,利息和滞纳金是怎么计算的: 算法如下:利息:刷卡之日起全额日息0.05%,直至还清。滞纳金:未还最低还款额的5%。 ...

    856条评论 1214人喜欢 2219次阅读 681人点赞
  • 五粮液原产哪个省

    朱自清的《春》赏析400字: 望采纳!!!1 的精短散文《春》,单纯,主题明朗,语言优美,人们往往把它解读为一篇“春的”。其实这是一种误读。《春》与众多的写景一样,看似,一目了然,但它却像一杯一般,蕴涵了绵长而的韵味与芳香,要真正品尝出它的滋味并...

    969条评论 4062人喜欢 4099次阅读 210人点赞
  • m2 ssd固态硬盘哪个好

    工商银行牡丹卡过期了里面有钱怎么办: 什么牡丹卡?如果是信用卡,补发新卡激活后,钱在新卡里面了。如果是借记卡,没有有效期。 ...

    918条评论 5158人喜欢 5394次阅读 954人点赞
  • g系列cpu哪个好

    哪里能租到出租车从天津去北京机场?: 嘀嘀等租车平台,神州,携程,去哪儿等旅行平台,街道上临时拦也可以。 ...

    977条评论 1385人喜欢 5484次阅读 657人点赞
  • 2017港首是谁

    桃杏满村春似锦,踏歌樵鼓过清明 是形容什么节日?: 这首诗【南宋】 范成大 的 四时田园杂兴十二绝 里的,他描写的四时田园杂兴有对蝴蝶的描写 ...

    305条评论 1288人喜欢 1356次阅读 253人点赞