docker入门级命令

基本概念

docker的连个基本概念:镜像、容器。

docker镜像可以理解为是存储docker安装包的地方,比如:mcr.microsoft.com/mssql/server:2017-latest是sqlserver的docker镜像。

可以通过docker pull命令拉取远程镜像到本地。比如:

docker pull mysql:latest

命令docker images可以查看到拉取到本地的docker镜像:

[root@localhost ~]# docker images
REPOSITORY                       TAG           IMAGE ID       CREATED         SIZE
nginx                            latest        92b11f67642b   2 months ago    187MB
redis                            latest        170a1e90f843   3 months ago    138MB
mcr.microsoft.com/mssql/server   2017-latest   19d34f261156   8 months ago    1.33GB
openjdk                          8             b273004037cc   21 months ago   526MB
[root@localhost ~]# 

容器是镜像安装后的实例,比如通过sqlserver镜像可以在docker容器运行mysql:

docker run -p 3306:3306 --name mysql --restart=always --privileged=true \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

之后可以通过命令检查docker ps检查docker实例:

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE                                        COMMAND                  CREATED       STATUS       PORTS                                                                                                                             NAMES
e42b51b7bd90   redis                                        "docker-entrypoint.s…"   3 weeks ago   Up 3 weeks   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp                                                                                         redis
960a53760612   minio/minio                                  "/usr/bin/docker-ent…"   5 weeks ago   Up 4 weeks   0.0.0.0:9001->9001/tcp, :::9001->9001/tcp, 0.0.0.0:9002->9000/tcp, :::9002->9000/tcp                                              minio
11bf3386b072   mcr.microsoft.com/mssql/server:2017-latest   "/opt/mssql/bin/nonr…"   5 weeks ago   Up 4 weeks   0.0.0.0:135->135/tcp, :::135->135/tcp, 0.0.0.0:1433->1433/tcp, :::1433->1433/tcp, 0.0.0.0:51000->51000/tcp, :::51000->51000/tcp   sqlserver2017

docker-compose.yml

通过docker run命令运行docker容器需要指定容器运行参数,因此docker run命令参数繁多,比较繁琐。

docker-compose.yml文件可以很好的解决每次通过docker run命令运行容器需要记住n多参数的繁琐。可以将容器运行时的参数都编排到docker-compose.yml、以及Dockerfile文件中,运行容器的命令就会变的非常简单:

# 运行容器
docker start  [容器id或容器名称]
docker stop  [容器id或容器名称]
docker restart  [容器id或容器名称]

比如:

version: '3'
services:
  #服务名称
  mssql:
    #容器名称
    container_name: sqlserver2017
    #镜像名称
    image: mcr.microsoft.com/mssql/server:2017-latest
    #总是重启后启动
    restart: always
    #端口映射
    ports:
      - 11433:1433
      - 135:135
      - 51000:51000
    #挂载
    volumes:
      - "/home/docker/sqlserver2017:/var/opt/mssql"
      - "/etc/localtime:/etc/localtime"
    #环境变量
    environment:
      - TZ=Asia/Shanghai
      #接受最终用户许可协议
      - ACCEPT_EULA=Y
      - MSSQL_RPC_PORT=135
      - MSSQL_DTC_TCP_PORT=51000
      #SA用户密码
      - SA_PASSWORD=password@kdf

也可以启动自己的springboot应用:

myApplication:
    build:
      context: ./springbootApp
      dockerfile: Dockerfile
    restart: always
    container_name: myApplication
    ports:
      - 9801:9801
    logging:
      options:
        max-size: 10mb

在当前路径下需要存在springbootApp目录,该目录下包含指定的Dockerfile文件:

FROM openjdk:8

#

MAINTAINER zhangfu<zhangfu@gmail.com>

#  ޸     ʱ
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

VOLUME /tmp
RUN mkdir -p /my-app
WORKDIR /my-app
EXPOSE 9801

# 指定jar文件

ADD jeecg-boot.jar jeecg-boot.jar
ENV PARAMS=""

ENTRYPOINT ["java","-jar"," jeecg-boot.jar"]

之后,就可以在docker-compose.yml文件所在的目录启动应用:

docker start myApplication

所以可以理解为:有两种方式启动docker实例,一种是通过docker镜像,一种是通过build的方式:利用context指定路径下的dockfile文件启动容器。

容器服务端口

容器实例化的过程中会指定两个端口:

宿主机端口:容器内服务端口。

宿主机端口是我们访问服务的端口,因为我们肯定是通过宿主机访问容器服务的,所以启动多个服务的时候需要注意宿主机端口冲突。

容器内服务端口是容器内启动的服务的端口,这个时候需要特别注意的是我们启动在容器内的服务的端口,往往是通过配置文件指定的,一定要和我们启动容器的compose命令(或者通过docker run)指定的端口一致。

比如我们要通过容器启动redis服务,一般来讲是在confi文件中指定redis服务的端口号,比如在docker-compose.yml文件中:

 redis:
    image: redis
    restart: always
    hostname: redis
    container_name: redis
    privileged: true
    ports:
      - 6379:6379
    environment:
      TZ: Asia/Shanghai
    volumes:
      - ./redis/data:/data
      - ./redis/conf/redis.conf:/etc/redis/redis.conf
      - ./redis/logs:/logs
    command: ["redis-server","/etc/redis/redis.conf"]

其中:

ports:
      - 6379:6379

中前面的6379是宿主机的端口,后面一个6379是容器内要启动的redis服务的端口号。后面的这个容器内redis服务的端口号,一定要和配置文件中:
在这里插入图片描述
指定的端口要一致!

也就是./redis/conf/redis.conf文件中指定的服务启动端口一定也是6379,否则,容器能成功启动,不会报错,但是服务无法访问。

build方式启动容器

一般来讲,通过镜像方式启动三方服务比如mysql、redis、sqlserver、nginx等,当前这类服务大多是支持docker的,可以很容器的找到对应的docker镜像。

我们自己的应用,可以通过build方式启动:

container-name:
    build:
      context: ./container-dir
      dockerfile: mydockerfile

其中context指定启动容器的主目录,dockerfile指定启动容器的配置文件名,dockfile在一定要在context指定的路径下存在。

dcokfile最主要的作用就是从宿主机映射我们的应用到docker容器内、暴露docker容器的端口到宿主机、在容器内运行服务。

容器服务的启停

在docker-compose.yml文件的当前路径下,通过一下命令创建并启动容器:

docker-compose -f docker-compose.yml up -d --build container-name

创建并启动build方式的容器服务。

docker-compose -f docker-compose.yml up -d redis

创建并启动镜像方式的容器。

创建容器之后,可以通过一下命令启停:

docker start container-name;
docker stop container-name;
docker restart container-name;

配置文件发生变化的话,需要通过第一种方式、重新创建并启动容器,新的配置才能生效。

docker容器的log文件

可以通过docker logs命令查看docker容器内服务的日志。

# 跟踪docker容器的日志
docker logs --follow container-name
# 最近30分钟的容器日志
docker logs --since 30m container-name
# 2024-04-26之后的10条日志
docker logs --since '2024-04-26' --tail=10 feixun-mssql

进入docker容器内部

docker exec -it container-name /bin/bash

比如:

[root@localhost feixun-mssql]# docker exec -it redis /bin/bash
root@redis:/data# ls
dump.rdb
root@redis:/data# pwd
/data
root@redis:/data# 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【论文浅尝】Phi-3-mini:A Highly Capable Language Model Locally on Your Phone

Phi-3-mini phi-3-mini&#xff0c;一个3.8亿个参数的语言模型&#xff0c;训练了3.3万亿个token&#xff0c;其总体性能&#xff0c;通过学术基准和内部测试进行衡量&#xff0c;可以与Mixtral 8x7B和GPT-3.5等模型相媲美(在MMLU上达到69%&#xff0c;在MT-bench上达到8.38)&…

什么是云手机?云手机有什么用?

过去&#xff0c;我们手中的手机是我们生活、工作、娱乐的得力助手&#xff0c;但随着时代的变迁和技术的发展&#xff0c;我们需要的不仅仅是一部手机&#xff0c;而是一个更强大、更灵活的工具。在这个时候&#xff0c;云手机横空出世&#xff0c;成为了我们手机使用的新选择…

[GXYCTF 2019]BabyUpload

过滤 <? 且后缀不能有 php 上传1.jpg文件&#xff0c;内容为&#xff1a; <script languagephp>eval($_POST[cmd]);</script> 但文件后缀为.jpg&#xff0c;蚁剑不能连接。那怎么办呢&#xff1f; .htaccess文件&#xff1a;解析.jpg文件中的php代码 &#xf…

Druid高性能数据库连接池?SpringBoot整合MyBatis整合SpringMVC整合Druid

文章目录 Druid高性能数据库连接池&#xff1f;SpringBoot整合MyBatis整合SpringMVC整合Druid异常记录spring-boot-starter-parent作用Druid介绍什么是数据库连接池&#xff1f;为什么选择Druid数据库连接池整合SpringBoot,MyBatis,SpringMVC,Druid到Maven项目的真个流程pom文件…

Redis入门到实战教程(基础篇)笔记

教学来源&#xff1a; Redis课程介绍导学_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1cr4y1671t?p1一、Redis 入门 1.认识NoSQL 2.Redis在虚拟机中的安装和开机自启 Redis在虚拟机中安装和配置开机自启-CSDN博客https://blog.csdn.net/qq_69183322/article/deta…

MT8788智能模块简介_MTK联发科安卓核心板方案厂商

MT8788安卓核心板是一款具备超高性能和低功耗的4G全网通安卓智能模块。该模块采用联发科AIOT芯片平台&#xff0c;供货周期长。 MT8788核心板搭载了12nm制程的四个Cortex-A73处理器核心和四个Cortex-A53处理器核心&#xff0c;最高主频可达2.0GHz。板载内存容量可选为4GB64GB(也…

docker 基本命令

目录 一、docker 镜像操作命令 1.1.查询软件镜像 1.2.docker pull&#xff1a;下载镜像 1.3.docker push&#xff1a;上传镜像 1.4.docker images&#xff1a;查看本地镜像 1.5.docker inspect &#xff1a;获取镜像详细信息 1.6.docker tag&#xff1a;添加镜像标签 …

4.28|重量级嘉宾携卓翼飞思RflySim平台亮相国际盛会,内容抢先看!

一. 大会背景 2024国际无人机应用及防控大会暨无人机产业博览会即将拉开帷幕&#xff0c;一场高规格、高水平的无人机产业应用国际盛会将再次点亮科技界的星空。 该大会由中国无人机产业创新联盟联合各方有影响力的单位&#xff0c;于4月27-29日在北京举办。组委会致力于将会…

【Python系列】受保护属性

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

RAG原理及本地化实践

基于LLM的应用在问题回答、信息获取上发挥出了巨大作用。这些通用大模型训练的数据主要来源于互联网上的会话或者个别机构提供的数据&#xff0c;虽然能够提供类似人的交互对答&#xff0c;但是在针对某个特定领域的时候就显得不足。通用大模型在应用中主要有以下问题&#xff…

【DINO】环境配置

1. DINO简介 作为一款基于Transformer性能强劲的计算机视觉算法&#xff0c;一经发布即受追捧&#xff0c;本文记录下在DINO官方代码在集群上的环境配置及训练自己的数据集过程。 DINO原文&#xff1a;https://arxiv.org/abs/2203.03605 DINO源代码&#xff1a;https://github.…

ssm084基于ssm的大型商场会员管理系统+jsp

大型商场会员管理系统的设计与实现 摘 要 进入信息时代以来&#xff0c;很多数据都需要配套软件协助处理&#xff0c;这样可以解决传统方式带来的管理困扰。比如耗时长&#xff0c;成本高&#xff0c;维护数据困难&#xff0c;数据易丢失等缺点。本次使用数据库工具MySQL和编…

【C语言必刷题】7. 百钱百鸡

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更…

《汇编语言》- 读书笔记 - 综合研究

《汇编语言》- 读书笔记 - 综合研究 研究试验 1 搭建一个精简的 C 语言开发环境1. 下载2. 配置3. 编译4. 连接 研究试验 2 使用寄存器1. 编一个程序 ur1.c &#xff08; tcc 用法&#xff09;tcc 编译连接多个源文件tlink 手动连接 2.用 Debug 加载 ur1.exe&#xff0c;用u命令…

数据转换 | Matlab基于RP递归图一维数据转二维图像方法

目录 效果分析基本介绍程序设计参考资料获取方式 效果分析 基本介绍 Matlab基于RP递归图一维数据转二维图像方法 基于RP&#xff08;Recurrence Plot&#xff09;递归图的方法可以将一维数据转换为二维图像&#xff0c;以可视化数据的动态特征。RP递归图是一种表示时间序列相…

android 去除桌面谷歌搜索框

注&#xff1a; 本文只是博主学习记录分享&#xff0c;仅供参考。如有错误请指出来&#xff0c;谢谢&#xff01; 一、问题描述 去除 android 系统桌面谷歌搜索栏&#xff0c;前后对比如下图&#xff1a; 系统版本&#xff1a;android12 平台&#xff1a;rk3568 二、…

【小浩算法cpp题解】判断环形链表

目录 前言我的思路思路一 &#xff08;哈希表记录链表的访问&#xff09;&#xff1a;思路二 &#xff08;双指针&#xff0c;快指针在前&#xff0c;慢指针在后&#xff09;&#xff1a; 我的代码运行结果 前言 前几天我写的代码&#xff0c;都是把所有的内容写在main函数里&…

Veeam配置备份oracle实例

Veeam是一家专门提供数据管理和数据保护解决方案的软件公司。他们的产品主要包括备份、复制和虚拟化管理等功能&#xff0c;旨在帮助企业保护其数据、应用程序和系统&#xff1b;NBU&#xff0c;COMMVALT&#xff0c;Veeam 国际三大知名备份软件厂商。本文介绍使用Veaam 备份Li…

【nodejs状态库mobx之computed规则】

The above example nicely demonstrates the benefits of a computed value, it acts as a caching point. Even though we change the amount, and this will trigger the total to recompute, it won’t trigger the autorun, as total will detect its output hasn’t been …

行人属性AI识别/人体结构化属性AI识别算法的原理及应用场景介绍

行人属性AI识别技术是一种基于人工智能技术的图像识别技术&#xff0c;通过对行人的图像或视频进行处理和分析&#xff0c;提取出其中的结构化信息&#xff0c;如人体姿态、关键点位置、行人属性&#xff08;性别、年龄、服装等&#xff09;等。 行人结构化数据分析的方法包括…
最新文章