Docker:
Docker是用Go語(yǔ)音開發(fā),在軟件系統(tǒng)上做到資源的隔離,不像虛擬機(jī)會(huì)將整套系統(tǒng)復(fù)制,其虛擬機(jī)本身的運(yùn)行就占據(jù)了實(shí)體機(jī)的部分性能.而Docker的資源隔離則不會(huì),在Docker中跑資源和在物理機(jī)上跑資源基本相似。
Docker環(huán)境依賴:
Docker 只能在基于linux系統(tǒng)運(yùn)行的環(huán)境中,在windows中使用docker desktop。
Docker需要Centos7.* 且64位,3.1.0以上版本才可用。
uname -a
Docker安裝:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
此處安裝的是docker-engine。
Docker 鏡像:
- 科大鏡像:https://docker.mirrors.ustc.edu.cn/
- 網(wǎng)易:https://hub-mirror.c.163.com/
- 阿里云:https://<你的ID>.mirror.aliyuncs.com
- 七牛云加速器:https://reg-mirror.qiniu.com
打開 /etc/docker/daemon.json ,如果沒有則新建
{"registry-mirrors":["https://hub-mirror.c.163.com/"]}
- 鏡像生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
異常:```
Ubuntu執(zhí)行錯(cuò)誤:
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
sudo dockerd
failed to start daemon: Error initializing network controller: error obtaining controller instance
>docker info //查看
* docker啟動(dòng),停止,和重啟:
>sudo systemctl start docker
>sudo docker run hello-world
>sudo systemctl restart docker
>sudo systemctl stop docker
>yum remove docker-ce //卸載
docker的鏡像文件存在 /var/lib/docker/image下。
## Docker組成:
+ 鏡像(Image):Docker 鏡像(Image),就相當(dāng)于是一個(gè) root 文件系統(tǒng)。比如官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系統(tǒng)的 root 文件系統(tǒng)。
+ 容器(Container):鏡像(Image)和容器(Container)的關(guān)系,就像是面向?qū)ο蟪绦蛟O(shè)計(jì)中的類和實(shí)例一樣,鏡像是靜態(tài)的定義,容器是鏡像運(yùn)行時(shí)的實(shí)體。容器可以被創(chuàng)建、啟動(dòng)、停止、刪除、暫停等。
+ 倉(cāng)庫(kù)(Repository):倉(cāng)庫(kù)可看成一個(gè)代碼控制中心,用來保存鏡像。
## Docker容器創(chuàng)建:
一般我們是通過在linux的物理機(jī)上安裝docker-engine,轉(zhuǎn)化鏡像地址。然后通過命令下載容器。
此處以下載cento為例:
https://registry.hub.docker.com/_/centos/
> docker pull centos:centos7
> docker images //查看下載的鏡像文件
安裝容器:
> docker run -itd --name centos-test centos:centos7
> docker ps //查看啟動(dòng)的容器
容器操作:
> \>docker run centos:centos7 /bin/echo "hello Docker"
啟動(dòng)并進(jìn)入偽終端中
> \>docker run -it centos:centos7 /bin/bash
-t 表示開啟偽終端
-i 表示對(duì)輸入可以交互
這樣就和我們?cè)趌inux下操作一樣了。
> \>cat proc/version //查看版本
> \>exit //或者Ctrl + D 退出當(dāng)前偽終端,不過容器還在
容器ID:
> \>docker run centos:centos7 /bin/sh -c "while true; do echo hello world; sleep 1; done" //使用這種啟動(dòng)容器,開啟了循環(huán),但是循環(huán)導(dǎo)致我們退不出來
> \>docker ps //可以看到容器container_ID

</br>docker容器中的狀態(tài)STATUS:
* created(已創(chuàng)建)
* restarting(重啟中)
* running 或 Up(運(yùn)行中)
* removing(遷移中)
* paused(暫停)
* exited(停止)
* dead(死亡)
> \>docker stop [container_id] //停止剛才寫的 循環(huán)helloworld!
> \>docker start [container_id] // 啟動(dòng)停止的容器,注意停止后會(huì)在docker ps中消失
> \>docker restart [container_id] //重啟
> \>docker ps -a //可查看所有的死掉的和在運(yùn)行的
> \>docker run -d centos:centos7 /bin/sh -c "while true; do echo hello world; sleep 1; done" // -d 表示后臺(tái)執(zhí)行,會(huì)返回container_id
> \>docker logs [container_id] //可看到執(zhí)行的內(nèi)容 helloworld!
docker我們啟動(dòng)一些容器,要讓容器在后臺(tái)運(yùn)行,需要加 -d
> \>docker run -itd centos:centos7 /bin/bash
這樣容器就不會(huì)直接進(jìn)入偽終端中。
如果我們需要進(jìn)入終端
> \>docker attach [container_id] /bin/bash //慎用,退出后,容器會(huì)死亡
> \>docker exec -it [container_id] /bin/bash //退出,不會(huì)死亡
> \>docker exec --help //查看內(nèi)容
浙公網(wǎng)安備 33010602011771號(hào)