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
相关推荐
祁梦几秒前
Redis从入门到入土 --- 黑马点评点赞功能实现详解
java·后端
唯一世2 分钟前
Open Feign最佳实践
java·spring cloud
小江的记录本3 分钟前
【MacOS】MacBook Pro 键盘全解析 + macOS 快捷键大全
java·经验分享·学习·macos·计算机外设·键盘·敏捷开发
淘源码d8 分钟前
基于Spring Boot + Vue的诊所管理系统(源码)全栈开发指南
java·vue.js·spring boot·后端·源码·门诊系统·诊所系统
李少兄9 分钟前
IntelliJ IDEA 中撤销 Commit
java·elasticsearch·intellij-idea
iPadiPhone11 分钟前
Java 反射机制底层原理、面试陷阱与实战指南
java·开发语言·后端·面试
iPadiPhone16 分钟前
Java SPI 机制全链路深度解析与面试通关指南
java·后端·面试
问道飞鱼18 分钟前
【大模型学习】LangChain 入门指南:基本概念、核心功能与简单示例
java·学习·langchain
blackorbird28 分钟前
Palantir的战争AI:藏在美军Maven系统里的Claude大模型
java·大数据·人工智能·maven
左左右右左右摇晃38 分钟前
Java String 类笔记
java