Docker 可以隔離資源耐朴,可以解決安裝衡楞,拆卸吱雏,升級(jí),分發(fā)等管理軟件的常見(jiàn)問(wèn)題瘾境。
# Docker解決了什么問(wèn)題:
- 組織有序歧杏,隔離一切
- 提高可移植性
- 保護(hù)你的機(jī)器
# Docker常用名詞解釋
- 鏡像,就像程序中的類迷守,是運(yùn)行程序的所有文件的捆綁快照犬绒,可交付的基本單位,docker pull
- 容器盒犹,就像類的實(shí)例懂更,是運(yùn)行的鏡像,有自己的參數(shù)和數(shù)據(jù)急膀,可使用的基本單位沮协,docker run|start|stop
- 存儲(chǔ)卷,提供容器無(wú)關(guān)的數(shù)據(jù)管理方式
- 資源分配卓嫂,可以限制內(nèi)存慷暂,cpu,設(shè)備等
# Docker常用集錦
常用操作
# 獲取鏡像
docker pull image-name:tag
# 刪除鏡像
docker image rm image-name|id# 運(yùn)行容器
docker run --name container-name image-name:tag
# 查看容器
docker ps -a
# 停止容器
docker stop container-name
# 開(kāi)始容器
docker start container-name
# 查看容器 支持-f晨雳,--since 30m行瑞,--tail=10
docker logs container-name
# 刪除容器
docker rm container-name|id
# 進(jìn)入容器
docker exec -it container-name bash|sh
常見(jiàn)問(wèn)題
- 多容器互訪,同一機(jī)器的不同容器相互訪問(wèn)
通過(guò)指定同一網(wǎng)絡(luò)即可餐禁,直接使用network_name:原始端口(非映射端口)
*Docker容器互訪三種方式 - 三只松鼠 - 博客園 (cnblogs.com)- 容器改名
docker rename <old_container> <new_container>- 端口映射
docker run -p 宿主端口:內(nèi)部端口- 文件拷貝
docker cp container-id:container-path host-path- 導(dǎo)入導(dǎo)出
docker save docker-image > file.tar
docker load -i file.tar- 自動(dòng)重啟
docker container update --restart=always
// 失敗重啟5次
docker run --restart=on-failure:5
關(guān)于時(shí)區(qū)問(wèn)題
基礎(chǔ)鏡像血久,比如alpine,默認(rèn)時(shí)區(qū)是UTC帮非,可以通過(guò)進(jìn)入容器氧吐,使用date -R查看讹蘑,國(guó)內(nèi)一般使用UTC+8或者CTS
更改時(shí)區(qū)的方法:
- 自定義Dockerfile?適合作為基礎(chǔ)鏡像使用
ENV TZ Asia/Shanghai
RUN apk add tzdata && cp /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone
參考:Docker 處理時(shí)區(qū)問(wèn)題 - 簡(jiǎn)書(shū) (jianshu.com)- 運(yùn)行時(shí)參數(shù)
# 設(shè)置時(shí)區(qū),適合針對(duì)已經(jīng)支持時(shí)區(qū)的鏡像
docker run -e TZ="Asia/Shanghai"
# 同步時(shí)區(qū)筑舅,適合根據(jù)宿主環(huán)境使用不同時(shí)區(qū)的情況
docker run -v /etc/localtime:/etc/localtime
參考: docker時(shí)區(qū)問(wèn)題-處理方法 - 清風(fēng)木 - 博客園 (cnblogs.com)
# java特殊處理
ENTRYPOINT ["sh","-c","java ${JAVA_OPTS} -jar -Duser.timezone=GMT+08 app.jar"]
參考: Docker(五):Docker 時(shí)區(qū)問(wèn)題_碼農(nóng)農(nóng)碼一生的博客-CSDN博客_docker 時(shí)區(qū)
常見(jiàn)軟件運(yùn)行參數(shù)
nginx
docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx
docker run --name custom-nginx -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d nginxredis
docker run --name some-redis -d redis
docker run -v /myredis/conf:/usr/local/etc/redis --name custom-redis redis redis-server /usr/local/etc/redis/redis.conf
docker run -it --network some-network --rm redis redis-cli -h some-redismysql
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
docker run --name custom-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
docker exec -it some-mysql bash詳細(xì)說(shuō)明可以訪問(wèn)hub.docker.com查看
徹夜怒肝座慰!Docker 常見(jiàn)疑難雜癥解決方案已擼完,快要裂開(kāi)了翠拣。版仔。。 - 知乎 (zhihu.com)