日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker极简入门

發(fā)布時間:2024/4/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker极简入门 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Docker極簡入門
2018年05月22日 20:25:12 閱讀數(shù):44

一、Docker概述

Docker通過一個包括應用程序運行時所需的一切的可執(zhí)行鏡像啟動容器,包括配置有代碼、運行時、庫文件、環(huán)境變量和配置文件等。

1.文件系統(tǒng)隔離:每個容器都有自己得root文件系統(tǒng)。

2.進程隔離:每個容器都運行再自己得進程環(huán)境中。

3.容器間得虛擬網絡接口和IP地址都是分開的。

4.資源隔離和分組:使用cgroup將CPU和內存之類的資源獨立分配給每個Docker容器。

5.寫時復制:文件系統(tǒng)都是通過寫時復制創(chuàng)建的,這就意味著文件系統(tǒng)是分層的、快速的,并且占用磁盤空間小。

6.日志:容器產生的STDOUT、STDIN和STDERR這些IO流都會被收集并記入日志,用來進行日志分析和故障排除。

7.交互式shell:用戶可以創(chuàng)建一個偽tty終端、將其連接到STDIN,為容器提供一個交互式shell。

8.靈活性:大多數(shù)應用程序均能被裝箱。

9.輕量級:容器利用并共享主機內核。

10.可交互:可以即時的更新和升級。

11.可移植:一處構建,到處運行。

12.可擴展性:可以增加和分發(fā)容器副本。

二、Docker容器的安裝與入門

1.Docker的安裝過程很簡單,本次試驗是在CentOS7.4中進行的,因此不存在內核版本及系統(tǒng)平臺不支持的情況。簡單的安裝配置如下:

[root@ChatDevOps ~]# yum -y install docker [root@ChatDevOps ~]# docker --version Docker version 1.13.1, build 94f4240/1.13.1 [root@ChatDevOps ~]# systemctl start docker [root@ChatDevOps ~]# systemctl status docker [root@ChatDevOps ~]# systemctl enable docker [root@ChatDevOps ~]# docker info

2.docker info:返回所有容器和鏡像的數(shù)量、Docker使用的執(zhí)行驅動和存儲驅動及Docker的基本配置。

[root@ChatDevOps ~]# docker info Containers: 15Running: 1Paused: 0Stopped: 14 Images: 4 Server Version: 1.13.1

3.docker images:列出當前系統(tǒng)中本地鏡像。例如,列出本地鏡像中REPOSITORY為ubuntu的鏡像:

[root@ChatDevOps ~]# docker images ubuntu REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/ubuntu latest 452a96d81c30 3 weeks ago 79.6 MB
  • 1
  • 2
  • 3

這個命令也相當于:

[root@ChatDevOps ~]# docker image ls
  • 1

4.docker ps:列出所有正在運行的容器。

[root@ChatDevOps ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e93e508dbc38 centos "/bin/bash" 2 hours ago Up 2 minutes fervent_turing

?

這個命令也類似于:

[root@ChatDevOps ~]# docker container ls

?

加上選項-a則列出的是所有的容器,包括正在運行的和未運行的。加選項-n則代表列出前n個容器,n后面跟需要列出的容器的個數(shù)。

[root@ChatDevOps ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dfd4fe17d6ce httpd "/bin/bash" 2 hours ago Exited (0) 43 minutes ago stoic_gates 7b4ddbb18811 ubuntu "/bin/bash" 2 hours ago Exited (0) 43 minutes ago priceless_bassi e93e508dbc38 centos "/bin/bash" 2 hours ago Up About a minute fervent_turing [root@ChatDevOps ~]# docker ps -n 10

?

同樣,加了選項-a也類似于:

[root@ChatDevOps ~]# docker container ls --all -n 10 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 07939dcd012d centos "/bin/bash" 15 hours ago Exited (0) 15 hours ago eloquent_engelbart [root@ChatDevOps ~]# docker container ls -a -n 1 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 07939dcd012d centos "/bin/bash" 15 hours ago Exited (0) 15 hours ago eloquent_engelbart

?

docker run:創(chuàng)建一個新的容器并運行一個命令。

[root@ChatDevOps ~]# docker run --name ivandu -i -t centos /bin/bash [root@009c8df5e30d /]#

?

上面例子中創(chuàng)建了一個名為ivandu的容器。Docker首先檢查本地是否存在鏡像centos,如果不存在,則會連接到Docker官方維護的Docker Hub Registry,查看Docker Hub是否存在該鏡像,如果存在則下載該鏡像并保存到本地宿主機。選項-i表示容器的stdin是開啟的,選項-t表示為要被創(chuàng)建的容器分配一個偽tty終端,centos表示創(chuàng)建這個容器使用的是centos這個鏡像,/bin/bash表示容器創(chuàng)建完成之后執(zhí)行容器中的該命令。選項-d則會將容器置于后臺運行。

5.docker start:啟動一個容器,可以是容器的ID和名稱(NAMES)。

[root@ChatDevOps ~]# docker start dfd4fe17d6ce dfd4fe17d6ce [root@ChatDevOps ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dfd4fe17d6ce httpd "/bin/bash" 4 hours ago Up www.feifanyule.cn/ 10 seconds 80/tcp stoic_gates e93e508dbc38 centos "/bin/bash" 4 hours ago Up www.yigouyule2.cn? 2 hours fervent_turing [root@ChatDevOps ~]# docker start stoic_gates stoic_gates [root@ChatDevOps ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dfd4fe17d6ce httpd "www.uuweb.cn /bin/bash" 4 hours ago Up 8 minutes 80www.taohuayuan178.com /tcp stoic_gates e93e508dbc38 centos "www.vboyule66.cn/ /bin/bash" 5 www.120xh.cn hours ago Up 2 hours fervent_turing

同理,docker stop及docker restart的用法大同小異。

6.docker attach:可以進入一個已經在運行的容器。命令后面的容器id也可以換成容器名稱。需要注意的是,如果退出容器的shell,容器也會隨之停止運行。

[root@ChatDevOps ~]# docker start 7b4ddbb18811 7b4ddbb18811 [root@ChatDevOps ~]# docker attach 7b4ddbb18811 root@7b4ddbb18811:/# cat /etc/issue Ubuntu 18.04 LTS \n \l root@7b4ddbb18811:/# exit [root@ChatDevOps ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

7.docker rm:刪除一個已經停止的容器。如果這個容器正在運行,需要先停止該容器的運行或者使用選項-f進行強制刪除。

[root@ChatDevOps ~]# docker rm -f 009c8df5e30d 009c8df5e30d
  • 1
  • 2

一次性刪除所有的容器:

[root@ChatDevOps ~]# docker rm `docker ps -a -q`
  • 1

8.docker logs:獲取容器的日志,我們可以通過該日志了解容器內部正在進行什么樣的操作??梢愿x項-f,類似于tail命令,顯示日志最后部分。選項-t則為每條日志加上了時間戳。

[root@ChatDevOps ~]# docker logs -tf dfd4fe17d6ce 2018-05-22T05:35:24.196281000Z root@dfd4fe17d6ce:/usr/local/apache2# exit root@dfd4fe17d6ce:/usr/local/apache2# 2018-05-22T08:56:00.809591000Z root@dfd4fe17d6ce:/usr/local/apache2# ls 2018-05-22T08:56:00.811456000Z bin build cgi-bin conf error htdocs icons include logs modules 2018-05-22T08:56:06.779932000Z root@dfd4fe17d6ce:/usr/local/apache2# ps -aux 2018-05-22T08:56:06.782810000Z USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 2018-05-22T08:56:06.783173000Z root 1 0.0 0.1 20236 1980 ? Ss 08:40 0:00 /bin/bash 2018-05-22T08:56:06.783462000Z root 6 0.0 0.1 17492 1144 ? R+ 08:56 0:00 ps -aux 2018-05-22T08:56:19.520653000Z root@dfd4fe17d6ce:/usr/local/apache2# httpd -k start 2018-05-22T08:56:19.550996000Z AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message 2018-05-22T08:57:01.656035000Z root@dfd4fe17d6ce:/usr/local/apache2# cat /etc/issue 2018-05-22T08:57:01.656305000Z Debian GNU/Linux 8 \n \l 2018-05-22T08:57:01.656609000Z 2018-05-22T08:57:07.888609000Z root@dfd4fe17d6ce:/usr/local/apache2# exit 2018-05-22T08:57:07.888981000Z exit

9.docker top:查看正在運行的容器內部的進程運行情況。停止的容器并不支持此法進行查看。

[root@ChatDevOps ~]# docker start 7bc9a41a53cd 7bc9a41a53cd [root@ChatDevOps ~]# docker top 7bc9a41a53cd UID PID PPID C STIME TTY TIME CMD root 6869 6855 0 17:26 pts/0 00:00:00 /bin/bash

10.docker exec:在一個運行中的容器內部執(zhí)行命令或者進入一個正在運行的容器內。選項-d表示命令在后臺執(zhí)行,-d后跟容器名和要執(zhí)行的命令。也可以通過選項-i和-t搭配使用進入一個正在運行的容器,與attach不同的是,如果退出容器的shell,該容器并不會停止運行。

[root@ChatDevOps ~]# docker exec -d 7bc9a41a53cd touch /home/ChatDevOps.log [root@ChatDevOps ~]# docker exec -i -t 7bc9a41a53cd /bin/bash [root@7bc9a41a53cd /]# ll /home/ChatDevOps.log -rw-r--r--. 1 root root 0 May 22 09:40 /home/ChatDevOps.log

11.docker inspect:返回一個低水平的Docker對象信息。可以用選項-f或–format來獲取選定結果。支持完整的go語音模板,可以充分利用go語音的優(yōu)勢。

[root@ChatDevOps ~]# docker inspect dfd4fe17d6ce [{"Id": "dfd4fe17d6ce1e17ca55e741c6979b16b32383c909ad2145f1c1fcb231612ecf","Created": "2018-05-22T04:03:10.289044219Z", "Path": "/bin/bash", "Args": [], "State": { ... ... [root@ChatDevOps ~]# docker inspect --format='{{.State.Running}}' dfd4fe17d6ce false [root@ChatDevOps ~]# docker inspect --format='{{.NetworkSettings.IPAddress}}' 7bc9a41a53cd 172.17.0.2

12.docker kill:殺死一個或多個正在運行的容器。

[root@ChatDevOps ~]# docker kill 7bc9a41a53cd 7bc9a41a53cd
  • 1
  • 2

三、總結

通過本篇,我們了解了Docker的優(yōu)點及簡單入門知識。文中并未進行大量詳細的原理性的內容闡述,主要通過實踐來演示一入門常用的一些命令及其使用注意事項。以此來加深對Docker原理的理解。本篇博文是來北京工作后的第一篇文章,紀念一下。

總結

以上是生活随笔為你收集整理的Docker极简入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。