前面了解了如何创建container了,那么自然而然有人会问,接下来我怎么进入running的container? 实际上,进入Docker container有好几种方式:
1、docker exec
2、docker attach
3、ssh
使用docker exec


使用docker attach



缺点:当多个窗口同时attach到同一个容器时,所有的窗口都会同步的显示,假如其中的一个窗口发生阻塞时,其它的窗口也会阻塞,docker attach命令可以说是最不方便的进入后台docker容器的方法。
使用ssh
ssh的方式使用场景比较单一,这要求需要事先登录container修改sshd服务(可能需要安装sshd服务)。然后就可以从宿主机直接ssh到container中。
例如:root@Ubuntu-001:~# ssh shayu@172.17.0.2
#shayu是容器内创建的用户
#172.17.0.2是docker自动为创建的容器分配的IP,可以通过docker inspect containerID查询



Ctrl + p and Ctrl + q 退出container或者exit 退出container。
而实际上docker run可以直接进入container

但是有些时候run container的时候并不一定要进入container,只需要后台run起来就可以,所以-d的作用就在于此。实际上大多数情况run时会加上-d参数,等到后续需要进入container才使用exec进入(exec是最常用的)。
当然我们还可以利用第三方的工具,例如nsenter,有兴趣的读者可以研究下。这里不再演示。

网友评论