Docker基础使用

Docker基础使用

1.查看容器

bash 复制代码
docker ps -a

挂载文件夹一定要放开权限,否则后面启动nexus时会无法启动

bash 复制代码
mkdir -p /opt/software/nexus-data && chmod 777 /opt/software/nexus-data

1.查询远程镜像

bash 复制代码
docker search 镜像名称

重启docker服务

bash 复制代码
systemctl restart docker

容器自启动

bash 复制代码
docker run \
-tid \
--name isaler_v0.0.11 \
-p 8081:8080 \
--restart=always \
-v /alidata/iDocker/run/projectImages/isaler/v0.0.11/log:/usr/local/tomcat/logs isaler_v0.0.11
bash 复制代码
docker update --restart=always my_container

Flag Description

no 不自动重启容器. (默认value)

on-failure 容器发生error而退出(容器退出状态不为0)重启容器

unless-stopped 在容器已经stop掉或Docker stoped/restarted的时候才重启容器

always 在容器已经stop掉或Docker stoped/restarted的时候才重启容器

关闭容器自启动

bash 复制代码
docker update --restart=no my_container

查看docker容器是否挂载

bash 复制代码
docker inspect idname
bash 复制代码
docker inspect --format='{{json .Mounts}}' b3926b731141

容器挂载解释

{

"Type": "bind",

"Source": "/usr/local/docker/mysql5.7/conf/my.cnf",

"Destination": "/etc/my.cnf",

"Mode": "",

"RW": true,

"Propagation": "rprivate" },

这是一个绑定挂载(Bind Mounts)的配置信息:

复制代码
Type: 表示挂载的类型,这里是 "bind",表示绑定挂载。
Source: 挂载的源路径,即主机文件系统中的路径 "/usr/local/docker/mysql5.7/conf/my.cnf"。
Destination: 挂载的目标路径,即容器中的路径 "/etc/my.cnf"。
Mode: 挂载的权限模式,这里是空字符串,表示使用默认权限设置。
RW: 表示挂载是否可读写,这里是 true,表示挂载是可读写的。
Propagation: 挂载的传播属性,这里是 "rprivate",表示挂载更改的传播范围是私有的,只在宿主机和容器之间传播。

这些信息描述了如何将主机上的文件 /usr/local/docker/mysql5.7/conf/my.cnf 绑定挂载到容器中的路径 /etc/my.cnf,并允许容器对该文件进行读写操作。传播属性设置为 "rprivate" 表示挂载更改只会在宿主机和容器之间传播。

保存和加载本地镜像

保存

docker save -o app10015.tar app10015:latest

docker save -o mysql5.7.tar mysql/mysql-server:5.7

加载镜像

docker load -i app10015.tar

docker load -i xxx.tar

创建mysql容器

docker run -id

-p 10015:10015

--net=host

--name=app10015_sl

app10015:latest

bash 复制代码
docker run \
-d \
--name mysql8 \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=root \
-v /usr/local/docker_data/mysql_data:/var/lib/mysql \
--network=host \
mysql:8.0.33

容器转换为镜像

docker commit <container_name_or_id> <new_image_name>:

bash 复制代码
docker commit 229588bd9c4b dxw_mysql:1.0

创建dockerfile

bash 复制代码
FROM java:8
VOLUME /tmp
ADD Dxw-10015.jar app10015.jar
CMD java -jar app10015.jar
bash 复制代码
docker build -f ./cc -t app10015 .
bash 复制代码
docker run \
-d \
--name mysql8 \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=root \
-v /usr/local/docker_data/mysql_data:/var/lib/mysql \
--network=host \
mysql:8.0.33
bash 复制代码
FROM java:8
VOLUME /tmp
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
COPY Dxw-ips-35808.jar /Dxw_ips_35808.jar
ENTRYPOINT ["java","-jar","/Dxw_ips_35808.jar"]

FROM java:8:使用了一个基于Java 8的Docker镜像作为基础镜像。这将为你的应用程序提供Java 8的运行环境。

VOLUME /tmp:在容器内创建了一个卷(volume),用于临时存储数据。在这种情况下,/tmp目录将在容器内被用作临时存储。

ENV TZ=Asia/Shanghai:设置了一个名为TZ的环境变量,并将其值设置为Asia/Shanghai,表示时区为上海。

RUN ln -snf /usr/share/zoneinfo/TZ /etc/localtime \&\& echo TZ > /etc/timezone:在容器内执行了一系列命令。这些命令将时区设置为上海。首先,它链接了正确的时区文件到/etc/localtime,然后将时区信息写入/etc/timezone文件中。

COPY Dxw-ips-35808.jar /Dxw_ips_35808.jar:将本地文件系统中的 Dxw-ips-35808.jar 复制到容器中,并将其重命名为 Dxw_ips_35808.jar。

ENTRYPOINT ["java","-jar","/Dxw_ips_35808.jar"]:指定容器启动时要执行的命令。在这里,它运行了Java命令来启动 Dxw_ips_35808.jar 这个Spring Boot应用程序。

bash 复制代码
docker build -f ./DockerFile -t dxw_ips_35808:v1 .
复制代码
docker build: 这是构建 Docker 镜像的命令。
-f ./DockerFile: 指定要使用的 Dockerfile 文件。在这里,假设 Dockerfile 名称为 DockerFile,位于当前目录下。
-t dxw_ips_35808:v1: 使用 -t 参数为镜像设置标签,这里设置了一个名为 dxw_ips_35808,版本为 v1 的标签。
.: 这表示 Docker 构建命令的上下文路径,也就是构建时用来查找上下文文件的路径。. 表示当前目录,即 Dockerfile 所在的目录。

执行这个命令将会在当前目录下根据指定的 DockerFile 构建一个名为 dxw_ips_35808:v1 的 Docker 镜像。

容器相互通讯

bash 复制代码
docker run \
-d \
--name mysql8 \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=root \
-v /usr/local/docker_data/mysql_data:/var/lib/mysql \
--network=host \
mysql:8.0.33

查看容器的日志

bash 复制代码
docker logs c8f5dbadd592

创建网桥

bash 复制代码
docker network create dxw

查看网桥

bash 复制代码
 docker network ls

容器加入网桥

bash 复制代码
 docker network connect dxw ips

首先需要停止所有的容器

bash 复制代码
docker stop $(docker ps -a -q)

删除所有的容器

docker rm $(docker ps -a -q)

部署springboot项目日志挂载

配置yml

bash 复制代码
logging:
  level:
    root: error
  file:
    name: /logs/myapp.log
    

创建容器

bash 复制代码
docker run \
-d \
--name ips \
-p 35809:35808 \
-e TZ=Asia/Shanghai \
-v /host/path/logs:/logs \
--network=dxw \
dxw_ips_35808:v1
相关推荐
无心水3 小时前
【OpenClaw:实战部署】5、全平台部署OpenClaw(Win/Mac/Linux/云服务器)——10分钟跑通第一个本地AI智能体
java·人工智能·ai·智能体·ai智能体·ai架构·openclaw
一只大袋鼠3 小时前
Redis 安装+基于短信验证码登录功能的完整实现
java·开发语言·数据库·redis·缓存·学习笔记
※DX3906※4 小时前
Java排序算法--全面详解面试中涉及的排序
java·开发语言·数据结构·面试·排序算法
cur1es5 小时前
【JVM类加载&双亲委派模型&垃圾回收机制】
java·jvm·gc·垃圾回收·类加载·双亲委派模型
AlfredZhao5 小时前
用Docker安全驯服OpenClaw,并打通社交软件
docker·飞书·openclaw
Mr.朱鹏5 小时前
JVM-GC垃圾回收案例
java·jvm·spring boot·算法·spring·spring cloud·java-ee
焦糖玛奇朵婷6 小时前
实测扭蛋机小程序:开发简单,互动有趣
java·大数据·程序人生·小程序·软件需求
Nan_Shu_6146 小时前
学习: 尚硅谷Java项目之小谷充电宝(3)
java·后端·学习
wzqllwy6 小时前
8 大经典排序算法(Java 实现):原理 + Demo + 核心分析
java·算法·排序算法
智能工业品检测-奇妙智能6 小时前
AIFlowy如何实现与现有Spring Boot项目的无缝集成?
java·spring boot·后端