JavaShuo
欄目
標籤
Docker入門(2)-對容器的操做
時間 2019-12-05
標籤
docker
入門
容器
欄目
Docker
简体版
原文
原文鏈接
D
ocker系列參考自書籍<Docker技術入門與實戰>,本博客以筆記爲主. 若是轉載請註明出處,謝謝各位大哥了. -博客園:
玲瓏骰子安紅豆
本章目錄
:
1.
建立容器
2.
終止容器
3.
進入容器
4.
刪除容器
5.
導入和導出容器
容器是Docker的另外一個核心概念
簡單地來講,容器是鏡像的一個運行實例,所不一樣的是,它帶有額外的可寫文件層.
若是認爲虛擬機是模擬運行的一套操做系統
(
提供了運行態環境和其餘系統環境
)
和跑在上面的應用
.
那麼
D
ocker就是獨立運行的一個或一組應用,以及他們的必需運行環境.
本章將具體介紹圍繞容器的重要操做
,
包括建立一個容器
,
啓動容器
,
終止容器
,
進入容器內執行操做
,
刪除容器
,
和導入導出容器
.
1.
建立容器
D
ocker的容器十分輕量級,用戶能夠隨時建立或刪除容器
新建容器
可使用docker create命令新建一個容器,例如:
[root@Ninemax-LPC3 docker]#
docker create -it centos:7.3
5ebc7cd50bd6ed02aac3ed63001057272360e7d05a229f01723b7734c86d05e7
[root@Ninemax-LPC3 docker]#
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5ebc7cd50bd6 centos:7.3 "/bin/bash" 5 minutes ago cranky_bohr
可使用 docker start命令啓動你建立的這個容器
[root@Ninemax-LPC3 docker]#
docker start 5ebc7cd50bd6
(或者使用容器名稱)
5ebc7cd50bd6
能夠看到啓動以後,輸出了一個CONTAINER ID 給咱們
新建並啓動容器
啓動容器有兩種方式
,
一種是基於鏡像新建一個容器並啓動
,
另一個是將在終止狀態
(
stopped)的容器從新啓動.所須要的命令主要爲
docker run
,
其等價於先執行
docker create
命令,再執行
docker start
命令!
例如
,
下面的命令輸出一個
"
hello,word",以後容器自動終止:
[root@Ninemax-LPC3 docker]#
docker run centos:7.3 echo 'hello'
hello
這跟在本地執行
echo 'hello'
幾乎感受不出來任何區別
.
當利用docker run來建立並啓動容器時,Docker在後臺運行的標準操做包括:
檢查本地是否存在指定的鏡像
,
不存在就從公有倉庫下載
利用鏡像建立並啓動一個容器
分配一個文件系統
,
並在只讀的鏡像層外面掛載一層可讀寫層
從宿主機配置的網橋接口中橋接一個虛擬接口到容器中去
.
從地址池配置一個
I
P地址給容器.
執行用戶指定的應用程序
.
執行完畢後容器被終止
下面的命令則啓動一個bash終端,容許用戶進行交互:
[root@Ninemax-LPC3 docker]#
docker run -t -i centos:7.3 /bin/bash
[root@311998edb3c0 /]#
其中
,
-t
選項讓Docker分配一個僞終端
,
-
i
則讓容器的標準輸出保持打開
.
在交互模式下,用戶能夠經過所建立的終端來輸入命令,例如
[root@311998edb3c0 /]#
pwd
/
[root@311998edb3c0 /]#
ls
anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@311998edb3c0 /]#
ps
PID TTY TIME CMD
1 ? 00:00:00 bash
15 ? 00:00:00 ps
[root@311998edb3c0 /]#
在容器內用ps查看進程,能夠看到,只運行了bash應用,並無運行其餘不須要的進程.而且能夠經過輸入exit命令或者Ctrl+d退出容器
[root@311998edb3c0 /]#
exit
[root@Ninemax-LPC3 docker]#
對於所建立的bash容器,當使用exit命令退出以後,該容器就自動處於終止狀態!這是由於對於Docker容器來講,當運行的應用(此例子中的bash)退出後,容器也沒有繼續運行的必要
.
了!
守護態運行
更多的時候
,
須要讓
D
ocker容器在後臺以守護態(
Daemonized
)形式運行.能夠經過在 run的時候 添加
-d
參數來實現
例以下面的命令會在後臺運行容器
:
[root@Ninemax-LPC3 docker]#
docker run -d centos:7.3 sh -c "while true; do echo helloword; sleep 1; done"
4a811d332c1ec0b614151fbfe579029105503f19a0b2feb9267f9cf1e2374738
[root@Ninemax-LPC3 docker]#
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4a811d332c1e centos:7.3 "sh -c 'while true; 2 seconds ago Up 1 seconds thirsty_euclid
要獲取容器的輸出信息
,
能夠經過
docker logs
命令:
[root@Ninemax-LPC3 docker]#
docker logs 4a811d332c1e
helloword
helloword
...
2.
終止容器
可使用docker stop 來終止一個運行中的容器,命令的格式爲
docker stop
[-
t|--time=10] CONTAINER ID(或者容器NAME)
.
這段命令首先向容器發送SIGTERM信號,等一段時間後(默認10S),再發送
SIGKILL
信號,終止容器.
此外
,
當
D
ocker容器中指定的應用終結時,容器也會自動終止.例外如對上一節中只啓動了一個終端容器,當用戶經過
exit
命令或者
ctrl+d
來退出容器時,所建立的容器馬上終止!
下面是使用docker stop命令來終止一個運行中的容器:
[root@Ninemax-LPC3 docker]#
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4a811d332c1e centos:7.3 "sh -c 'while true; 4 hours ago Up 23 seconds thirsty_euclid
[root@Ninemax-LPC3 docker]#
docker stop 4a811d332c1e
4a811d332c1e
[root@Ninemax-LPC3 docker]#
3.
進入容器
當容器在後臺與形式
,
若是你想再次進入容器內
,
有不少方法
,
包括使用
docker attach
命令,
docker exec
命令,以及
nsenter
工具!
docker attach
命令
:
[root@Ninemax-LPC3 ~]# d
ocker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos 7.3 4beff0251382 10 weeks ago 192.5 MB
[root@Ninemax-LPC3 ~]#
docker run -idt centos:7.3
97ac4187a9e6a342b9b7fa4979d87457e750d2e524f6d4a0ad72072ec21c4c63
[root@Ninemax-LPC3 ~]#
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
97ac4187a9e6 centos:7.3 "/bin/bash" 21 seconds ago Up 20 seconds modest_ptolemy
[root@Ninemax-LPC3 ~]#
docker attach 97ac4187a9e6
[root@97ac4187a9e6 /]#
docker exec
命令
:
[root@Ninemax-LPC3 ~]#
docker exec -t -i 97ac4187a9e6 /bin/bash
[root@97ac4187a9e6 /]#
nsenter
工具
: (
暫時不作闡述
,
等我用到的時候再寫
,
挺麻煩的
)
4.
刪除容器
可使用
docker rm
命令刪除處於終止狀態的容器
格式
:
docker rm [OPTIONS] CONTAINER [CONTAINER...]
刪除一個或者多個容器
參數
:
-f, --force=false
強行終止一個運行中的容器
(uses SIGKILL)
--help=false Print usage
-l, --link=false
刪除容器的鏈接
,
可是保留容器
-v, --volumes=false
刪除容器掛載的數據卷
.
例如
,
刪除一個處於終止狀態的容器
:
[root@Ninemax-LPC3 ~]#
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
97ac4187a9e6 centos:7.3 "/bin/bash" 16 minutes ago Exited (137) 15 seconds ago modest_ptolemy
[root@Ninemax-LPC3 ~]#
docker rm 97ac4187a9e6
97ac4187a9e6
[root@Ninemax-LPC3 ~]#
強制刪除一個正在運行的容器
:
[root@Ninemax-LPC3 ~]#
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2b4652c3777b centos:7.3 "/bin/bash" 20 seconds ago Up 19 seconds condescending_jang
[root@Ninemax-LPC3 ~]#
docker rm -f 2b4652c3777b
2b4652c3777b
[root@Ninemax-LPC3 ~]#
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Ninemax-LPC3 ~]#
5.
導入和導出容器
導出容器
導出容器是指導出一個已經建立的容器到一個文件
,
無論此時這個容器是否處於運行狀態
,
可使用docker export命令
該命令格式爲
:
[root@Ninemax-LPC3 ~]#
docker export --help
命令格式
:
docker export [OPTIONS] CONTAINER
導出一個容器到文件系統
--help=false Print usage
-o, --output=
你能夠用此參數指定一個路徑和文件名
,
單指定文件名則導出到當前目錄
導出一個已存在的容器
:
[root@Ninemax-LPC3 ~]#
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e65720ef8e82 centos:7.3 "/bin/bash" About a minute ago Up About a minute reverent_bartik
[root@Ninemax-LPC3 docker]#
docker export -o centos.tar e65720ef8e82
[root@Ninemax-LPC3 docker]# ll
總用量
605780
-rw-r--r--. 1 root root 200183808 7
月
21 22:47 centos.tar
-rw-r--r--. 1 root root 712836 7
月
17 19:05 setuptools-36.2.0.zip
固然了
,
對於
docker export -o centos.tar e65720ef8e82,
你也能夠寫成
docker export e65720ef8e82 >centos2222.tar
[root@Ninemax-LPC3 docker]#
docker export e65720ef8e82 > centos2222.tar
[root@Ninemax-LPC3 docker]# ls
centos2222.tar centos_7.3.tar centos.tar mongo-connector.tar pip-1.5.5 pip-1.5.5.tar.gz setuptools-36.2.0 setuptools-36.2.0.zip
導入容器
可使用
docker import
命令導入,成爲鏡像.
命令
:docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
例如
:
[root@izt4n97garwn1ni986vmhjz ~]#
cat ss.tar |sudo docker import - ssr:test
sha256:eff89461842fa7e45f2518244aeab340975e38e6f40e6a85b95012e7d2274866
其中
cat ss.tar | sudo docker import - ssr:test
等同於
docker import - ssr:test < ss.tar
相關文章
1.
Docker容器-容器操做
2.
Docker入門(1)-對鏡像的操做
3.
Docker 容器操做
4.
docker 容器操做
5.
docker容器操做
6.
Docker容器操做
7.
【Docker】3.操做Docker容器
8.
docker容器的操做
9.
Docker容器的操做
10.
docker入門操做
更多相關文章...
•
Docker 容器連接
-
Docker教程
•
Docker 容器使用
-
Docker教程
•
Docker容器實戰(七) - 容器眼光下的文件系統
•
Docker容器實戰(六) - 容器的隔離與限制
相關標籤/搜索
07-操做容器
容器----Docker
操做篇(2)
Docker容器與容器雲
對象入門
Docker入門
docker 入門 - 01
做操
操做
入門2
Docker
瀏覽器信息
Docker教程
Docker命令大全
docker
服務器
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
shell編譯問題
2.
mipsel 編譯問題
3.
添加xml
4.
直方圖均衡化
5.
FL Studio鋼琴卷軸之畫筆工具
6.
中小企業爲什麼要用CRM系統
7.
Github | MelGAN 超快音頻合成源碼開源
8.
VUE生產環境打包build
9.
RVAS(rare variant association study)知識
10.
不看後悔系列!DTS 控制檯入門一本通(附網盤鏈接)
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
Docker容器-容器操做
2.
Docker入門(1)-對鏡像的操做
3.
Docker 容器操做
4.
docker 容器操做
5.
docker容器操做
6.
Docker容器操做
7.
【Docker】3.操做Docker容器
8.
docker容器的操做
9.
Docker容器的操做
10.
docker入門操做
>>更多相關文章<<