關於 Docker 入門,這一篇就夠了

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

Docker 鏡像與容器

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

Docker 安裝

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

Docker 相關命令

Docker 操作相關命令:

<code>systemctl start docker啟動 docker
systemctl status docker查看 docker 狀態
systemctl stop docker停止 docker
systemctl enable docker開機自啟
docker info 查看 docker 概要信息

docker --help查看 docker 幫助文檔
/<code>

鏡像相關命令:

查看鏡像命令:

<code>docker images
/<code>

搜索鏡像:

<code>docker search 鏡像名稱
/<code>

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

容器相關命令:

查看容器:查看正在運行的容器:

<code>docker ps
/<code>

查看所有容器:

<code>docker ps -a
/<code>

查看最後一次運行的容器:

<code>docker ps -l
/<code>

查看停止的容器:

<code>docker ps -f status=exited
/<code>

創建容器:

<code>docker run
/<code>

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

<code>-i 表示運行容器
-t 表示容器啟動後進入其命令行
--name 為創建的容器命名
-v 表示目錄映射關係(前者是宿主機目錄,後者是映射到宿主機上的目錄)
-d 在 run 後面加上 -d 參數,則會創建一個守護式容器在後臺運行
-p 表示端口映射,前者是宿主機端口,後者是容器內的映射端口
/<code>

交互式方式創建容器

<code>docker run -it --name=容器名稱 鏡像名稱:標籤 /bin/bash
/<code>

守護式方式創建容器

<code>docker run -di --name=容器名稱 鏡像名稱:標籤 

/<code>

登錄守護式容器方式

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

啟動容器:

<code>docker start 容器名稱(或容器 ID)
/<code>

停止容器:

<code>docker stop 容器名稱(或容器 ID)
/<code>

文件拷貝:

將文件拷貝到容器內

<code>docker cp 需要拷貝的文件或目錄 容器名稱:容器目錄
/<code>

將文件從容器內拷貝出來

<code>docker cp 容器名稱:容器目錄需要拷貝的文件或目錄
/<code>

目錄掛載:

在創建容器時,將宿主機的目錄與容器內的目錄進行映射,這樣可以通過修改宿主機某個目錄的文件從而去影響容器 創建容器 添加 -v 參數 後邊為 宿主機目錄:容器目錄,完整命令:

<code>docker run -v 宿主機目錄:容器目錄
/<code>

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

查看容器 IP:

<code>docker inspect 容器名稱(容器 ID )
/<code>

也可以直接輸出 IP 地址:

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

刪除容器

<code>docker rm 容器名稱(容器 ID)
/<code>

常見的應用部署

MySQL 部署:

1 ,拉取鏡像:

<code>docker pull centos/mysql-57-centos7
/<code>

2 ,創建容器:

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

其中:-p 代表端口映射,格式為 宿主機映射端口:容器運行端口 -e 代表添加環境變量 MYSQL_ROOT_PASSWORD 是 root 用戶的登錄密碼 3 ,進入 mysql 容器:

<code>docker exec -it mysql /bin/bash
/<code>

4 ,登錄 mysql :

<code>mysql -u root -p
/<code>

tomcat 部署:

1 ,拉取鏡像

<code>docker pull tomcat:7-jre7
/<code>

2 ,創建容器

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

/<code>

Nginx 部署:

1 ,拉取鏡像

<code>docker pull nginx
/<code>

2 ,創建 nginx 容器

<code>docker run -di --name=mynginx -p 80:80 nginx
/<code>

Redis 部署:

1 ,拉取鏡像

<code>docker pull redis
/<code>

2 ,創建 redis 容器

<code>docker run -di --name=myredis -p 6379:6379 redis
/<code>

遷移與備份

容器保存為鏡像:

<code>docker commit 容器名稱 鏡像名稱
/<code>

例:

<code>docker commit mynginx mynginx_i
/<code>

將鏡像保存為 tar 文件,例:

<code>docker save -o mynginx。tar mynginx_i
/<code>

鏡像恢復與遷移:-i 輸入的文件,例:

<code>docker load -i mynginx。tar
/<code>

Dockerfile

Dockerfile 是由一系列命令和參數構成的腳本,基於基礎鏡像,最終創建一個新的鏡像,常用命令有:

<code>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 設置工作目錄
/<code>

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

鏡像上傳下載到鏡像倉庫

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

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

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

歡迎轉發到朋友圈

"


分享到:


相關文章: