Docker容器在Linux中的更新方法
手动更新是运维中最基础的容器更新方式,适用于大多数场景,核心步骤包括停止旧容器→删除旧容器→拉取新镜像→启动新容器。
首先,通过docker ps命令找到目标容器的ID或名称(如myapp),然后依次执行以下命令停止并删除容器(注意:删除容器会清除其内部数据,需提前备份重要文件):
docker stop <container_name_or_id> # 停止容器
docker rm <container_name_or_id> # 删除容器
从Docker Hub或其他镜像仓库下载最新版本的基础镜像(如myapp:latest):
docker pull <image_name>:<tag> # 例如:docker pull myapp:latest
使用最新镜像重新创建容器,需保留旧容器的配置(如端口映射-p 8080:80、卷挂载-v /host/data:/container/data等):
docker run -d --name <new_container_name> <image_name>:<tag> # 例如:docker run -d --name myapp_new myapp:latest
通过以下命令检查新容器是否运行正常,并查看日志确认应用状态:
docker ps # 确认新容器处于“Up”状态
docker logs <container_name> # 查看容器日志(如应用启动信息)
若项目使用Docker Compose管理多个容器(如Web应用+数据库),可通过docker-compose命令简化更新流程,实现批量拉取镜像→重建容器。
进入包含docker-compose.yml文件的目录(如/path/to/your-project):
cd /path/to/your-project
执行以下命令:docker-compose down会停止并删除旧容器,docker-compose up -d --build会拉取docker-compose.yml中定义的最新镜像,并重新构建容器(自动保留卷挂载、网络等配置):
docker-compose down && docker-compose up -d --build
对于生产环境,手动更新效率低且易出错,可使用Watchtower工具实现自动监控与更新。Watchtower会定期检查运行中容器的基础镜像是否有更新,若有则自动下载新镜像并重启容器。
通过Docker命令快速运行Watchtower容器(需挂载Docker socket以访问宿主机Docker守护进程):
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower
--monitor-only参数指定容器名称(如docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --monitor-only myapp)。若需调整容器的资源限制(如CPU、内存)或重启策略,可使用docker update命令,无需重启容器即可生效(注意:部分配置如--memory-swap需容器重启才能生效)。
my_container的内存上限设置为512MB:docker update --memory 512m my_container
my_container的CPU份额设置为512(默认1024,值越高优先级越高):docker update --cpu-shares 512 my_container
my_container的重启策略设置为“always”(容器退出时自动重启):docker update --restart=always my_container
myapp:v1.0)而非latest,避免因镜像自动更新导致不可预期的问题。