1. 如何查看docker容器uid
當然可以直接查的啊
2. 如何進入Docker容器
題主說的進入docker容器應該是獲取運行中的docker容器的shell吧
如果是的話可以使用docker exec -it 容器id bash來獲得
容器id通過docker ps -a查看
詳細可參考獲取運行中的docker容器shell
3. docker容器里怎麼獲得容器號
熟悉 Linux 技術都知道容器利用名字空間進行隔離進程已Docker 容器實現利用 Linux 自身技術 候我需要宿主機容器內進行些操作種繞 Docker 操作式並推薦 使用比較新 Docker 版本尷尬發現直接使用系統命令訪問容器名字空間 首先介紹 ip netns 系列命令些命令負責操作系統中國絡名字空間 首先我使用 add 命令創建臨中國絡名字空間 ip netns add test 使用 show 命令查看系統中國絡名字空間看剛創建 test 名字空間 ip netns show test 另外用命令 exec應名字空間內執行命令例 ip netns exec test ifconfig 使用 del 命令刪除剛創建 test 名字空間 ip netns del test 接運行 Docker 容器例 docker run -it ubuntu 再執行 ip netns show命令遺憾輸都沒 原於Docker 啟容器仍進程號創建新名字空間較新版本面默認刪除系統名字空間信息文件 中國絡名字空間文件位於 /var/run/netns 面比我前創建 test 名字空間則目錄 test 文件諸 netns 類似系統命令依靠些文件才能獲名字空間信息 容器啟查看目錄發現都沒 OK讓我手重建 首先使用面命令查看容器進程信息比1234 docker inspect --format='{{. State.Pid}} ' container_id 1234 接 /proc 目錄(保存進程所相關信息)應中國絡名字空間文件鏈接 /var/run/netns 面 ln -s /proc/1234/ns/net /var/run/netns/ 通系統命令查看或訪問容器名字空間例 ip netns show 1234 ip netns exec 1234 ifconfig eth0 172.16.0.10/16..
4. 如何操作docker 容器的配置文件
步驟1:為我們的容器創建第一個鏡像
# 以 centos 鏡像作為基礎鏡像,我們啟動自己的容器並在其中執行/bin/bash命令
# 註:-t -i 參數用於創建一個虛擬的命令行。
sudo docker run -t -i centos /bin/bash
現在我們已經成功的運行了自己的第一個容器,並且進入到容器的命令行界面中。在容器中,我們執行下面的命令:
yum -y update # 更新軟體包
yum install which # 安裝which命令
yum install git # 安裝Git
安裝完成後,按 Ctrl + d 來退出容器的命令行。
# 執行sudo docker ps -a,可以看到被我們終止的容器
CONTAINER ID IMAGE COMMAND CREATED……
da9031d3568f centos:6.4 /bin/bash 5 minutes ago…..
把我們所做的改變提交到一個新的容器:
# 這里我們創建一個自己的基礎容器,容器中安裝好了文章中所需的常用工具。讀者的容器 id 可能與文章中的有所不同,以上一步 docker ps -a 的結果為准。
sudo docker commit da90 custom/base
容器成功提交後,執行 sudo docker images ,我們會看到剛才提交的容器(如下面的結果所示)。我們就以這個容器為基礎容器,再來創建一個新的容器。
REPOSITORY TAG IMAGE ID CREATED
custom/base latest 05b6cecd370b 2 minutes ago
centos 6.4 539c0211cd76 10 months ago
centos latest 539c0211cd76 10 months ago…
步驟2:創建新的容器,並安裝 apache
# 以 custom/base 容器為基礎,運行一個新的容器。
sudo docker run -t -i custom/base /bin/bash
# 安裝 httpd
yum install httpd
步驟3:再次提交新的容器
按 Ctrl + d 來退出容器的命令行,然後執行命令:
# 這個命令會把步驟2中我們安裝 httpd 帶來的改變提交到新的名為 custom/httpd 的容器鏡像中。你的容器 id 可能會和文章中有所不同,以 sudo docker ps -a 命令的結果為准。
sudo docker commit aa6e2fc0b94c custom/httpd
你應該已經發現了,我們創建了一個帶有 http 伺服器並可以復用的容器鏡像。你可以根據這種思想,為自己所需的每個組件都創建一個容器,然後把這些容器復用於開發環境或者生產環境。
步驟7:運行 http 伺服器
# -v will Mount a volume from VM to the container which was also shared from host to Vagrant VM.
# -v 參數把主機共享給虛擬機的一個卷掛載到容器中
# -p forward VM port 80 to container port 80; VM port 80 is mapped to host port 8080 in Vagrantfile
# -p 參數把虛擬機的80埠映射到容器的80埠;虛擬機的80埠在 Vagrantfile 中被綁定到主機的8080埠,也就是:主機8080->虛擬機80->容器80
sudo docker run -t -i -p 80:80 -v /vagrant/htdocs:/var/www/html custom/httpd /bin/bash
# 啟動 Apache
apachectl -k start
5. 如何進入 Docker 容器
安裝Docker
藉助apt-get命令,安裝Docker是件輕而易舉的事。
$ sudo apt-get install docker.io
為了允許非根用戶也可以運行Docker,將你自己添加到docker群組。下面這個命令會允許當前用戶運行Docker,無需根用戶許可權。
$ sudo usermod -a -G docker $USER
退出,然後重新登錄,以激活群組成員的變化。
下一步,編輯Docker配置文件,以便更新Docker二進制代碼的位置。
$ sudo vi /etc/default/docker.io DOCKER="/usr/bin/docker.io"
重啟Docker服務。
$ sudo service docker.io restart
管理Docker容器
如果你想啟動Ubuntu操作系統的一個新的Docker容器,首先需要獲取Ubuntu
Docker映像文件。下面這個命令會通過網路下載Docker映像文件。
$ docker pull ubuntu
你可以以一種交互模式來開啟Ubuntu
Docker,如下所示。最後一個參數「/bin/bash」是一旦啟動就將在容器裡面執行的命令,這里是一個簡單的bash外殼命令。
$ docker run -i -t ubuntu /bin/bash
6. docker下容器怎麼執行命令
Docker中我們一般會有兩種執行命令的方式,一種是直接進入容器的命令行,在終端執行並查看結果,一種是在後台執行,並不會在終端查看結果。
1、進入容器命令行
su root
docker run -i -t ubuntu:16.04/bin/bash#或者執行下面這句docker run -it ubuntu:16.04/bin/bash
-i和-t的作用是幫助你進入交互模式,如果不加這部分,你將無法進入容器內部,更別說使用命令行了。/bin/bash的意思就是使用容器的命令行來輸入命令。執行結果如下:
root@7d150a0fb029:/#
root後面跟的就是容器id,表明你已經進入容器,可以輸入命令了,你可以輸入一些常用命令試試:
root@7d150a0fb029:/# docker run -i -t ubuntu:16.04 /bin/bash
結果輸出了鏡像的內核版本信息:
Linux version 4.13.0-36-generic (buildd@lgw01-amd64-033)(gcc version 5.4.020160609(Ubuntu5.4.0-6ubuntu1~16.04.9))#40~16.04.1-Ubuntu SMP Fri Feb 16 23:25:58 UTC 2018
通過exit可退出容器。
2、後台執行命令
輸入下面的代碼,-d表示的就是後台運行,這點可以直接通過docker run –help查看該命令的功能。下面這句話的意思就是在鏡像的程序中添加引號內的代碼,並在後台運行。
docker run -d ubuntu:16.04 /bin/sh -c "while true; do echo hello world; sleep 1;done"
輸出結果不會顯示運行的結果,而是給出新建的容器id,這里說明一下,每次輸入docker run命令都會新建一個容器,產生一個新的id。
輸出結果如下:
查看一下正在運行的容器:
root@cdl-XPS15R:/home/cdl# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7188be9bd7b ubuntu:16.04"/bin/sh -c 'while t…"13 seconds ago Up11 seconds keen_vaughan1b6ba17f7df7 ubuntu:16.04"/bin/bash"2 minutes ago Exited(0)2 minutes ago cocky_noether7d150a0fb029 ubuntu:16.04"/bin/bash"4 minutes ago Exited(0)2 minutes ago hopeful_banach
這里會發現,第一個容器的id和後台運行的容器id前幾位一模一樣,但是長度要長很多,其實是一樣的,只不過通過ps命令列印輸出時為了方便顯示只顯示了前幾位。
如果想要進入後台運行的容器的命令行而不創建新的容器,只需要輸入以下命令:
#Exec是進入已經存在的容器,run是創建新容器docker Exec-it c7188be9bd7b /bin/bash
輸入哪個更長的id也是一樣的效果:
docker Exec -it /bin/bash
輸出結果都是:
root@c7188be9bd7b:/#