docker常用命令
docekr 特性
查看docker版本
docker version
显示docker的系统信息,包括镜像和容器的数量
docker info
查看docker运行状态
systemctl status docker
启动docker服务
systemctl start docker || service docker start
关闭docker服务
systemctl stop docker || sudo service docker stop
镜像篇
查看所有镜像
docker image ls
-a, --all #列出所有的镜像
-q,--quiet #只显示镜像的id
解释:
repository 镜像的仓库源
tag 镜像的标签
image id 镜像的id
created 镜像创建时间
size 镜像大小
删除指定镜像
docker rmi <image_id>|<image_name>
删除所有镜像
docker rmi $(docker images -aq)
搜索镜像
docker search
拉取镜像
docker pull 镜像名:版本号
容器篇
查看容器
docker ps
可选:
-a 会显示所有状态的容器(默认状态下只显示正在运行的容器)
-n=? #显示最近运行的容器的个数
-p #只显示容器的编号(和docker image -aq相同!!!!!!)
删除容器
docker rm 容器ID #删除指定的容器,不能删除正在运行的容器,如果想强制删除 rm -f
docker rm -f $(docker ps -aq) #删除所有的容器
启动和停止容器
docker start 容器ID #启动容器
docker restart 容器ID #重启容器
docker stop 容器ID #停止当前正在运行的容器
docker kill 容器ID #强制停止正在运行的容器
查看容器内部的进程信息
docker top 容器ID
进入当前正在运行的容器
docker exec -it(可交互) 容器ID /bin/bash
查看日志
docker logs
可选参数:
-t #打印时间戳
-f #实时追踪日志
--tail number #显示指定的日志条数
docker-compose
安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
检查 Docker Compose 版本
docker-compose --version
启动服务
docker-compose up
可选:
-d 在后台启动服务
停止服务
docker-compose down
查看服务日志
docker-compose logs
构建或重新构建服务
docker-compose build
列出所有的服务
docker-compose ps
停止和删除所有的服务容器
docker-compose down
只停止服务容器,但不删除它们
docker-compose stop
重启服务容器
docker-compose restart
其他技巧
根据镜像创建容器
docker run -it --name 容器名 镜像名:版本号
删除所有未使用的镜像、容器、网络及数据卷
docker system prune -a
查看实时的资源使用情况(CPU、内存、I/O 等)
docker stats
导出容器为镜像
docker commit 容器ID 新镜像名:版本号
将镜像保存到文件
docker save -o 文件名.tar 镜像名:版本号
从文件加载镜像
docker load -i 文件名.tar
高级技巧
限制容器的资源使用
限制 CPU 使用
docker run -it --cpus="1.5" 镜像名
限制内存使用
docker run -it --memory="256m" 镜像名
绑定容器端口到主机端口
docker run -it -p 主机端口:容器端口 镜像名
使用卷(Volumes)来持久化数据
创建一个卷
docker volume create my_volume
使用卷
docker run -it -v my_volume:/path/in/container 镜像名
在容器之间共享数据卷
docker run -it --name container1 -v shared_data:/data 镜像名
docker run -it --name container2 --volumes-from container1 镜像名
将主机目录挂载到容器
docker run -it -v /path/on/host:/path/in/container 镜像名
查看卷
docker volume ls
删除卷
docker volume rm 卷名
删除未使用的卷
docker volume prune
在 Dockerfile 中使用多阶段构建
Dockerfile复制代码# 第一阶段:构建
FROM golang:1.16 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
# 第二阶段:运行
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]
运行时指定环境变量
docker run -it -e MY_VAR=my_value 镜像名
从文件加载环境变量
docker run -it --env-file .env 镜像名
将容器内的端口映射到主机
docker run -it -p 8080:80 镜像名
连接到一个正在运行的容器
docker attach 容器ID
复制文件到容器
docker cp /path/on/host 容器ID:/path/in/container
从容器复制文件到主机
docker cp 容器ID:/path/in/container /path/on/host
查看容器的详细信息
docker inspect 容器ID
查看网络
docker network ls
创建自定义网络
docker network create my_network
在自定义网络中运行容器
docker run -it --network my_network 镜像名
连接现有的容器到自定义网络
docker network connect my_network 容器ID
从网络中断开容器
docker network disconnect my_network 容器ID
删除网络
docker network rm my_network
查看 Docker 事件
docker events
设置 Docker 容器自动重启
docker run -it --restart=always 镜像名
使用 Docker Compose 执行单个服务的命令
docker-compose run 服务名 命令
通过 Docker Compose 构建项目
docker-compose build
通过 Docker Compose 重新创建服务
docker-compose up --force-recreate
使用 Docker Compose 缓存依赖
docker-compose build --no-cache