001-docker的基礎概念

安裝

yum install docker;systemctl status docker 咱們啓動docker的時候,docker會幫咱們建立一個docker 0的網橋linux

docker 基礎命令

查看當前鏡像 docker images 搜索鏡像 docker search 執行docker search centos 會從dockerhub上搜索鏡像 下載鏡像 docker pull centos docker pull nginx 導出鏡像 docker save -o [鏡像名稱] [鏡像] docker save -o centos.tar centos 導入鏡像 docker load --input centos.tar 刪除鏡像 docker rmi [docker ID IMAGE ID] docker rmi 0f3e07c0138fnginx

root@3:/data# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos        latest              0f3e07c0138f        2 months ago        220 MB
docker.io/hello-world   latest              fce289e99eb9        11 months ago       1.84 kB

提示:若是鏡像已經建立了一個容器,那麼將沒法進行刪除docker

刪除容器

docker rm carcat docker rm -f carcat docker run --rm centos /bin/echo "test" docker ps -acentos

啓動容器

docker run centos docker run centos /bin/echo 'Hello Word' 咱們能夠看到,如今容器並無啓動。由於docker啓動須要在前臺啓動一個進程。容器的名稱能夠咱們指定或自動生成 提示: 管理docker容器能夠經過名稱也能夠經過IDbash

查看啓動容器

docker ps -a ps指的是正在運行的容器 -a 指的是顯示不運行工具

docker的管理案例

我要新建一個testdocker的容器,它的鏡像是centos 包含三個參數 容器起一個名稱 -t 分配一個僞終端 -i 讓docker的標準輸入打開{input} docker run --name testdocker -t -i centos /bin/bash 提示:最後的/bin/bash能夠省略,可是最後一個若是不是命令,那就是鏡像的名稱spa

進入容器

docker attach testdocker 這種相似於linux系統中的單用戶模式 生產場景不用docker attach 用nsenter這個工具,這個工具包含在util-linux軟件包裏面3d

生產場景進入鏡像的方法

root@jenkins:/data/jenkins# docker start testdocker
testdocker
root@jenkins:/data/jenkins# docker inspect -f "{{ .State.Pid }}" testdocker
120574
root@jenkins:/data/jenkins# nsenter -t 120574 -m -u -i -n -p

#每個容器都有.State.Pid,因此這個命令除了容器的id須要咱們根據docker ps -a去查找,其餘的所有爲固定的格式 nsenter --target上面查到的進程id --mount --uts --ipc --net --pid #輸入該命令便進入到容器中code

* –mount參數是進去到mount namespace中 
* –uts參數是進入到uts namespace中 
* –ipc參數是進入到System V IPC namaspace中 
* –net參數是進入到network namespace中 
* –pid參數是進入到pid namespace中 
* –user參數是進入到user namespace中

便捷進入docker環境

#!/bin/bash
docker_in(){
NAME=$1
PID=$(docker inspect -f "{{ .State.Pid }}" $NAME)
nsenter -t $PID -m -u -i -n -p
}
docker_in $1
root@jenkins:/data/docker# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b4c57453d79e        centos              "/bin/bash"         8 minutes ago       Up 7 minutes                            testdocker
e5f27a377ce8        centos              "/bin/bash"         19 minutes ago      Up 10 minutes                           abcdocker
root@jenkins:/data/docker# sh docker_in.sh testdocker
[root@b4c57453d79e /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

咱們也能夠不進入容器進行查看 docker exec testdocker ps -ef 提示:可使用exec參數,不進入容器查看內容 用下面命令進入容器中 docker exec -it abcdocker /bin/bash 可是最好仍是少使用exec,有可能會對容器形成一些意外的影響進程

相關文章
相關標籤/搜索