天天看點

docker 删除所有未啟動的容器_docker系列學習之容器前言建立并啟動容器列出容器停止容器啟動停止容器進入容器删除容器導出容器導入容器

前言

上一篇文章說到了docker的鏡像以及常用指令,在docker的使用過程中,一般都是先拉去鏡像,然後在鏡像的基礎上建立并啟動容器來運作我們的項目。故此本篇主要是說下容器的建立和相關指令以及簡單使用。

docker 删除所有未啟動的容器_docker系列學習之容器前言建立并啟動容器列出容器停止容器啟動停止容器進入容器删除容器導出容器導入容器

建立并啟動容器

在docker我們可以通過docker run來建立并啟動一個容器,該指令下面有很多選項。下面來列舉一些常用的指令:

-d:表示背景運作

-P:随機端口映射

-p:指定端口映射

-t:在新容器内指定一個僞終端或終端。

-i:允許你對容器内的标準輸入 (STDIN) 進行互動。

–network:指定網絡模式 有以下4個參數可選

【–network=bridge:預設選項,表示連接配接到預設的網橋】

【–network=host:容器使用主控端的網絡】

【–network=container:NAME_or_ID:告訴Docker讓建立的容器使用已有容器的網絡配置】

【–network=none:不配置該容器的網絡,使用者可自定義網絡配置】

示例1

docker run java /bin/echo 'Hello World'docekr:Docker 的二進制執行檔案。run:與前面的 docker 組合來運作一個容器。java:指定要運作的鏡像,如果不存在,則從docekr hub上拉去。/bin/echo:可以在啟動容器裡執行指令。
           

示例2

docker run -d -p 80:80 nginx-d:表示背景運作-p:表示将容器端口80映射到主控端端口80
           

注意:每次docker run都會建立并啟動一個容器。

docker 删除所有未啟動的容器_docker系列學習之容器前言建立并啟動容器列出容器停止容器啟動停止容器進入容器删除容器導出容器導入容器

列出容器

使用docker ps可以列出所有運作中的容器,執行指令後可以看到如下的内容

docker 删除所有未啟動的容器_docker系列學習之容器前言建立并啟動容器列出容器停止容器啟動停止容器進入容器删除容器導出容器導入容器

docker ps指令

列出所有的容器,包括停止的容器可以使用docker ps-a,查出的列字段含義如下

CONTAINER_ID:表示容器ID。

IMAGE:表示鏡像名稱。

COMMAND:表示啟動容器時運作的指令。

CREATED:表示容器的建立時間。

STATUS:表示容器運作的狀态。Up表示運作中,Exited表示已停止。

PORTS:表示容器對外的端口号。

NAMES:表示容器名稱。該名稱預設由Docker自動生成,也可使用docker run指令的–name選項自行指定。

指令格式:docekr ps [options]

--all,-a default:false 列出所有容器,包括未運作的容器,預設隻展示運作的容器

--filter, -f 根據條件過濾顯示内容

--format 通過Go語言模闆檔案展示鏡像

--last, -n default:-1 顯示最近建立n個容器(包含所有狀态)

--latest, -l default:-1 顯示最近建立的容器(包含所有狀态)

--no-trunc default:fallse 不截斷輸出

--quiet, -q default:false 靜默模式,隻展示容器的編号

--size, -s default :false 顯示總檔案大小

示例

docekr ps -n 5docekr ps -a -s
           
docker 删除所有未啟動的容器_docker系列學習之容器前言建立并啟動容器列出容器停止容器啟動停止容器進入容器删除容器導出容器導入容器

停止容器

使用docker stop

--time, -t default:10 強制殺死容器前等待的時間,機關是秒

示例

docker stop 4a30b910f793   或者 docker stop 容器名稱
           

強制停止容器使用docker kill

--signal, -s default:KILL 向容器發送一個信号

示例

docker kill 4a30b910f793 此處為容器id
           

啟動停止容器

docker run 是建立并啟動一個容器,而docker start是啟動一個已經建立的容器。

指令格式

docker start [OPTIONS] CONTAINER [CONTAINER...]
           

--attach, -a default:false 連接配接STDOUT/STDERR并轉發信号

--checkpoint 從該檢查點還原

--checkpoint-dir 使用自定義的檢查點存儲目錄

--detach-keys 覆寫斷開容器的關鍵順序

--interactive, -i default:false 連接配接容器的STDIN

示例:

docker start 4a30b910f793/容器名稱    啟動容器
           

重新開機容器指令格式

docker restart [OPTIONS] CONTAINER [CONTAINER...]
           
--time, -t default:10 關閉容器前等待的時間,機關是秒

示例:

docerk restart 4a30b910f793/容器名稱    實際是先stop 然後再start
           

進入容器

在某些場景下面我們需要進入到容器進行相關操作

1、使用docker attach指令進入到容器

docker attach 4a30b910f793
           

在使用attach指令時,如果是多個視窗同時進入容器,很容易發生阻塞。

2、使用nsenter進入容器

nsenter工具包含在util-linux 2.23或更高版本中。為了連接配接到容器,我們需要找到容器第一個程序的PID,可通過以下指令擷取

docker inspect --format "{{.State.Pid}}" $CONTAINER_ID
           

獲得pid後就可以進入容器了

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

示例

[[email protected] ~]# docker inspect --format "{{.State.Pid}}" 784fd3b294d795492[[email protected] ~]# nsenter --target 95492 --mount --uts --ipc --net [email protected]:/#
           

3、使用docker exec進入到容器

docker exec -it 容器id /bin/bash
           
docker 删除所有未啟動的容器_docker系列學習之容器前言建立并啟動容器列出容器停止容器啟動停止容器進入容器删除容器導出容器導入容器

删除容器

使用docker rm可以删除指定容器

--force, -f default:false 通過SIGKILL信号強制删除正在運作中的容器

--link, -l default:false 删除容器間的網絡連接配接

--volumes, -v default:false 删除與容器關聯的卷

示例

docker rm 4a30b910f793 删除指定的容器 如果删除運作中的容器則用-f參數docker rm -f $(docker ps -a -q)  删除所有容器
           

導出容器

導出容器指的是将容器導出為一個壓縮包

docker export [OPTIONS] CONTAINER-output, -o将内容寫到檔案而非STDOUT
           

示例

docker export docker export 容器id > latest.tar > latest.tardocker export --output="latest.tar" red_panda
           

導入容器

使用docker import 指令即可從歸檔檔案導入内容并建立鏡像

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
           

--change, -c 将Dockerfile指令應用到建立的鏡像

--message, -m 為導入的鏡像設定送出資訊

示例

docker import nginx2.tar nginx   将打包的nginx容器導入