Docker 容器管理
docker 安装
国内源
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
#部分地区无法访问get.docker.com,可以用下面这种方式
curl -fsSL https://proxy.xiaoyue.pro/https://get.docker.com | bash -s docker --mirror Aliyun
国外源
curl -fsSL https://get.docker.com | bash
docker常用命令
systemctl enable docker #自启
systemctl disable docker #关闭开机自启
systemctl start docker #运行docker服务
systemctl stop docker #关闭docker服务
systemctl restart docker #重启docker服务
docker start|stop|restart <id| name> #打开|关闭|重启容器
docker ps #查看正在运行的docker
docker rm <id| name> #删除容器
docker inspect <id| name> #查看容器配置
docker exec -it <id| name> /bin/bash #进入容器执行/bin/bash
docker images #列出本地存储的镜像。
docker pull IMAGE #从镜像仓库拉取镜像。
docker push IMAGE #将镜像推送到镜像仓库。
docker rmi IMAGE #删除一个或多个镜像。
#docker cp复制文件到容器内
docker cp <localdir> <id|name>:<dockerdir>
docker cp /tem/demo.txt mydocker:/opt/demo.txt
docker 加速
WARNING
2024.06.06国内docker镜像站基本全灭,已搭建docker.xiaoyue.pro加速docker
#比如安装拉取镜像nginx,使用完整路径,或者换源
docker pull nginx
docker pull docker.xiaoyue.pro/library/nginx:latest
docker 换源
国内源,但是好像全挂了,做了个docker源反向代理了docker.io
中科大源:https://docker.mirrors.ustc.edu.cn
网易源: https://hub-mirror.c.163.com
百度源: https://mirror.baidubce.com
腾讯源: https://ccr.ccs.tencentyun.com
修改文件vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.xiaoyue.pro"
]
}
修改完成后重启docker服务即可 systemctl restart docker
常用容器部署
jellyfin
sudo docker run -d --name jellyfin \
-v /volume1/docker/jellyfin/config:/config \
-v /volume1/docker/jellyfin/cache:/cache \
-v /volume1/video:/video \
-p 8096:8096 \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
--device /dev/dri/card0:/dev/dri/card0 \
--restart unless-stopped \
jellyfin/jellyfin
mysql 5.7
提示
使用docker安装时,本地连接到mysql地址可以用127.0.0.1但不能用localhost
默认允许全部网络
docker run --name mysql5.7 \
-v /volume1/docker/mysql:/var/lib/mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
watchtower更新容器
提示
用于更新容器以jellfin为例
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower --cleanup --run-once jellyfin #指定容器名称
Docker 完全卸载
WARNING
操作前请确认数据已备份
1.停止所有运行的容器
docker stop $(docker ps -aq)
2.删除所有容器
docker rm $(docker ps -aq)
3.删除所有镜像
docker rmi $(docker images -q)
4.列出docker相关的包
# debian 系列
dpkg -l |grep docker
# redhat 系列
yum list installed | grep docker
5.卸载和docker相关的组件
# debian 系列
apt remove docker*
# redhat 系列
yum remove docker*
docker-compose
docker-compose 主要用于同时管理多个docker容器
安装
docker-compose
apt install docker-compose
启动前请确定所在目录存在
docker-compose.yml
docker-compose up -d #up启动-d后台执行
docker-compose down #停止
提示
一般情况下docker-compose会自动创建一个bridge网桥,有可能会与内网部分网段重叠影响使用,可编辑docker-compose.yml
指定网段
version: '3'
networks:
networkname: #创建一个networkname的网桥
driver: bridge
ipam:
driver: default
config:
- subnet: 10.100.100.0/24 #指定网段,一般24位就足够用了
services:
nginx:
image: xxx
restart: always # 设置容器自启模式
ports:
- '80:80'
networks:
- networkname #引用networkname网桥
批量查询容器自启动状态
# 批量查询容器自启动状态
docker ps -aq | xargs -I {} docker inspect --format '{{.Name}}: {{.HostConfig.RestartPolicy.Name}}' {}
#查询指定容器自启动状态
docker inspect --format '{{.HostConfig.RestartPolicy}}' 容器名
#指定容器指定自启动
docker update --restart=always 容器名