Docker 参考手册
1 查询本地镜像列表
docker images
2 删除镜像
docker rmi nginx:1.2.1 #根据镜像名和Tag删除
docker rmi 86262685d9ab #根据镜像ID删除
3 查询正在运行的容器
docker ps
参数: -a #查看所有容器
-q #返回容器id
4 删除容器
docker rm ${CONTAINER NAME/ID}
参数: -f #强制删除容器
# 删除所有容器
docker rm -f $(docker ps -a -q)
5 拉取镜像
docker pull mysql:8.0.31
6 生成离线镜像
docker save -o nginx.docker nginx #nginx.docker离线镜像名称,nginx为本地镜像名称,在哪个目录执行就会在哪里生成
7 加载离线镜像
docker load -i /opt/release/image/nginx/nginx.docker
8 Tag镜像
docker tag nginx:1.14-alpine 192.168.56.201:5000/nginx:1.14-alpine #nginx-1.14-alpine为本地镜像,192.168.56.201:5000/nginx:1.14-alpine为重新Tag的镜像
9 推送镜像
docker push 192.168.56.201:5000/nginx:1.14-alpine #192.168.56.201:5000为镜像私有仓库地址
10 运行容器
docker run -dit --restart=always --name=docker-registry -p 5000:5000 -v /opt/registry:/var/lib/registry hub.c.163.com/library/registry:latest
格式:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
参数说明:
-d:指定容器运行于前台还是后台,默认为后台运行
-i:打开STDIN,用于控制台交互
-t:分配虚拟终端,默认为false
--restart:容器停止后的重启策略:
no:容器退出时不重启
on-failure:容器故障退出(返回值非零)时重启
always:容器退出时总是重启
--name:容器名称
-p:端口映射,前一个为宿主机的端口,后一个为容器内部端口
-v:目录挂载,前一个是宿主机目录,后一个是容器内部的目录
-e: 指定环境变量 eg:docker run -e MY_VARIABLE=my_value
11 进入容器
docker exec -it [CONTAINER ID/NAME] bash
12 构建容器
docker build -t IMAGENAME . #使用当前目录的Dockerfile构建镜像
参数说明:
-t:镜像名称和tag,不指定tag则为latest,可指定多个tag
-f:指定要使用的Dockerfile路径
13 容器时间与宿主机保持一致(3种方法)
13.1 复制localtiome到容器(容器已运行)
docker cp /usr/share/zoneinfo/Asia/Shanghai 容器ID:/etc/localtime #复制localtime到容器中,然后重启容器docker restart ContainerID
13.2 创建时挂载(容器未运行)
docker run --name name -v /etc/localtime:/etc/localtime
13.3 Dockerfile配置(镜像未创建)
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
14 阿里云镜像加速地址
https://9m2lv6b9.mirror.aliyuncs.com
15 ASP.NET Core镜像下载地址
https://mcr.microsoft.com/en-us/product/dotnet/aspnet/about
16 防止容器自动退出
docker run -dit python:3.9.7-slim /bin/bash
17 docker镜像版本的含义
buster:适用与 debian 10
stretch:适用于 debian 9
jessie:适用于 debian 8
bullseye、bookworm:开发版本,处于未稳定状态
slim:表示最小安装包,仅包含需要运行指定容器的特定工具集
Alphine:专门为容器构建的操作系统,比其他的操作系统更小,但是其上会缺少很多软件包并且使用的 glibc 等都是阉割版
windows server:适配 windows 和 windows server 的容器
18 查看docker日志
# 查看日志
docker logs 容器ID
# 查看最后100行日志
docker logs -f --tail=100 容器ID
# 查看最近30分钟日志
docker logs --since 30m 容器ID
# 查看某个时间段日志
docker logs -t --since="2021-11-30T00:00:00" --until "2021-12-30T00:00:00" 容器ID
19 容器打包成镜像
docker commit -a "wanghj" -m "python & gdal & dotnet6" 容器ID python3.7-gdal3.1.4-dotnet6:v1
-a:指定新镜像作者
-m:镜像说明
20 Docker部署镜像脚本
#! /bin/bash IMAGE_NAME=ec-grid IMAGE_TAG=v1 echo -e "\033[32m${IMAGE_NAME}:${IMAGE_TAG} 开始部署...\033[0m" #移除正在运行的容器 echo -e "\033[32mstep1:移除容器...\033[0m" docker rm -f $(docker ps -a | awk '/'${IMAGE_NAME}:${IMAGE_TAG}'/ {print $1}') #移除镜像 echo -e "\033[32mstep2:移除镜像...\033[0m" docker rmi ${IMAGE_NAME}:${IMAGE_TAG} #构建镜像 echo -e "\033[32mstep3:构建镜像...\033[0m" docker build -t ${IMAGE_NAME}:${IMAGE_TAG} . #运行容器 echo -e "\033[32mstep4:运行容器...\033[0m" docker run -d --name=${IMAGE_NAME} --restart=always -p 6250:80 ${IMAGE_NAME}:${IMAGE_TAG} echo -e "\033[32m${IMAGE_NAME}:${IMAGE_TAG} 部署完成...\033[0m"
21 Docker查看网络模式Network
docker network ls
指定网络