docker 菜鳥教程(docker快速入門)

關於 Docker 的一些概念和操作,我爭取這一篇部落格說完。下面正文開始。

Docker 映象與容器

說到 Docker ,你會常遇到兩個內容:image 和 container (即映象和容器) 關於映象和容器,你可以這樣來理解:映象是構建 Docker 的基石,使用者基於映象來執行自己的容器。或者說,映象是 Docker 生命週期中的構建或打包階段,而容器則是啟動或是執行階段。好吧,說的再明白點兒,就是有了映象,才有的容器。容器是在映象的基礎上,才有的。

Docker 安裝

以前寫過,這裡就不贅述了,直接上鍊接:需要科學上網的安裝方法:[Docker]CentOS7下Docker安裝教程不需要科學上網的安裝方法:[Docker]CentOS7通過rpm包安裝Docker

Docker 相關命令

Docker 操作相關命令:

systemctl start docker啟動 docker
systemctl status docker檢視 docker 狀態
systemctl stop docker停止 docker
systemctl enable docker開機自啟
docker info 檢視 docker 概要資訊
docker --help檢視 docker 幫助文件

映象相關命令:

檢視映象命令:

docker images

搜尋映象:

docker search 映象名稱

拉取映象:[Docker]Docker拉取,上傳映象到Harbor倉庫刪除映象:[Docker]如何批量刪除映象

容器相關命令:

檢視容器:檢視正在執行的容器:

docker ps

檢視所有容器:

docker ps -a

檢視最後一次執行的容器:

docker ps -l

檢視停止的容器:

docker ps -f status=exited

建立容器:

docker run

可以在 run 後面加引數。其中:

-i 表示執行容器
-t 表示容器啟動後進入其命令列
--name 為建立的容器命名
-v 表示目錄對映關係(前者是宿主機目錄,後者是對映到宿主機上的目錄)
-d 在 run 後面加上 -d 引數,則會建立一個守護式容器在後臺執行
-p 表示埠對映,前者是宿主機埠,後者是容器內的對映埠

互動式方式建立容器

docker run -it --name=容器名稱 映象名稱:標籤 /bin/bash

守護式方式建立容器

docker run -di --name=容器名稱 映象名稱:標籤

登入守護式容器方式

docker exec -it 容器名稱(或容器 ID) /bin/bash

啟動容器:

docker start 容器名稱(或容器 ID)

停止容器:

docker stop 容器名稱(或容器 ID)

檔案拷貝:

將檔案拷貝到容器內

docker cp 需要拷貝的檔案或目錄 容器名稱:容器目錄

將檔案從容器內拷貝出來

docker cp 容器名稱:容器目錄需要拷貝的檔案或目錄

目錄掛載:

在建立容器時,將宿主機的目錄與容器內的目錄進行對映,這樣可以通過修改宿主機某個目錄的檔案從而去影響容器 建立容器 新增 -v 引數 後邊為 宿主機目錄:容器目錄,完整命令:

docker run -v 宿主機目錄:容器目錄

如果共享的是多級目錄,可能會出現許可權不足的情況 可以通過新增引數 --privileged=true 來解決,因為 CentOS7 中安全模組將 selinux 許可權禁掉了,新增此引數,可以將問題解決。

檢視容器 IP:

docker inspect 容器名稱(容器 ID )

也可以直接輸出 IP 地址:

docker inspect --format='{{NetworkSetting。IPAddress}}' 容器名稱(容器 ID)

刪除容器

docker rm 容器名稱(容器 ID)

常見的應用部署

MySQL 部署:

1 ,拉取映象:

docker pull centos/mysql-57-centos7

2 ,建立容器:

docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7

其中:-p 代表埠對映,格式為 宿主機對映埠:容器執行埠 -e 代表新增環境變數 MYSQL_ROOT_PASSWORD 是 root 使用者的登入密碼 3 ,進入 mysql 容器:

docker exec -it mysql /bin/bash

4 ,登入 mysql :

mysql -u root -p

tomcat 部署:

1 ,拉取映象

docker pull tomcat:7-jre7

2 ,建立容器

docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/local/webapps tomcat:7-jre7

Nginx 部署:

1 ,拉取映象

docker pull nginx

2 ,建立 nginx 容器

docker run -di --name=mynginx -p 80:80 nginx

Redis 部署:

1 ,拉取映象

docker pull redis

2 ,建立 redis 容器

docker run -di --name=myredis -p 6379:6379 redis

遷移與備份

容器儲存為映象:

docker commit 容器名稱 映象名稱

例:

docker commit mynginx mynginx_i

將映象儲存為 tar 檔案,例:

docker save -o mynginx。tar mynginx_i

映象恢復與遷移:-i 輸入的檔案,例:

docker load -i mynginx。tar

Dockerfile

Dockerfile 是由一系列命令和引數構成的指令碼,基於基礎映象,最終建立一個新的映象,常用命令有:

FROM image_name:tag 定義了使用哪兒個基礎映象啟動構建流程
MAINTAINER user_name宣告映象的建立者
ENV key value設定環境變數(可以寫多條)
RUN command 是 Dockerfile 的核心部分(可以寫多條)
ADD source_dir/file dest_dir/file 將宿主機的檔案複製到容器內,如果是一個壓縮檔案,將會在複製後自動解壓
COPY source_dir/file dest_dir/file 和 ADD 相似,但是如果有壓縮檔案並不能解壓
WORDIR path_dir 設定工作目錄

需要注意一下,如果要使用 Dockerfile 檔案,名字必須為「Dockerfile」,否則裡面的命令不會有效。

映象上傳下載到映象倉庫

以前寫過部落格,感覺還是比較詳細的:[Docker]Docker拉取,上傳映象到Harbor倉庫(在上面應該也看到過了,再放一次)

關於 Docker 入門,我只能幫你到這兒了~

最後,我想重複一句話:選擇和一群優秀的人一起成長,你成長的速度絕對會不一樣!

歡迎轉發到朋友圈

歡迎留言