记录docker使用(不包括环境搭建)

这篇博客详细介绍了如何使用Docker构造镜像、运行容器、保存和加载镜像的过程。从创建Dockerfile开始,到处理权限问题,再到运行和管理容器,包括端口映射、容器命名及挂载本地目录。此外,还讨论了如何保存和加载镜像,以及处理镜像冲突的策略。
摘要由CSDN通过智能技术生成

一、构造镜像

  1. 在jar包同目录下创建文件Dockerfile(没有后缀名)
    文件内容为:
# FROM: 基础镜像,通过jdk8镜像开始
#java:8报错的话替换成openjdk:8
FROM java:8

# MAINTAINER: 维护者
MAINTAINER YangYuxin

# ADD: 复制jar包到镜像内,名字为sentinel.jar。./target/sentinel-1.0-SNAPSHOT.jar
# 官方建议替换为COPY,第一个参数为当前地址下的文件名(隐藏在文件夹下的要加上文件路径),第二个参数为之后命令中的假名
COPY *-1.0-SNAPSHOT.jar *.jar

# EXPOSE: 声明端口,通过(Win Docker)点击Run按钮时,默认显示的port
EXPOSE 8080
# ENTRYPOINT: docker启动时,运行的命令.这里就是容器运行就启动jar服务
ENTRYPOINT ["java","-jar","*.jar"]
  1. 打开cmd / powershell / terminal,输入
# "IMAGE"表示构造的镜像名,"."表示从当前目录打开Dockerfile文件
$docker build -t IMAGE .

如有发生报错
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get “http://%2Fvar%2Frun%2Fdocker.sock/v1.24/*”: dial unix /var/run/docker.sock: connect: permission denied
表示权限不够,在docker指令前添加"sudo "即可
例如

$sudo docker build -t IMAGE .

等待加载完成即可完成镜像的构造。
不要关闭,进行下一步。

二、运行容器

  1. 查看容器

格式

$docker ps [OPTION]

例子:

# 查看正在运行的容器
$docker ps
# 查看所有容器
$docekr ps -a

2.运行容器

RUN命令基本格式为:

$docker run [OPTION] IMAGE [COMMAND] [ARG...]

例如:

$docker run --name NAME -p 8080:8080 -d IMAGE

NAME 处为自定义的容器名,IMAGE处为镜像名。
-p 指定端口映射 主机端口:容器端口。
-d 后台运行容器,并返回容器ID。
IMAGE指需要容器实现的镜像。
[OPTION]包含各种操作符,包括但不限于上文中的“--name=“NAME” -p 8080:8080”。具体内容可查询官方文档或菜鸟教程等学习。

如果需要在本地生成文件,可以使用-v操作符:docker运行一个容器就会生成一个Linux虚拟机,所以由docker运行的文件只会把文件保存在虚拟机内,而不会同步到本地。而使用-v操作符实现“挂载”,就可以把虚拟机内某个文件夹下的文件同步到指定的本地文件夹内。
例:

# L_PATH指本地目录的路径,V_PATH指虚拟机内的路径,绝对路径和相对路径都允许,程序中要写虚拟机内的路径
$docker run --name NAME -v L_PATH:V_PATH IMAGE

  1. 当同名容器已存在时,运行会失败,这时可以选择:

(1)移除原有容器

实例

# 强制删除容器 db01、db02:
$docker rm -f db01 db02

# 删除所有已经停止的容器:
$docker rm $(docker ps -a -q)

(2)启动原有容器

# CONTAINER为容器名
# 启动已关闭容器
$docker start CONTAINER

# 中断正在运行的容器
$docker stop [-t|--time TIME] CONTAINER

# 重启容器
# TIME 表示杀死容器之前等待停止的秒数(默认为10)
$docker restart [-t|--time TIME] CONTAINER

# 启动所有容器
# -q表示只显示容器ID
$docker start $(docker ps -a -q)

# 关闭所有容器
$docker stop $(docker ps -a -q)

# 重启所有容器
$docker restart $(docker ps -a -q)

①docker start CONTAINER 包含容器文件系统挂载的操作
docker stop CONTAINER 包含容器文件系统卸载的操作
docker restart CONTAINER 不包含容器文件系统的卸载与挂载操作,本质上docker restart不涉及文件系统的操作,因此restart命令并不是stop与start两个命令的顺序叠加。

但为了保证容器的根文件系统与内存系统mount的正确性,推荐对一个容器的重启使用docker stop xxx,然后 docker start xxx,而非docker restart xxx。

②start和restart没法决定是否打印日志,只能通过

# 查看最近10条日志并打印,CONTAINER为容器ID
$docker logs -f --tail 10 CONTAINER

# 查看某日期至今的所有日志
$docker logs -f --since "2023-01-01" CONTAINER

(3)换一个容器名

三、保存镜像

  1. 查看本地镜像
$docker images
  1. 保存镜像到本地

格式如下:

$docker save [OPTIONS] IMAGE [IMAGE...]

IMAGE为镜像ID。


例:

$docker save myimage_latest > myimage_latest.tar

> 可指定保存的文件名称。


  1. 可以使用 gzip 来保存图像文件并使备份更小
$docker save myimage_latest | gzip > myimage_latest.tar.gz

四、加载镜像

  1. 查看本地镜像

格式如下:

$docker images

  1. 加载镜像

格式如下:

$docker load [OPTIONS]

例:

$docker load < myimage_latest.tar.gz
Loaded image: myimage_latest:latest

$docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
myimage_latest             latest              769b9341d937        7 weeks ago         2.489 MB
  1. 如果已存在同名同版本的镜像,load指令会报错。
    这时可以选择:

(1)换个镜像名
(2)换个版本号
(3)移除原有镜像

# -f 表示强制
$docekr rmi -f IMAGE

再重新load。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值