本小節(jié)總結(jié)以下的幾點(diǎn)
- 容器技術(shù)和Docker的簡(jiǎn)介
- Docker的安裝
- Docker的常用命令
一酌儒、容器技術(shù)和Docker的簡(jiǎn)介
問題:為什么會(huì)出現(xiàn)容器技術(shù)呢笤喳?
很久以前为居,我們要在一臺(tái)物理設(shè)備上進(jìn)行部署,那么我們就需要在上面裝上操作系統(tǒng)win或者linux杀狡,然后在操作系統(tǒng)上面裝我們所要用的application蒙畴。
這種模式的缺點(diǎn):
1、部署慢呜象,需要服務(wù)器膳凝,需要按系統(tǒng),需要安裝app
2恭陡、成本很高蹬音,需要物理的服務(wù)器
3、資源的浪費(fèi)休玩,服務(wù)器資源太多了 著淆,內(nèi)存和CPU用不完
4、難以遷移和擴(kuò)展拴疤。擴(kuò)展是說app消耗很大永部,本臺(tái)服務(wù)器的資源不夠了,這個(gè)時(shí)候就需要擴(kuò)展來滿足需求呐矾。
5苔埋、可能被限定的廠商給限定死了。-
針對(duì)以上的缺點(diǎn)蜒犯,就出現(xiàn)我們熟悉的虛擬機(jī)组橄。
虛擬技術(shù)就是在以前的服務(wù)器上加上了一層Hypervisor荞膘,去做物理資源的調(diào)度,比如CPU晨炕、內(nèi)存等資源衫画,然后再在這個(gè)Hypervisor上,去裝虛擬機(jī)VM瓮栗。我們底層的物理服務(wù)器的資源還是挺多的削罩。這樣我們就能實(shí)現(xiàn)虛擬機(jī)之間資源的一個(gè)調(diào)度,比如VM1上面1個(gè)CPU和8G內(nèi)存费奸,然后VM2上面是2個(gè)CPU和12G內(nèi)存弥激,這樣的話我們就做出了限定。
VM的優(yōu)點(diǎn)
1愿阐、資源池
2微服、很容易擴(kuò)展,加虛擬機(jī)缨历,我們可以加第四臺(tái)以蕴。要是物理機(jī)資源不夠,還可以加物理機(jī)辛孵。Hypervisor做了一層
3丛肮、很容易云化,AWS和阿里云魄缚、騰訊云宝与,可以通過公有云創(chuàng)建虛擬機(jī),不用知道物理機(jī)放在那里冶匹,現(xiàn)在的公司都采用了虛擬化技術(shù)了
虛擬化的局限性: 每個(gè)VM都是一個(gè)完整的OS习劫,那么它需要給其分配資源,還沒有部署app的時(shí)候嚼隘,OS就占了很多資源了诽里。當(dāng)VM的數(shù)量很多的時(shí)候,OS本身消耗的資源勢(shì)必增多飞蛹。但是這不是容器出現(xiàn)最主要的原因须肆。
虛擬機(jī)與容器的對(duì)比 -
容器出現(xiàn)的最主要的原因
開發(fā)和運(yùn)維之間會(huì)出現(xiàn)扯皮的情況,開發(fā)在本機(jī)上面是好的桩皿。交付上面,開發(fā)與運(yùn)維之間有問題幢炸。為什么開發(fā)這里好泄隔,但是在運(yùn)維上面出問題呢?問題出現(xiàn)的原因是環(huán)境與配置宛徊,比如你本地在windows上面進(jìn)行了開發(fā)佛嬉,然后運(yùn)維是要將這個(gè)部署到阿里云上面逻澳,這個(gè)時(shí)候環(huán)境就變了。一款產(chǎn)品從開發(fā)到上線暖呕,從操作系統(tǒng)斜做,到運(yùn)行環(huán)境,再到應(yīng)用配置湾揽。作為開發(fā)+運(yùn)維之間的協(xié)作我們需要關(guān)心很多東西瓤逼,這也是很多互聯(lián)網(wǎng)公司都不得不面對(duì)的問題,特別是各種版本的迭代之后库物,不同版本環(huán)境的兼容霸旗,對(duì)運(yùn)維人員都是考驗(yàn)。Docker之所以發(fā)展如此迅速戚揭,也是因?yàn)樗鼘?duì)此給出了一個(gè)標(biāo)準(zhǔn)化的解決方案诱告。
虛擬機(jī)與容器的對(duì)比總結(jié)如下所示:
1 | 2 | 3 |
---|---|---|
運(yùn)行性能 | 幾乎無額外性能損失 | 操作系統(tǒng)額外的CPU、內(nèi)存消耗 |
移植性 | 輕便民晒、靈活精居、適應(yīng)于LInux | 笨重,與虛擬化技術(shù)耦合度高 |
硬件親和性 | 面向軟件開發(fā)者 | 面向硬件運(yùn)維者 |
二潜必、Docker的安裝
2.1靴姿、docker的基本組成和架構(gòu)
安裝之前,我們來先看看docker的三大核心部分刮便,如下:
Docker的基本組成是由鏡像(image)空猜、容器(container)和倉庫(repository)組成。
- 鏡像:就是一個(gè)只讀的模板恨旱。鏡像可以用來創(chuàng)建 Docker 容器辈毯,一個(gè)鏡像可以創(chuàng)建很多容器。
- 容器:Docker 利用容器(Container)獨(dú)立運(yùn)行的一個(gè)或一組應(yīng)用搜贤。容器是用鏡像創(chuàng)建的運(yùn)行實(shí)例谆沃。它可以被啟動(dòng)、開始仪芒、停止唁影、刪除。每個(gè)容器都是相互隔離的掂名、保證安全的平臺(tái)据沈。可以把容器看做是一個(gè)簡(jiǎn)易版的 Linux 環(huán)境(包括root用戶權(quán)限饺蔑、進(jìn)程空間锌介、用戶空間和網(wǎng)絡(luò)空間等)和運(yùn)行在其中的應(yīng)用程序。容器的定義和鏡像幾乎一模一樣,也是一堆層的統(tǒng)一視角孔祸,唯一區(qū)別在于容器的最上面那一層是可讀可寫的隆敢。
- 倉庫:倉庫(Repository)是集中存放鏡像文件的場(chǎng)所。倉庫(Repository)和倉庫注冊(cè)服務(wù)器(Registry)是有區(qū)別的崔慧。倉庫注冊(cè)服務(wù)器上往往存放著多個(gè)倉庫拂蝎,每個(gè)倉庫中又包含了多個(gè)鏡像,每個(gè)鏡像有不同的標(biāo)簽(tag)惶室。目前最大的倉庫就是docker hub温自。國內(nèi)的阿里云和網(wǎng)易云對(duì)docker hub上面的鏡像進(jìn)行了一個(gè)備份的操作。國內(nèi)的話拇涤,還是將倉庫設(shè)置成阿里云的捣作,這樣的話,能夠快速的將我們想要的鏡像給拉下來鹅士。
然后我們?cè)诳纯磀ocker的架構(gòu)圖券躁,如下:
在這里,Client就是我們的docker的客戶端掉盅,然后Host就是我們的系統(tǒng)也拜,可以看出我們的系統(tǒng)里面有多個(gè)鏡像,鏡像的實(shí)例就是我們的容器趾痘。我們的host可以從遠(yuǎn)端的倉庫拉鏡像下來慢哈。
2.2、Docker的安裝
Docker的安裝來說就顯得挺簡(jiǎn)單了永票。跟著官網(wǎng)來就行了卵贱,這里給大家?guī)讉€(gè)鏈接去安裝就行了
-
Mac安裝
去docs.docker.com/install/下載
直接安裝就好了
- centos
1、確定centos的版本
2侣集、到官網(wǎng)根據(jù)https://docs.docker.com/install/linux/docker-ce/centos/上面的步驟進(jìn)行一步一步安裝就好了
2.3键俱、容器的運(yùn)行
三、Docker的常用命令
下面的思維導(dǎo)圖簡(jiǎn)要的總結(jié)了一下我們常用的docker命令:
3.1世分、幫助命令
幫助命令主要有三個(gè):docker version编振、docker info、docker --help
要是有些命令記不住了臭埋,可以直接docker --help一下踪央,看看各個(gè)命令的意義。這里就不記這三個(gè)命令的使用了瓢阴。
3.2畅蹂、鏡像命令
(1)docker images
? ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE`
由于我的電腦上面沒有任何的鏡像的存在,所以就是空的荣恐。下面我們拉一個(gè)hello-world下來看看:
? ~ docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
Status: Downloaded newer image for hello-world:latest
拉取完了hello-world之后魁莉,我們?cè)俨捎胐ocker images看看
? ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest fce289e99eb9 2 months ago 1.84kB
這里的標(biāo)簽說明:
REPOSITORY :鏡像的倉庫源
TAG:鏡像的標(biāo)簽,latest表示是最新的版本。
IMAGE ID :鏡像的ID
CREATED:鏡像的創(chuàng)建時(shí)間
SIZE:鏡像的大小
同一個(gè)倉庫源可以有很多個(gè)TAG旗唁,代表它有很多個(gè)不同的版本。采用REPOSITORY: TAG的形式來定義不同的鏡像痹束。如果看不到鏡像名后面的標(biāo)簽检疫,那么就是默認(rèn)為鏡像名:latest
前面的思維導(dǎo)圖里面已經(jīng)看到了-a、-q祷嘶、--no-trunc的作用:
? ~ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest fce289e99eb9 2 months ago 1.84kB
? ~ docker images -q
fce289e99eb9
? ~ docker images -aq
fce289e99eb9
? ~ docker images --no-trunc
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e 2 months ago 1.84kB
這里我們可以結(jié)合a和q屎媳,拿到所有鏡像的id,然后實(shí)現(xiàn)一個(gè)刪除的操作论巍。
(2)docker search
docker search 鏡像名 ---> 可以去docker hub上面尋找鏡像烛谊,我們可以看到搜索centos的話,就有很多的鏡像了嘉汰,有描述丹禀、點(diǎn)贊數(shù)、是不是官方的鞋怀。
? ~ docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 5227 [OK]
ansible/centos7-ansible Ansible on Centos7 120 [OK]
jdeathe/centos-ssh CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86… 107 [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC session… 81 [OK]
imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 50 [OK]
centos/mysql-57-centos7 MySQL 5.7 SQL database server 47
tutum/centos Simple CentOS docker image with SSH access 43
gluster/gluster-centos Official GlusterFS Image [ CentOS-7 + Glust… 40 [OK]
openshift/base-centos7 A Centos7 derived base image for Source-To-I… 39
centos/postgresql-96-centos7 PostgreSQL is an advanced Object-Relational … 37
centos/python-35-centos7 Platform for building and running Python 3.5… 33
kinogmt/centos-ssh CentOS with SSH 26 [OK]
centos/httpd-24-centos7 Platform for running Apache httpd 2.4 or bui… 21
openshift/jenkins-2-centos7 A Centos7 based Jenkins v2.x image for use w… 20
centos/php-56-centos7 Platform for building and running PHP 5.6 ap… 19
pivotaldata/centos-gpdb-dev CentOS image for GPDB development. Tag names… 10
openshift/wildfly-101-centos7 A Centos7 based WildFly v10.1 image for use … 6
openshift/jenkins-1-centos7 DEPRECATED: A Centos7 based Jenkins v1.x ima… 4
darksheer/centos Base Centos Image -- Updated hourly 3 [OK]
pivotaldata/centos-mingw Using the mingw toolchain to cross-compile t… 2
pivotaldata/centos Base centos, freshened up a little with a Do… 2
pivotaldata/centos-gcc-toolchain CentOS with a toolchain, but unaffiliated wi… 1
blacklabelops/centos CentOS Base Image! Built and Updates Daily! 1 [OK]
openshift/wildfly-81-centos7 A Centos7 based WildFly v8.1 image for use w… 1
smartentry/centos centos with smartentry 0 [OK]
有的時(shí)候双泪,docker search的個(gè)數(shù)太多,所以我們可以選擇過濾一下密似,也就是思維導(dǎo)圖里面的加上-s來列出收藏?cái)?shù)不小于指定值的鏡像
? ~ docker search -s 100 centos
Flag --stars has been deprecated, use --filter=stars=3 instead
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 5227 [OK]
ansible/centos7-ansible Ansible on Centos7 120 [OK]
jdeathe/centos-ssh CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86… 107 [OK]
(3)docker pull
docker pull centos等價(jià)于docker pull centos:latest焙矛,默認(rèn)拉取的就是centos最新版本的鏡像。
? ~ docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a02a4930cb5d: Pull complete
Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
Status: Downloaded newer image for centos:latest
(4)docker rmi
因?yàn)槭莿h除鏡像残腌,所以是接rmi村斟。這里需要注意的是要是鏡像的一個(gè)容器正在使用中的話,采用docker rmi 鏡像名來刪除的話抛猫,是行不通的蟆盹。需要采用docker rmi -f 鏡像名的方式來強(qiáng)制刪除這個(gè)鏡像。
### 這個(gè)之前運(yùn)行了docker run hello-world這個(gè)命令
? ~ docker rmi hello-world
Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container b2b8498f9086 is using its referenced image fce289e99eb9
在上面的命令基礎(chǔ)上面加上f之后邑滨,就順利刪除掉了
? ~ docker rmi -f hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
Deleted: sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e
刪除之后就不見hell-world鏡像了日缨。
? ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest dd6ff929584a 12 hours ago 463MB
centos latest 1e1148e4cc2c 3 months ago 202MB
然后我們來刪除全部的images,:docker rmi -f $(docker images -aq),這里就利用到了我們前面的aq命令了掖看。
? ~ docker rmi -f $(docker images -aq)
3.3匣距、容器命令
Docker利用容器獨(dú)立運(yùn)行一個(gè)多著多個(gè)應(yīng)用,容器就是鏡像創(chuàng)建的一個(gè)實(shí)例了哎壳。它可以被啟動(dòng)毅待、開始、停止和刪除归榕。而且每一個(gè)容器都是相互隔離開來的尸红,保證安全你的平臺(tái)。
(1)新建并啟動(dòng)容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
參數(shù)options:
--name="容器新名字": 為容器指定一個(gè)名稱;
-d: 后臺(tái)運(yùn)行容器外里,并返回容器ID怎爵,也即啟動(dòng)守護(hù)式容器;
-i:以交互模式運(yùn)行容器盅蝗,通常與 -t 同時(shí)使用鳖链;
-t:為容器重新分配一個(gè)偽輸入終端,通常與 -i 同時(shí)使用墩莫;
-P: 隨機(jī)端口映射芙委;
-p: 指定端口映射,有以下四種格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
使用鏡像centos:latest以交互模式啟動(dòng)一個(gè)容器狂秦。這樣操作就進(jìn)入了容器centos了灌侣,然后我們可以看見我們處在了當(dāng)前的根目錄下面。
? ~ docker run -it centos
[root@a5874f60f4a8 /]# pwd
/
[root@a5874f60f4a8 /]#
然后我們可以看看docker容器里面的狀態(tài)裂问,
[root@35cd9cdd095b /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:43 pts/0 00:00:00 /bin/bash
root 16 1 0 08:43 pts/0 00:00:00 ps -ef
(2) docker ps [options]
列出我們當(dāng)前正在運(yùn)行的容器的命令侧啼。
-a :列出當(dāng)前所有正在運(yùn)行的容器+歷史上運(yùn)行過的
-l :顯示最近創(chuàng)建的容器。
-n:顯示最近n個(gè)創(chuàng)建的容器愕秫。
-q :靜默模式慨菱,只顯示容器編號(hào)。
--no-trunc :不截?cái)噍敵觥?
直接用docker ps就能看到當(dāng)前正在運(yùn)行的容器
? ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a5874f60f4a8 centos "/bin/bash" 3 minutes ago Up 3 minutes dreamy_goldberg
? ~ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
35cd9cdd095b centos "/bin/bash" 3 minutes ago Up 3 minutes clever_mclean
30d1fa5ccf3a hello-world "/hello" 17 minutes ago Exited (0) 17 minutes ago inspiring_chandrasekhar
? ~ docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
35cd9cdd095b centos "/bin/bash" 3 minutes ago Up 3 minutes clever_mclean
? ~ docker ps -q
35cd9cdd095b
? ~ docker ps --no-trunc
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
35cd9cdd095bc42175c3b9977e95810d8a9edbfd4e4954cd56d05122ab5b610a centos "/bin/bash" 4 minutes ago Up 4 minutes clever_mclean
(3)容器退出的兩種方式
1戴甩、exit:容器停止并退出符喝,這樣去docker ps查看的時(shí)候,就沒有當(dāng)前運(yùn)行的容器信息甜孤。
2协饲、ctrl+P+Q:就是保持容器不停止,但是我們也退出了缴川。
(4)容器的啟動(dòng)茉稠、重啟、停止把夸、強(qiáng)制停止以及刪除容器
啟動(dòng): docker start 容器ID或者容器名
~ docker start 35cd9cdd095b
35cd9cdd095b
? ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
35cd9cdd095b centos "/bin/bash" 15 minutes ago Up 10 seconds clever_mclean
停止:docker stop 容器ID或者容器名
? ~ docker stop 35cd9cdd095b
35cd9cdd095b
? ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
注意一下這里stop是溫柔的停止而线,然后kill是暴力的停止。
我們已經(jīng)有很多個(gè)容器了恋日,那么我們也可以對(duì)容器進(jìn)行一個(gè)刪除的操作
刪除容器:docker rm 容器ID或者容器名膀篮。
一次性刪除多個(gè)容器:docker rm -f $(docker ps -aq)或者 docker ps -aq | xargs docker rm
? ~ docker rm -f $(docker ps -aq)
35cd9cdd095b
30d1fa5ccf3a
(5)重要的一些命令
- 啟動(dòng)守護(hù)式容器
? ~ docker run -d centos
abab374ce58fd473044ad0bbca4a39d21cea323fd32cd2844364a6a09b72812b
? ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
在這里,我們看到了我們采用了啟動(dòng)守護(hù)式容器的方式進(jìn)行運(yùn)行了之后岂膳,但是docker ps并沒有發(fā)現(xiàn)運(yùn)行了誓竿。為什么會(huì)這樣呢?
因?yàn)镈ocker容器后臺(tái)運(yùn)行,就必須有一個(gè)前臺(tái)進(jìn)程.容器運(yùn)行的命令如果不是那些一直掛起的命令(比如運(yùn)行top谈截,tail)筷屡,就是會(huì)自動(dòng)退出的涧偷。這個(gè)是docker的機(jī)制問題,比如你的web容器,我們以nginx為例,正常情況下,我們配置啟動(dòng)服務(wù)只需要啟動(dòng)響應(yīng)的service即可毙死。例如service nginx start燎潮。但是,這樣做,nginx為后臺(tái)進(jìn)程模式運(yùn)行,就導(dǎo)致docker前臺(tái)沒有運(yùn)行的應(yīng)用,
- 查看容器日志
docker run -d centos /bin/sh -c 'while true;do echo hello bear;sleep 2;done'
? ~ docker run -d centos /bin/sh -c 'while true;do echo hello bear;sleep 2;done'
0bdad01a4f53f860615932d1ecf57672f4ed4a5e6f9ef569b6adb4b476f719fa
? ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0bdad01a4f53 centos "/bin/sh -c 'while t…" 11 seconds ago Up 10 seconds hardcore_jennings
docker logs + 容器id ---->查看日志
? ~ docker logs 0bdad01a4f53
hello bear
hello bear
hello bear
hello bear
hello bear
hello bear
hello bear
hello bear
hello bear
docker logs -t + 容器id ---->查看日志,加上了時(shí)間戳
? ~ docker logs -t 0bdad01a4f53
2019-03-06T01:50:28.701813500Z hello bear
2019-03-06T01:50:30.711125000Z hello bear
2019-03-06T01:50:32.715700300Z hello bear
2019-03-06T01:50:34.716762300Z hello bear
2019-03-06T01:50:36.720626500Z hello bear
2019-03-06T01:50:38.723566900Z hello bear
2019-03-06T01:50:40.691119800Z hello bear
2019-03-06T01:50:42.693349700Z hello bear
2019-03-06T01:50:44.695585100Z hello bear
2019-03-06T01:50:46.698940300Z hello bear
2019-03-06T01:50:48.701926000Z hello bear
-t -f 就是不停的追加扼倘,因?yàn)槭敲績(jī)擅腌姶蛴∫幌赂 R驗(yàn)樘嗔耍粗悬c(diǎn)蛋疼唉锌,所以我們就需要看后面的三行了,這里就用到了--tail+我們要看的行數(shù)了
? ~ docker logs -t -f --tail 3 0bdad01a4f53
2019-03-06T01:53:38.848574200Z hello bear
2019-03-06T01:53:40.855578300Z hello bear
2019-03-06T01:53:42.857704300Z hello bear
2019-03-06T01:53:44.861998600Z hello bear
2019-03-06T01:53:46.866374400Z hello bear
2019-03-06T01:53:48.871097600Z hello bear
2019-03-06T01:53:50.875416000Z hello bear
2019-03-06T01:53:52.877975100Z hello bear
感覺這個(gè)和linux里面的命令差不多
- 查看容器內(nèi)運(yùn)行的進(jìn)程
docker top 容器ID
? ~ docker top b9d40b1f1c37
PID USER TIME COMMAND
3160 root 0:00 /bin/sh -c while true;do echo hello bear;sleep 2;done
3328 root 0:00 sleep 2
- 查看容器內(nèi)部的細(xì)節(jié)
docker inspect + 容器ID 按照一個(gè)json串的形式返回竿奏。返回了一個(gè)很長(zhǎng)的json了袄简。Inspect一個(gè)json的串的形式》盒ィ看到具體的細(xì)節(jié) - 進(jìn)行入正在運(yùn)行的容器并以命令行交互
~ docker run -it centos
[root@583aeaf26957 /]# % ? ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
583aeaf26957 centos "/bin/bash" 22 seconds ago Up 21 seconds heuristic_banzai
進(jìn)入到容器中:docker attach 容器ID
? ~ docker attach 583aeaf26957
[root@583aeaf26957 /]#
Exec是另外一種方式了绿语。意思就是進(jìn)入到容器,然后執(zhí)行后面的一個(gè)命令候址,這個(gè)好處就是不用交互式的進(jìn)去吕粹。
? ~ docker exec -t 583aeaf26957 ls -l /tmp
total 4
-rwx------ 1 root root 836 Mar 5 17:36 ks-script-eC059Y
-rw------- 1 root root 0 Mar 5 17:34 yum.log
-
從容器拷貝文件到主機(jī)上
docker cp 容器ID:容器內(nèi)路徑 目的主機(jī)路徑
命令和Linux里面的拷貝差不多
Docker Commands Diagram
總結(jié),這一部分就簡(jiǎn)單的介紹了一下Docker岗仑、Docker的安裝和Docker的常用命令匹耕,喜歡的小伙伴,就點(diǎn)個(gè)贊哈荠雕。
持續(xù)更新中...
參考資料:
1稳其、https://www.docker.com/
2、https://www.bilibili.com/video/av17854410?from=search&seid=2496603295204351706