docker笔记
安装
https://www.vps69.com/posts/install-docker/
常用命令
临时启动镜像
docker run -it --rm --name xxx image-name
启动容器
docker run -it -d --restart always --name -v /path:/path -p80:80 -e MYSQL_USER="test" image-name
进入容器
docker exec -it docker-name bash
nvidia docker 容器内使用显卡
参考:https://cloud.tencent.com/developer/article/1924792
- 安装nvidia-docker2并重启
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
apt-get update
apt-get install -y nvidia-docker2
sudo systemctl restart docker
- 使用方式
docker run -it --gpus all nvidia/cuda:11.4.0-base-ubuntu20.04 nvidia-smi
或者指定单独的显卡
docker run -d --name kuzco-worker \
--gpus '"device=0,1"' \
-e API_KEY=<YOUR_API_KEY> \
kuzco/worker:latest
依靠Watchtower 容器自动升级其他容器
参考:
https://zhuanlan.zhihu.com/p/553424824 这个例子比较详细一点,还可以发送更新后的邮件通知
https://www.youtube.com/watch?v=kKu1zkL5fCc
filestation 例子:
https://github.com/filecoin-station/core/pkgs/container/core
sudo docker run --name filestation5 --detach --restart always --env FIL_WALLET_ADDRESS=0x123 ghcr.io/filecoin-station/core
sudo docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower
docker logs filestation 2>&1 | grep "rewardsScheduledForAddress\|totalJobsCompleted"
dockerX11转发问题
https://www.zealseeker.com/archives/docker-for-gui-environment/
查看容器的启动命令
参考链接:https://www.cnblogs.com/hellojesson/p/13037949.html
sudo docker run --rm -v /var/run/docker.sock:/var/run/docker.sock cucker/get_command_4_run_container [容器名或ID]
docker镜像导入导出命令
# 导出
docker save 0fdf2b4c26d3 > hangge_server.tar
# 导入
docker load < hangge_server.tar
docker代理问题(v友提供)
docker 代理问题:
https://blog.xiaoz.org/archives/20916
https://dockerhub.icu/
https://github.com/cmliu/CF-Workers-docker.io
https://github.com/bboysoulcn/registry-mirror
https://github.com/tech-shrimp/docker_image_pusher
https://github.com/DaoCloud/public-image-mirror
启动后的容器添加开机自启功能
docker update --restart unless-stopped my_container
查看镜像的编译命令 添加--no-trunc,参数可以看到全一点
docker history --no-trunc registry.cn-hangzhou.aliyuncs.com/jasmine/xmrig-6.21.3
docker配置健康检查机制
docker设置了健康检查,但是容器状态为unhealthy,没有自动重启!!!
HEALTHCHECK --interval=5m --timeout=2m --start-period=45s \
CMD curl -f --retry 6 --max-time 5 --retry-delay 10 --retry-max-time 60 "http://localhost:8080/health" || bash -c 'kill -s 15 -1 && (sleep 10; kill -s 9 -1)'
------------------
# # # Add HEALTHCHECK instruction
HEALTHCHECK --interval=600s --timeout=180s --retries=1 CMD /bin/bash /usr/local/bin/check_health.sh || bash -c 'kill -s 15 -1 && (sleep 10; kill -s 9 -1)'
排查容器健康检测容器日志:
sudo docker inspect --format='{{json .State.Health}}' aleo| jq
docker健康检查通过脚本启动,想要输出日志到文件并且可以通过docker logs -f查看
/bin/bash -c "\
./aleo_prover \
--pool $POOLURL \
--address $USERCOUNT \
--custom_name $(hostname | awk -F. '{print $1}') \
| tee -a /var/log/$SERVICE_NAME.log "
docker启动的容器怎么查看使用了几张显卡
"docker inspect zk-aleo | grep -B5 gpu"
输出示例:
14.17.70.248 | CHANGED | rc=0 >>
"Driver": "",
"Count": -1,
"DeviceIDs": null,
"Capabilities": [
[
"gpu"
14.17.70.55 | CHANGED | rc=0 >>
"DeviceRequests": [
{
"Driver": "",
"Count": 0,
"DeviceIDs": [
"1",
"2",
"3",
"4"
],
"Capabilities": [
[
"gpu"
]
],
"Options": {}
}
],
14.17.70.248为全部使用
14.17.70.55为出了1,2,3,4,其他全部使用
自定义docker镜像目录
cat /etc/docker/daemon.json
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
],
"data-root": "/home/docker/docker_data"
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」