Docker常用命令與小技巧匯總
安裝腳本
Ubuntu / Centos
Debian的安裝貌似有問題, 需要解決安裝源的問題。
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh --mirror Aliyun / AzureChinaCloud
如果在海外的AWS或者GCP等云服務(wù)器廠商, --mirror 自然不需要加上去了。
Centos在運(yùn)行完成之后, 還需要手動的 sudo systemctl start docker.service 否則會提示docker沒有啟動之類的錯誤
日志相關(guān)
Grep String
正確的姿勢: docker logs nginx 2>&1 | grep "127."
比如查看Jupyter Notebook的token: docker logs notebook 2>&1 | grep "token"
其他支持的參數(shù)
-f : 類似tail -f 命令
--since : 從某個時間戳開始,比如 2013-01-02T13:23:37 也支持相對時間,比如: 42m
--until : 與上類似, 不過是反過來。
-t, --timestamp : 顯示時間戳
--tail N(default all) : 顯示最后幾行數(shù)據(jù)
Mount的技巧
比如Grafana 等,在docker image之中自帶一些文件。如果直接mount對應(yīng)的目錄并且host目錄為空, 那么docker內(nèi)部的
目錄就會被覆蓋。如何處理這種情況呢?
簡單粗暴的方法1:(思路only)
先運(yùn)行一次, 然后使用 docker cp 命令將其復(fù)制出來
然后刪除剛才的docker container, 將文件復(fù)制到對應(yīng)的目錄,再mount
更優(yōu)雅一些的方法2:
以啟動 ClickHouse 為例
# Step 1.1: 創(chuàng)建一個docker volume (目的: 把CH Server的配置暴露出來) docker volume create --driver local \ --opt type=none \ --opt device=/home/centos/workspace/clickhouse/configs \ --opt o=bind \ ch-server-configs # Step 1.2 : 創(chuàng)建volume , mount 數(shù)據(jù)庫數(shù)據(jù) docker volume create --driver local \ --opt type=none \ --opt device=/home/centos/workspace/clickhouse/data \ --opt o=bind \ ch-server-data # Step 2 : 啟動 (注意: 當(dāng)存儲數(shù)據(jù)較多的時候, 第二次啟動,會花比較長的時間來初始化。 初始化結(jié)束之前嘗試鏈接會失敗。) sudo docker run -d --name mkt-ch-server \ -v ch-server-configs:/etc/clickhouse-server \ -v ch-server-data:/var/lib/clickhouse \ --restart always \ -p 9000:9000 -p 8123:8123 \ --ulimit nofile=262144:262144 yandex/clickhouse-server
這樣docker鏡像自帶的配置文件就不會在第一次mount的時候被清空
定時任務(wù)
比如mysql需要定期導(dǎo)出數(shù)據(jù)備份。這個操作最好是利用宿主機(jī)的crond來完成
0 1 * * * docker exec mysqldump xxxx
常用Docker鏡像及其安裝命令
MySQL
安裝
docker run --name some-mysql --restart always\ -v /my/own/datadir:/var/lib/mysql\ -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
Dump 數(shù)據(jù)
方式1: 已經(jīng)在本地有mysql docker container
下面的命令是針對docker內(nèi)部的mysql,也可以直接指定參數(shù)dump remote mysql
docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /path-to-data/all-databases.sql
方式2 : 在本地還沒有mysql docker container
# 用完就刪除,并在命令行提示輸入密碼 docker run -i --rm mysql:5.7 mysqldump --all-databases\ -h 172.17.0.1 -uroot -p | gzip -9 > /home/centos/workspace/mysql-data/backup.sql.gz
編輯器原因, 上面 > 沒有正確顯示出來
Restore 數(shù)據(jù)
還是參考上面 Dump 的方式,只不過命令行工具改成了 mysql
Python Proxy
多多少少要搞一些爬蟲吧。充分利用云服務(wù)器的IP用來做爬蟲代理。目前發(fā)現(xiàn)最簡單的爬蟲代理搭建方法:
docker run --name py-proxy -d --restart always -p 8899:8899 abhinavsingh/proxy.py
注意:
- 截至目前位置, 這個docker鏡像的python腳本還比較老,不支持basic auth. 如果需要basic auth, 需要自行更新python文件,并重新docker build才可以。Github地址: https://github.com/abhinavsingh/proxy.py
- 在實際生產(chǎn)之中, 用多了貌似有自動無法鏈接的情況。也可能是目標(biāo)網(wǎng)站的問題。
- 這個東東也可以作為瀏覽器SwitchSharp的代理哦, 不過推薦加上https + basic auth. 具體操作請看官方文檔。
Jupyter Notebook
用了一圈, 感覺還是 tensorflow 鏡像自帶的Notebook比較簡單。 因為在mount host 目錄的時候, 沒有奇奇怪怪的權(quán)限問題。bash script 如下:
sudo docker run --name notebook -d --restart always \ -p 127.0.0.1:8888:8888 \ -v /path-to-workspace/notebooks:/tf \ tensorflow/tensorflow:latest-py3-jupyter
如果還需要鏈接Apache Spark等,參考如下Script
sudo docker run --name pyspark-notebook -d \ --net host --pid host -e TINI_SUBREAPER=true -p 8888:8888 \ -v /path-to-workspace/notebooks:/tf \ tensorflow/tensorflow:latest-py3-jupyter
Grafana
ID=$(id -u) docker run \ -d --restart always \ -p 3000:3000 \ --name=grafana \ --user $ID -v /path-to-data/grafana-data:/var/lib/grafana \ -e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource" \ -e "GF_SECURITY_ADMIN_PASSWORD=aaabbbccc" \ grafana/grafana
一些簡單的解釋:
- –user $ID 必須要設(shè)置, 否則docker內(nèi)部會出現(xiàn)permission issue
- GF_INSTALL_PLUGINS : 安裝一些非自帶的插件
- GF_SECURITY_ADMIN_PASSWORD : 賬號: admin / aaabbbccc
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。
相關(guān)文章
用Docker搭建nextcloud個人網(wǎng)盤教程
大家好,本篇文章主要講的是用Docker搭建nextcloud個人網(wǎng)盤教程,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2021-12-12docker(alpine+golang)?中?hosts?不生效問題解決方法
這篇文章主要介紹了docker(alpine+golang)?中?hosts?不生效問題解決大全,本文給大家分享了三種解決方法,每種方法給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07常用的8個應(yīng)用和中間件的Docker運(yùn)行示例詳解
Portainer是一個輕量級的管理 UI ,可讓你輕松管理不同的 Docker 環(huán)境(Docker 主機(jī)或 Swarm 群集),這篇文章主要介紹了常用的8個應(yīng)用和中間件的Docker運(yùn)行示例,需要的朋友可以參考下2024-03-03Docker安裝MySql8并遠(yuǎn)程訪問的實現(xiàn)
本文主要介紹了Docker安裝MySql8并遠(yuǎn)程訪問的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07在?OpenKylin?上安裝?Docker的詳細(xì)過程
在?OpenKylin?上安裝?Docker可能會遇到與?Ubuntu?略有不同的包管理問題,這篇文章主要介紹了在?OpenKylin上安裝?Docker的過程,需要的朋友可以參考下2024-05-05Docker 網(wǎng)絡(luò)模式(四種)詳細(xì)介紹
這篇文章主要介紹了Docker 網(wǎng)絡(luò)模式詳細(xì)介紹的相關(guān)資料,這里提供了四種網(wǎng)絡(luò)模式的介紹,Docker 作為輕量級容器技術(shù),很多比較不錯的功能,網(wǎng)絡(luò)不是多好,這里就整理下,需要的朋友可以參考下2016-11-11Docker 教程之存出和載入鏡像,移除及鏡像實現(xiàn)原理
這篇文章主要介紹了Docker 教程之存出和載入鏡像,移除及鏡像實現(xiàn)原理的相關(guān)資料,需要的朋友可以參考下2016-12-12