docker進入容器的四種方法
在使用Docker建立了容器之後,大家比較關心的就是如何進入該容器了,其實進入Docker容器有好幾多種方式,這裡我們就講一下常用的幾種進入Docker容器的方法。
進入Docker容器比較常見的幾種做法如下:
1.使用docker attach
2.使用SSH
3.使用nsenter
4.使用exec
目前最為常用的是第四種,exec
一、使用docker attach進入Docker容器
建立一個守護態的Docker容器:
sudo docker run -itd ubuntu:16.04 /bin/bash
-d是detach,讓/bin/bash在後臺執行
然後我們使用docker ps檢視到該容器資訊,接下來就使用docker attach進入該容器
sudo docker attach 44fc0f0582d9
可以看到我們已經進入到該容器中了。但在,使用該命令有一個問題。當多個視窗同時使用該命令進入該容器時,所有的視窗都會同步顯示。如果有一個視窗阻塞了,那麼其他視窗也無法再進行操作。
因為這個原因,所以docker attach命令不太適合於生產環境,平時自己開發應用時可以使用該命令。
二、使用SSH進入Docker容器
在生產環境中排除了使用docker attach命令進入容器之後,相信大家第一個想到的就是ssh。在映象(或容器)中安裝SSH Server,這樣就能保證多人進入容器且相互之間不受干擾了,相信大家在當前的生產環境中(沒有使用Docker的情況)也是這樣做的。但是使用了Docker容器之後不建議使用ssh進入到Docker容器內。關於為什麼不建議使用,請參考如下文章:
三、使用nsenter進入Docker容器
nsenter:namespace enter。
需要安裝nsenter,如果沒有安裝的話,按下面步驟安裝即可(注意是主機而非容器或映象)
具體的安裝命令如下:
wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz tar -xzvf util-linux-2.24.tar.gz cd util-linux-2.24/ ./configure --without-ncurses make nsenter sudo cp nsenter /usr/local/bin
nsenter可以訪問另一個程序的名稱空間。所以為了連線到某個容器我們還需要獲取該容器的第一個程序的PID。可以使用docker inspect命令來拿到該PID。
docker inspect container ID
sudo docker inspect 44fc0f0582d9
可以顯示出PID
最後利用nsenter:
sudo nsenter --target 3326 --mount --uts --ipc --net --pid
3326就是PID。
該方法的缺點在於步驟比較繁瑣。
四、docker exec進入Docker容器
這種方式相對更簡單一些,下面我們來看一下該命令的使用:
[[email protected] ~]$ docker exec --help
Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Run a command in a running container
Options:
-d, --detach Detached mode: run command in the background
--detach-keys string Override the key sequence for detaching a container
-e, --env list Set environment variables (default [])
--help Print usage
-i, --interactive Keep STDIN open even if not attached
--privileged Give extended privileges to the command
-t, --tty Allocate a pseudo-TTY
-u, --user string Username or UID (format: <name|uid>[:<group|gid>])
命令如下:
-it 標準輸入和關聯偽終端,-it後跟容器ID,/bin/bash是命令,表示在該容器中執行該命令
sudo docker exec -it 775c7c9ee1e1 /bin/bash
相關推薦
docker進入容器的四種方法
在使用Docker建立了容器之後,大家比較關心的就是如何進入該容器了,其實進入Docker容器有好幾多種方式,這裡我們就講一下常用的幾種進入Docker容器的方法。進入Docker容器比較常見的幾種做法如下:1.使用docker attach2.使用SSH3.使用nsente
Docker進入容器的幾種方法
進入容器的幾種方法: 1、exec 通過docker ps 檢視需要進入的容器pid 執行 &nb
SpringBoot給容器中註冊元件的四種方法(簡易版)
本文介紹的方法比較簡潔,需要有Spring基礎 方法一:包掃描+註解 1.配置類,標明註解掃描的範圍 //告訴Spring這是一個配置類 @Configuration //註解所掃描的範圍,類似於spring配置檔案的 context:component-scan
Spring註解版--spring給容器註冊元件的四種方法
Spring註解版–spring給容器註冊元件的四種方法: 這是我看網上視訊教程之後,自己整理的,加強記憶。 文章目錄 Spring註解版--spring給容器註冊元件的四種方法: 一. `@Configuration`&`@Bean`-
增加表空間大小的四種方法
已存在數據 max 方法 手工 pro strong 增加表空間 增加 四種 增加表空間大小的四種方法Meathod1:給表空間增加數據文件ALTER TABLESPACE app_data ADD DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\OR
Python格式化輸出的四種方法
python#!/usr/bin/env python#coding:utf-8name = raw_input("name:")sex = raw_input("sex:")age = int(raw_input("age:"))info0 = ‘‘‘-------- inio fo0 -------nam
Button點擊事件的四種方法
ase extend extends make androi tid ont edi .get 1、匿名內部類 Button btn_1 = (Button) findViewById(R.id.btn_1); //1.匿名內部類 btn_
【mysql】查看版本的四種方法
span clas latin min days use ble dha pre 1:在終端下:mysql -V。 以下是代碼片段: [[email protected]/* */ ~]$ mysql -V mysql Ver 14.7 Distrib 4.
列表整體加1四種方法
append map 整體 num enume for in rate int pen 1、 list = [0,1,2,3,4,5,6,7,8,9] num = map(lambda x:x+1,list)print num 2、list1=[]for i in lis
遍歷Map的四種方法
html pos val 方法 div body put next shm public static void main(String[] args) { Map<String, String> map = new HashMap<String,
JS 數組去重的四種方法
new return obj 元素 數組去重 != lis 相同 break 1、通過遍歷原數組和新數組是否重復。new一個新數組存放已經遍歷過的、唯一的元素。 function uniqueArr(list){ var newArr= [list[0]]; for
運行jar應用程序引用其他jar包的四種方法
撰寫 company 有一個 重寫 方式 工作 dex some sta 方法一、使用Bootstrap Classloader來加載這些類。 我們可以在運行時使用如下參數: -Xbootclasspath:完全取代系統Java classpath.最好不用。-Xbootc
JS生成 UUID的四種方法
ide replace rsa func digits 隨機生成 turn abcdefg 標準 全局唯一標識符(GUID,Globally Unique Identifier)也稱作 UUID(Universally Unique IDentifier) 。 GUID是
Jmeter添加變量的四種方法
sha 更新 循環 logs false del 文件名 image stop 一、在樣本中添加同請求一起發送的參數。根據服務器設置的數據類型,來添加不同類型的參數 二、用戶定義的變量 1、創建:添加->配置元件->用戶定義的變量 2、作用:當前的線程組內所
vue中組件的四種方法總結
end bsp nbsp 四種 temp recommend show -s com 希望對大家有用 全局組件的第一種寫法 html: <div id = "app"> <show></show></div>
java 遍歷arrayList的四種方法
void 線程安全 接口 線程同步 object類 轉型 依次 調用 values package com.test; import java.util.ArrayList; import java.util.Iterator; import java.util.Lis
css垂直居中的四種方法
center utf-8 borde gre abs ddl for relative eight <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8">
加載 AssetBundle 的四種方法
recently send log making before 返回 ack one perf 【加載 AssetBundle 的四種方法】 1、AssetBundle.LoadFromMemoryAsync(byte[] binary, uint crc = 0);
java語言復制數組的四種方法
原生態 png mit 宋體 angle 連接 earch oat nowrap 參考:http://www.cnblogs.com/dream-it-possible/p/7018804.html 來源於牛客網的一道選擇題: JAVA語言的下面幾種數組復制方法中,哪個
批量殺死MySQL連接的四種方法詳解
如果 詳解 mysql into 連接 進行 0 rows awk sel 方法一 通過information_schema.processlist表中的連接信息生成需要處理掉的MySQL連接的語句臨時文件,然後執行臨時文件中生成的指令。 mysql> selec