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

 指定网络

 

posted @ 2021-11-18 15:19  NavyW  阅读(29)  评论(0编辑  收藏  举报