Docker入門指南
作者:AndyLizh
出處:blog.csdn.net/gebitan505
更換國內(nèi)鏡像源
docker store地址默認(rèn)是在國外,下載速度很慢,自行更換國內(nèi)docker加速地址。
名詞解釋
image: 鏡像containers: 容器docker-machine: docker虛擬主機(jī)docker store: docker存儲(chǔ)云
術(shù)語
Image 和 Container
Image可以理解為一個(gè)系統(tǒng)鏡像,Container是Image在運(yùn)行時(shí)的一個(gè)狀態(tài)。
如果拿虛擬機(jī)作一個(gè)比喻的話,Image就是關(guān)機(jī)狀態(tài)下的磁盤文件,Container就是虛擬機(jī)運(yùn)行時(shí)的磁盤文件,包括內(nèi)存數(shù)據(jù)。
Image 是系統(tǒng)一般來源是官方資源,或者比較穩(wěn)定成熟的資源
Container 是啟動(dòng)系統(tǒng)后的運(yùn)行時(shí)環(huán)境, 包括磁盤 + 運(yùn)行的其他軟件 + 環(huán)境配置他們之間可以互相轉(zhuǎn)換。
docker daemon
主機(jī)上運(yùn)行的后臺(tái)服務(wù)管理構(gòu)建,運(yùn)行和分發(fā)Docker容器
docker client
命令行工具,允許用戶與Docker守護(hù)進(jìn)程交互
docker store
docker images的注冊(cè)地址,可以在其中找到受信任的企業(yè)級(jí)容器,插件和Docker版本。相當(dāng)于docker的倉庫。
運(yùn)行docker HelloWorld
docker run hello-world
拉取docker cloud項(xiàng)目
docker pull alpine
docker run hello-world 背后也做了 docker pull 的動(dòng)作去docker服務(wù)器上面下載。
提示:如果本地不存在這個(gè)image的話,如果本地已經(jīng)存在,就不去docker store上面下載了。
查看所有的docker鏡像
docker images
執(zhí)行 docker 的命令
docker run alpine ls -l
進(jìn)入一個(gè)docker
docker run -it alpine /bin/sh
exit退出
查看當(dāng)前運(yùn)行的 docker
docker ps
查看全部 docker
docker ps -a
獲取 docker run 參數(shù)列表
docker run --help
查看一個(gè)docker的信息
docker inspect alpine
暫停 docker 容器
docker stop xxx
xxx 為 docker容器的名字 或CONTAINER ID
刪除一個(gè)docker容器
docker rm xxx
-f 運(yùn)行中的docker容器,需要先暫停再刪除,或者直接加此參數(shù)
docker rm -f xxx
基本的docker web項(xiàng)目
從docker store獲取依賴的docker image
// docker pull dockersamples/static-site
docker run -d dockersamples/static-site
-d 表示后臺(tái)運(yùn)行,不加-d,就像Tomcat一樣,無法再在當(dāng)前命令窗口操作了,默認(rèn)是flase。
detached 模式運(yùn)行docker
docker run --name static-site -e AUTHOR="Your Name" -d -P dockersamples/static-site
-d 獨(dú)立于當(dāng)前命令窗口運(yùn)行
-P 將所有暴露的docker容器端口,映射到真實(shí)主機(jī)上面的隨機(jī)端口
-p 將當(dāng)前主機(jī)上面的指定端口,映射到docker容器的一個(gè)端口:-p 8888:80 將當(dāng)前主機(jī)的8888端口映射到docker容器的80端口。
--name 指定容器的名稱
-e 可以傳遞環(huán)境變量給docker容器
AUTHOR 環(huán)境變量的名稱和值,可以自己任意指定
查看docker容器映射的端口
docker port [容器名 --name 指定的值]
$ docker port static-site
443/tcp -> 0.0.0.0:32772
80/tcp -> 0.0.0.0:32773
使用localhost:[docer80的本地映射端口]訪問:
http://localhost:32769/
創(chuàng)建docker主機(jī)
列出所有的docker主機(jī)
docker-machine ls
獲取docker主機(jī)的IP地址
docker-machine ip default
可能出現(xiàn)錯(cuò)誤:
Host does not exist: "default"
解決:
docker-machine create default
如果繼續(xù)報(bào)錯(cuò),Mac需要安裝:VirtualBox
https://www.docker.com/products/docker-toolbox
Mac
docker-machine create -d virtualbox default
Windows
需要在添加刪除程序里面開啟hyperv,只有專業(yè)版的Windows才有,家庭版不存在此功能。
docker-machine create --driver hyperv vm
https://docs.docker.com/machine/drivers/hyper-v/
安裝完以后重啟docker
Linux
sudo service docker restart
Mac 和 Windows 圖形化界面手動(dòng)重啟
然后繼續(xù)創(chuàng)建:
docker-machine create default
名字可以隨便起,不一定要叫default
不報(bào)錯(cuò)任何錯(cuò)誤,如:
Running pre-create checks…
Error with pre-create check: "exit status 126"
說明安裝成功:
Running pre-create checks…
Creating machine…
(default) Copying
(default) Creating VirtualBox VM…
(default) Creating SSH key…
(default) Starting the VM…
(default) Check network to re-create if needed…
(default) Found a new host-only adapter: "vboxnet0"
(default) Waiting for an IP…
Waiting for machine to be running, this may take a few minutes…
Detecting operating system of created instance…
Waiting for SSH to be available…
Detecting the provisioner…
Provisioning with boot2docker…
Copying certs to the local machine directory…
Copying certs to the remote machine…
Setting Docker configuration on the remote daemon…
Checking connection to Docker…
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env default
然后再次查看docker主機(jī):
docker-machine ls
看到NAME為default的主機(jī),說明成功。
再次輸入:docker-machine ip default
得到一個(gè)主機(jī)的IP
192.168.99.100
進(jìn)入docker主機(jī)
docker-machine ssh default
看到命令行前綴改變,表示成功
docker@default:~$
從docker store下載并運(yùn)行
dockersamples/static-site:
docker run --name static-site -e AUTHOR="Your Name" -d -P dockersamples/static-site
然后查看docker主機(jī)里面容器的映射端口,使用docker主機(jī)的ip + 主機(jī)內(nèi)容器的端口就可以訪問到主機(jī)內(nèi)的容器服務(wù):
查看容器映射端口
docker port static-site
443/tcp -> 0.0.0.0:32768
80/tcp -> 0.0.0.0:32769
http://192.168.99.100:32769/
如有文章對(duì)你有幫助,
“在看”和轉(zhuǎn)發(fā)是對(duì)我最大的支持!

