關於 Docker 入門,這一篇就夠了
- 2019 年 10 月 7 日
- 筆記
關於 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 入門,我只能幫你到這兒了~