小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Docker入門系列6 如何打開(kāi)多個(gè)終端進(jìn)入Docker容器

 quasiceo 2018-03-24
2017年03月09日 12:56:56 1101人閱讀 評(píng)論(0) 收藏 舉報(bào)

版權(quán)聲明:時(shí)間寶貴,只能復(fù)制+粘貼,若圖片無(wú)法顯示或排版混亂,請(qǐng)?jiān)L問(wèn)elesos.com查找原文 https://blog.csdn.net/elesos/article/details/60958098

目錄(?)[+]

Docker容器運(yùn)行后,如何進(jìn)入容器進(jìn)行操作呢?起初我是用SSH。如果只啟動(dòng)一個(gè)容器,用SSH還能應(yīng)付,只需要將容器的22端口映射到本機(jī)的一個(gè)端口即可。當(dāng)我啟動(dòng)了五個(gè)容器后,每個(gè)容器默認(rèn)是沒(méi)有配置SSH Server的,安裝配置SSHD,映射容器SSH端口,實(shí)在是麻煩。 我發(fā)現(xiàn)很多Docker鏡像都是沒(méi)有安裝SSHD服務(wù)的,難道有其他方法進(jìn)入Docker容器?

有很多種方法,包括使用 docker attach 命令或 nsenter 工具等。

使用 attach 命令有時(shí)候并不方便。當(dāng)多個(gè)窗口同時(shí) attach 到同一個(gè)容器的時(shí)候,所有窗口都會(huì)同步顯示。

nsenter 可以訪問(wèn)另一個(gè)進(jìn)程的名字空間。

為了連接到容器,你還需要找到容器的第一個(gè)進(jìn)程的 PID,可以通過(guò)下面的命令獲取。

PID=$(docker inspect --format "{{ .State.Pid }}" <container>) //將<container>換成你的容器id

通過(guò)這個(gè) PID,就可以連接到這個(gè)容器:

$ nsenter --target $PID --mount --uts --ipc --net --pid

更簡(jiǎn)單的,建議大家下載 .bashrc_docker,并將內(nèi)容放到 .bashrc 中。

$ wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker;
$ echo "[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker" >> ~/.bashrc; source ~/.bashrc

這個(gè)文件中定義了很多方便使用 Docker 的命令,例如 docker-pid 可以獲取某個(gè)容器的 PID;而 docker-enter 可以進(jìn)入容器或直接在容器內(nèi)執(zhí)行命令。

$ echo $(docker-pid <container>)
$ docker-enter <container>

[編輯]

.bashrc_docker文件內(nèi)容:

# 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 https://github.com/jpetazzo/nsenter/blob/master/docker-enterfunction docker-enter(){if[-e $(dirname"$0")/nsenter ]; then# with boot2docker, nsenter is not in the PATH but it is in the same folderNSENTER=$(dirname"$0")/nsenter
    elseNSENTER=nsenter
    fi[-z"$NSENTER"]&&echo"WARN Cannot find nsenter"&&return
 
    if[-z"$1"]; thenecho"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."elsePID=$(sudo docker inspect --format"{{.State.Pid}}""$1")if[-z"$PID"]; thenecho"WARN Cannot find the given container"returnfishift
 
        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 - rootsudo$NSENTER--target$PID--mount--uts--ipc--net--pidsu - root
        else# Use env to clear all host environment variables.sudo$NSENTER--target$PID--mount--uts--ipc--net--pidenv-i $@fifi}

藝搜參考

http://www./post/docker-nsenter

http://yeasy./docker_practice/content/container/enter.html


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多