Docker 相关内容记录

目录

1、安装docker

2、docker使用相关命令


具体说明如下:具体使用命令的时候最好切号为管理员root权限

使用su命令切号

1、安装docker

docker下载地址:

Index of /

Docker Docs

docker-compose和docker版本对应关系如下:

Compose file version 3 reference | Docker Docs

docker-compose 下载地址:

https://github.com/docker/compose/releases

由于安装docker的系统各不相同,具体可以查看需要安装docker的CPU架构和位数,然后进行安装。

查看系统的架构/版本:

cat /etc/kylin-release
uname -p
lscup

以上安装好docker后,下面安装docker-compose部分是可选的,使用docker-compose对于多服务启动可能会更方便一些。

下载docker-compose文件:根据需要下载对应的版本

https://github.com/docker/compose/releases

 接下来安装下载好的docker-compose(把下载好的文件放到服务器上)

# 在包含docker-compose-linux-x86_64文件夹下
mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
# cp docker-compose-linux-x86_64 /usr/local/bin/docker-compose
# 授权这个文件
chmod 777 /usr/local/bin/docker-compose
# 当然也是可以直接授予可执行权限
chmod +x /usr/local/bin/docker-compose
# 最后查看是否安装成功
docker-compose --version

可选【创建软连接】

# 其中这个位置 /usr/software 根据服务器上软件存放位置
ln -s /usr/local/bin/docker-compose /usr/software

2、主机docker使用相关命令

查看docker的启动状态

systemctl status docker

启动docker

systemctl start docker

重载docker

systemctl daemon-reload

重启docker

systemctl restart docker

开机自启docker

systemctl enable docker

查看docker镜像

docker images

查看docker进程

docker ps

 查看所有容器(包括停止的)

docker ps -a

设置docker的TAG

# 以JDK举例
docker tag jdk:latest jdk:1.8

删除docker中没有版本的容器(镜像)

# -f 为强制删除
docker rmi -f 容器镜像ID(或者容器名称)

停止正在运行的容器 

docker stop 容器进程ID(docker ps列表中的ID)

启动已停止的容器

docker start 容器ID(container_id)

进入容器

docker exec -it 容器ID(container_id)/bin/bash

若是容器正在运行,则最好是先停止再删除!

构建docker镜像:docker build -t 容器名:版本号 .

# 以java后端服务举例 docker build -t 容器名:版本号 .
docker build -t java-server:1.0 .

注意:在构建镜像之前需要编辑好dockerfile文件,下面为样例文件

# 基础镜像(镜像名:版本号TAG)
FROM  jdk:1.8
# 作者author
MAINTAINER xjs# 挂载目录
VOLUME /home/soft/app
# 创建目录
RUN mkdir -p /home/soft/app
# 指定路径
WORKDIR /home/soft/app
# 复制jar文件到路径{注意:文件中的前面的内容都是容器外的 后面的内容为容器内的}
COPY ./jar/java-server.jar /home/soft/app/java-server.jar
COPY ./jar/config /home/soft/app/config# 启动java后端服务,下面为java启动参数配置
# ENTRYPOINT ["java","-jar","java-server.jar"]
ENV JAVA_OPTS="\
-server \
-XX:+PrintFlagsFinal \
-Xmn1024M \
-Xms2048M \
-Xmx2048M \
-XX:+PrintGCDetails \
-XX:+PrintTenuringDistribution \
-XX:+PrintGCTimeStamps \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/home/soft/logs/java-server/java-server-hpdump.hprof \
-XX:+UseGCLogFileRotation \
-XX:NumberOfGCLogFiles=5 \
-XX:GCLogFileSize=20M \
-XX:+UseConcMarkSweepGC \
-Xloggc:/home/soft/logs/java-server/auth.log"# 指定容器内端口
# EXPOSE 8088
# 启动命令
# ENTRYPOINT java ${JAVA_OPTS} -jar java-server.jar
CMD ["java", "${JAVA_OPTS}", "-jar", "java-server.jar"]

其中上面的JAVA_OPTS部分可以不需要 (具体以项目看)

运行docker编译好的镜像(可以通docker images查看编译好的镜像)其中后面端口是容器内的

docker run -it --restart=always -p 8088:8088 myserverapp:1.0

#--restart=always: 设置容器在任何情况下都自动重启。如果发生意外情况导致容器停止运行,Docker会尝试自动重新启动容器。-it: 创建一个交互式的终端会话,并将其连接到容器。

把docker服务打包

docker save -o java-server-1.0.tar.gz java-server:1.0

加载打包的docker服务包

docker load -i java-server-1.0.tar.gz

其他命令:

搜索镜像

docker search nginx

拉取镜像

docker pull nginx

推送镜像

docker push nginx:1.18

日志和调试相关命令:

查看容器日志:docker logs 容器ID(container_id)

实时跟踪容器日志:docker logs -f 容器ID(container_id)

导出容器日志到文件:docker logs 容器ID(container_id) > logs.txt

查看容器内进程信息:docker top 容器ID(container_id)

在容器内运行命令:docker exec -it 容器ID(container_id) command_name

网络相关命令:
列出网络:docker network ls

创建网络:docker network create network_name

连接容器到网络:docker network connect network_name 容器ID(container_id)

断开容器与网络的连接:docker network disconnect network_name 容器ID(container_id)

使用Docker-compose

在使用docker-compose的时候需要编辑好 docker-compose.yml 文件,下面为样例文件

version : '3.8'
services:# mysql数据库mysql:container_name: mysqlimage: mysql:8ports:- "3306:3306"volumes:- /home/soft/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf- /home/soft/mysql/logs:/logs- /home/soft/mysql/data:/var/lib/mysqlprivileged: truecommand: ['mysqld','--innodb-buffer-pool-size=80M','--character-set-server=utf8mb4','--collation-server=utf8mb4_unicode_ci','--default-time-zone=+8:00','--lower-case-table-names=1']environment:MYSQL_ROOT_PASSWORD: 123456restart: always# postgres数据库postgres:container_name: postgresimage: postgis:14ports:- "5432:5432"volumes:- /home/soft/postgresql/data:/var/lib/postgresql/dataenvironment:POSTGRES_PASSWORD: postgresprivileged: truerestart: always# redis缓存库redis:container_name: redisimage: redis:6.0.8ports:- "6379:6379"volumes:- /home/soft/redis/conf/redis.conf:/etc/redis/redis.conf- /home/soft/redis/data:/datacommand: redis-server /etc/redis/redis.confprivileged: truerestart: always# nginx前端服务nginx:container_name: nginximage: nginx:1.18ports:- "80:80"volumes:- /home/soft/nginx/html:/usr/share/nginx/html- /home/soft/nginx/conf/nginx.conf:/etc/nginx/nginx.conf- /home/soft/nginx/logs:/var/log/nginxrestart: always# 项目JAR包位置java-server:container_name: java-serverbuild:#dockerfile文件的位置/jarcontext: ./jardockerfile: dockerfile#前面是容器外端口:日期内端口ports:- "8088:8088"depends_on:- redis- postgresvolumes:- /home/soft/logs:/home/soft/logs- /home/soft/nginx/html:/home/soft/nginx/htmlprivileged: truerestart: always

具体可以根据实际项目情况修改即可!

有了docker-compose和配置好的docker-compose.yml文件就可以运行相关容器了。

启动服务

docker-compose up -d
# 当然也可以是
docker-compose up -d 服务名

查看启动的服务 docker ps/images

查看服务启动的日志(以java-server举例)

docker-compose logs -f java-server

停止具体的服务(以java-server举例)

docker-compose down java-server

重启具体的服务(以java-server举例)

docker-compose restart java-server
# 删除服务
docker rm -f java-server
# 删除镜像
docker rmi 文件夹名-服务名
docker rmi myserverapp_src-java-server
# 重新运行服务
docker-compose up -d java-server
# 启动服务:
docker-compose up
# 后台启动服务:
docker-compose up -d
# 构建服务:
docker-compose build
# 停止服务:
docker-compose down
# 查看服务日志:
docker-compose logs
# 列出所有服务容器:
docker-compose ps
# 执行命令到服务容器:
docker-compose exec <service> <command>
# 查看服务状态:
docker-compose ps
# 重启服务:
docker-compose restart
# 构建服务但不启动:
docker-compose build --no-start
# 确保你的当前目录中有一个有效的docker-compose.yml文件,或者你可以通过--file选项指定其他文件。
# 例如,如果你有一个docker-compose.prod.yml文件,你可以这样运行:
docker-compose -f docker-compose.prod.yml up -d

 以上就是Docker Compose的一些基本使用方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/756955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Redux 管理 React 应用状态

使用 Redux 管理 React 应用状态 在复杂的 React 应用中&#xff0c;管理组件状态变得越来越复杂&#xff0c;这时候引入 Redux 可以帮助我们更好地管理状态。Redux 是一个可预测状态容器&#xff0c;它可以帮助我们统一管理应用的状态&#xff0c;使得状态变化更加可控。本文…

MATLAB环境下基于K-SVD的一维时间序列信号瞬态特征提取

当旋转机械某一零部件发生故障时&#xff0c;其振动信号中就会产生周期性循环冲击响应—瞬态成分&#xff0c;这些瞬态成分往往包含着重要的故障信息。因此&#xff0c;利用合适的方法对振动信号中因局部故障引起的瞬态冲击响应成分进行提取是一种较为有效的旋转机械零部件故障…

LC 热题 100:数组与矩阵的探索之旅

LC 热题 100&#xff1a;数组与矩阵的探索之旅 在 LeetCode&#xff08;力扣&#xff09;这个编程挑战的宝库中&#xff0c;数组和矩阵是两个经久不衰的主题。它们不仅是数据结构的基础&#xff0c;也是算法问题中常见的元素。今天&#xff0c;我们就来深入探讨一下 LeetCode …

【RabbitMQ | 第四篇】基于RabbitMQ实现延迟队列

文章目录 4.基于RabbitMQ实现延迟队列4.1延迟队列定义4.2基于DLX&#xff08;死信交换机&#xff09;实现延迟队列4.2.1实现思路4.2.2主要流程4.2.3实战&#xff08;1&#xff09;创建两个消息队列&#xff1a;原始消息队列、死信队列 and 为原始消息队列关联私信交换机&#x…

每日一练:LeeCode-283、移动零【数组】

给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nums [0] 输出:…

【Ubuntu 22.04 LTS】安装vmware提示没有兼容的gcc

在ubuntu 22.04 上运行wmware时显示找不到兼容的gcc 这里要求的是12.3.0版本&#xff0c;我查看了自己的gcc版本是上面的11.4.0 在ask ubuntu上找到了解决方法 尝试了这一条 三条命令执行完成之后&#xff0c;再次运行vm&#xff0c;没有提示gcc的问题 点击install下载相应模…

Elasticsearch常用语句

elasticsearch常用语句 基础操作 基础查看 1、查看集群的健康状态 curl -XGET "http://10.45.151.227:9200/_cat/health?v"2、查看nodes curl -u elastic:123456 -XGET http://10.45.186.125:9200/_cat/nodes?v3、查看索引 curl -XGET http://10.45.186.155:92…

openEuler系统安装并运行nginx

openEuler系统安装并运行nginx 1、安装 Nginx&#xff08;推荐yum install nginx&#xff09; # 更新系统软件包列表 sudo swupd update# 安装 Nginx&#xff08;openEuler 默认使用 swupd 包管理器&#xff09; sudo swupd bundle-add nginx-basic# 或者&#xff0c;如果 op…

vue3+element Plus form 作为子组件,从父组件如何赋值?

刚开始接触vue3时&#xff0c;碰到一个很low的问题&#xff0c;将form作为子组件&#xff0c;在页面中给form表单项输入内容&#xff0c;输入框不显示值&#xff0c;知道问题出在哪&#xff0c;但因为vue3组合式api不熟悉&#xff0c;不知从哪下手... 效果图&#xff1a; 父组…

【力扣TOP100】跳跃游戏ll

题目内容&#xff1a; 分析&#xff1a; 由于确保可以最终到达最后一个位置&#xff0c;所以可以只记录每一次跳跃可以到达的最远位置end&#xff0c;当end>len(nums)-1则结束循环。每次只需要在新可以跳到的位置上再次跳跃即可。 class Solution:def jump(self, nums: Li…

.htaccess全站设置SSL,wordpress全站设置SSL,网站重定向的次数过多”错误最佳解决方法教程

.htaccess全站设置SSL,wordpress全站设置SSL&#xff0c;网站重定向的次数过多”错误最佳解决方法教程 网上找了很多教程网无效**.htacces**设置&#xff0c;访问后台出现重定向次数过多&#xff0c;导致无法访问 找了好久&#xff0c;测试用AI机器人无法解决&#xff0c;参考…

机器学习 - 准备数据

“Data” in machine learning can be almost anything you can imagine. A table of big Excel spreadsheet, images, videos, audio files, text and more. 机器学习其实可以分为两部分 将不管是什么data&#xff0c;都转成numbers.挑选或者建立一个模型来学习这些numbers …

基于VMware虚拟机安装MacOS BigSur系统

这周用VMWare搞了个MacOS虚拟机&#xff0c;也算是完成初中高中时候的梦想了吧~~&#xff08;那时候我的电脑配置还很拉跨&#xff0c;带不动虚拟机&#xff09;~~ 写一篇博客记录一下&#xff0c;当然这也是yonagi04.github.io建站的第一篇新博客 准备工作&#xff08;VMWare…

[GPT概念-02] — 预训练、微调和不同的用例应用

GPT: Generative Pretrained Transformer 一、说明 在之前的博客中&#xff0c;我们研究了生成式预训练转换器的整个概述。现在让我们看看关于预训练、微调和不同用例应用的超级重要主题。 二、预备训练 预训练是关于在没有监督或显式监督的情况下&#xff0c;我们从大型未标记…

海外社交营销为什么用云手机?不用普通手机?

海外社交营销作为企业拓展海外市场的重要手段&#xff0c;正日益受到企业的青睐。云手机以其成本效益和全球性特征&#xff0c;成为海外社交营销领域的得力助手。那么&#xff0c;究竟是什么特性使得越来越多的企业选择利用云手机进行海外社交营销呢&#xff1f;下文将对此进行…

Angular进阶之八: Angular Animation在项目中的实践经验

使用 Angular 进行项目开发的程序员应该都很熟悉 Angular Animation。这是一个 Angular 原生的动画库&#xff0c;它可以替代或者辅助完成原本需要使用 css 的动画功能。 Angular 在国内的运用是很有限的&#xff0c;可借鉴的文档并不很丰富。尤其对于 Angular 动画模块的应用…

如何从零开始拆解uni-app开发的vue项目(一)

uni-app项目分析: 背景:最近接手一个前同事留下的半拉子项目,出拿过来觉得很简单;当我看到app.vue的时候很确定是vue项目,心里不怎么慌,果断安装node.js,然后就去npm ;安装VS code,事实并不是我期盼的那样,或者说根本就不能运行。 报错:应用vs code打开文件,输入命…

智慧城市与数字孪生:科技融合助力城市可持续发展

随着信息技术的迅猛发展&#xff0c;智慧城市和数字孪生作为现代城市发展的重要理念和技术手段&#xff0c;正日益受到广泛关注。智慧城市通过集成应用先进的信息通信技术&#xff0c;实现城市管理、服务、运行的智能化&#xff0c;而数字孪生则是利用数字化手段对物理城市进行…

Stewart并联六自由度摇摆平台计算

六自由度并联Stewart Platform摇摆平台。Matlab GUI界面操作&#xff0c;动画显示河模拟仿真&#xff0c;可以手动设置设备系统参数。 Matlab 程序&#xff0c;源代码包含注释。 程序下载链接&#xff1a; https://download.csdn.net/download/panjinliang066333/88991928 …

Web框架开发-Django-模板继承和静态文件配置

一、模板继承 目的&#xff1a;减少代码的冗余 语法&#xff1a; 1 2 3 {% block classinfo %} {% endblock %} 具体步骤&#xff1a; 1、创建一个base.html文件 2、把要显示的页面的内容写在这里面&#xff0c;也就是HTML要在浏览器显示的内容 3、在rigth里面写一个盒…