Docker入門實踐

 Docker是一門很成熟的容器技術,相似虛擬機技術主要用作環境的隔離,方便環境的複製鏡像,虛擬機是基於操做系統這一層的,而Docker更加的輕量級,像是「應用」層級的。好比我須要一個MySQL環境、一個Nginx環境、一個netcore運行環境等等。html

 有兩個很是重要的概念要搞明白nginx

鏡像Images:作好的環境,存儲在倉庫,有點像SVN/Git,有點像你作好的一個系統盤,它存的就是環境,好比一個nginx的鏡像。git

容器Containers:一個鏡像在本機上的運行實例就是一個容器,能夠運行多個容器。好比我從遠端pull一個nginx的鏡像,而後在本機運行這個nginx,這就是造成了一個容器。docker

這兩個之間的關係就像類與實例化以後的對象同樣。bash

如今好多軟件都提供Docker形式的分發了,鏡像的查找能夠登陸https://hub.docker.com/查找。須要什麼環境,直接pull到本機,而後run運行,很是方便,不用在本機安裝環境了。能夠把本身配置好的環境提交成一個鏡像,而後在用的地方直接pull and run, 這樣就不用擔憂環境不一致的問題了,很是方便複製且環境一致。服務器

下面我以CentOS 7.2爲例,運行一個nginx的容器。ssh

# 更換源爲國內
cd /etc/yun.repos.d
ls
mv CentOS-Base.repo CentOS-Base.repo.backup
wget http://mirrors.163.com/.help/CenOS7-Base-163.repo
yum makecache
yum -y update

# 安裝 (經過官方sh腳本)
wget https://get.docker.com
mv index.html docker.sh
sh docker.sh
# 當前登陸用戶
sudo usermod -aG docker root

# 啓動中止,和普通服務同樣
service docker start

# 查看信息
docker info
docker version

# -------------
# 概念,要特別理解熟悉鏡像(images)和容器(container)
# images就像遠程服務器SVN上的代碼(實際上是程序環境,好比centOS,nginx,netcore....),能夠拉下來編譯運行
# container就是本機運行一個images產生的環境

# 經常使用命令,不知道的,--help查看

# 鏡像操做
docker images
# https://hub.docker.com
docker search xxx
docker pull xxx
docker rmi xxx

# 容器操做
docker run xxxxx
docker rm xxx
docker start xxx
docker stop xxx

docker attach xxx
docker exec -t -i xxx /bin/bash

docker run xxx yum install soft

docker cp xxx:/container_path ospath

# 進階 > 提交

 

docker容器運行後,一般是後臺運行的,怎麼進入容器查看運行狀況呢,有下面幾個辦法 網站

# 直接在外面查看容器運行的日誌
docker logs xxx

# 進到容器且顯示當前運行的程序的終端
# 退出時按Ctrl+P+Q,通常有點卡,這個界面是隻讀的,無法交互
docker attach xxxx

# 進到容器裏,能夠bash交互的
docker exec -t -i b2d28b4aa923 /bin/bash

使用docker exec進入容器後,就像ssh進入一個Linux環境同樣,徹底能夠控制系統了,好比查看文件路徑,打開一個文件等等。在機器與容器之間copy文件是一個常見的場景,可是,容器裏的文件結果是怎麼樣的,一個文件放在那個路徑下怎麼知道,這時用docker exe就很方便了。好比我運行一個nginx的容器,我須要把網站的文件copy進去,但我不知道應該容器裏網站文件應該放在什麼地方,能夠這樣作。進入容器後,注意看系統提示都變了,而後我就能夠查找nginx網站的路徑,退出時exit退到機器spa

# 把一個文件copy到容器nginx網站路徑下
docker cp my.html b2d28b4aa923:/user/share/nginx/html/my.html

# 也能夠反過來copy
docker cp xxx:/user/file /root/file

# 容器裏的文件路徑爲 容器ID或名稱:容器裏的路徑

 

參考:https://yeasy.gitbooks.io/docker_practice/content/container/run.html操作系統

相關文章
相關標籤/搜索