docker入门级命令

news2024/11/23 14:04:59

基本概念

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.coloradmin.cn/o/1626643.html

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

相关文章

JWT原理解析

一、概述 虽然现在很多的开发框架会支持JWT的使用&#xff0c;但是对JWT还是没有一个详细的了解&#xff0c;有很多疑惑&#xff1a; JWT比之前的session或者token有什么好处&#xff1f;JWT的构成元素是什么&#xff1f;JWT从生成到使用的详细流程&#xff1f; 二、 JWT 2…

PLL深度解析第一篇——PLL的知识图谱

在硬件电路中&#xff0c;时钟就像心脏一样&#xff0c;在时钟的节拍下&#xff0c;不同的芯片、不同的电路、不同的接口都可以有序的进行工作或者通信&#xff08;类似流水线一样&#xff0c;必须有节奏的运行&#xff09;。 但是在芯片中&#xff0c;不同的模块和接口工作的频…

chrome浏览器安装elasticsearch的head可视化插件

head插件简介 elasticsearch-head被称为是弹性搜索集群的web前端&#xff0c;head插件主要是用来和elastic Cluster交互的Web前端 head插件历史 elasticsearch-head插件在0.x-2.x版本的时候是集成在elasticsearch内的&#xff0c;由elasticsearch的bin/elasticsearch-plugin…

详细介绍gnomAD

字段含义介绍&#xff1a; https://www.biorxiv.org/content/biorxiv/early/2020/04/08/531210/DC1/embed/media-1.pdf?downloadtrue 版本更新 gnomAD v3.0 | MacArthur Lab

vue 实现项目进度甘特图

项目需求&#xff1a; 实现以1天、7天、30天为周期&#xff08;周期根据筛选条件选择&#xff09;&#xff0c;展示每个项目不同里程碑任务进度。 项目在Vue-Gantt-chart: 使用Vue做数据控制的Gantt图表基础上进行了改造。 有需要的小伙伴也可以直接引入插件&#xff0c;自己…

C++中的继承与多态

一、继承&#xff1a; 1.什么是继承&#xff1f; 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承呈现了面向对象…

行为学学习记忆实验和抗焦虑实验两款硬件

安徽耀坤XWX-BM八臂迷宫实验&#xff08;Eight-arm Maze Test&#xff0c;RMT&#xff09;由八个完全相同的臂组成&#xff0c;这些臂从一个中央平台放射出来&#xff0c;所以又被称为放射迷宫。其基本方式是&#xff1a;训练动物受食物的驱使对迷宫的各臂进行探究&#xff0c;…

《第二行代码》第二版学习笔记(6)——内容提供器

文章目录 一 运行时权限2.权限分类3 运行时申请权限 二、内容提供器1、 ContentResolver的基本用法2、现有的内容提供器3、创建自己的内容提供器2.1 创建内容提供器的步骤2.2 跨程序数据共享 内容提供器&#xff08;Content Provider&#xff09;主要用于在不同的应用程序之间实…

用VMware虚拟机安装Centos7

用VMware虚拟机安装Centos7&#xff0c;无需废话&#xff0c;下面直接给步骤。 目录 1.下载VMware2.下载CentOS 73.安装VMware4.安装虚拟机 1.下载VMware VMware官方下载地址 里面可以选择你喜欢的一个版本&#xff0c;然后选择Windows64位的来下载。 2.下载CentOS 7 Cent…

ssm082基于java斗车交易系统设计与实现+vue

斗车交易系统 摘 要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff0c;科学化的管理&…

冯唐成事心法笔记 —— 知世

系列文章目录 冯唐成事心法笔记 —— 知己 冯唐成事心法笔记 —— 知人 冯唐成事心法笔记 —— 知世 冯唐成事心法笔记 —— 知智慧 文章目录 系列文章目录PART 3 知世 成事者的自我修养怎样做一个讨人喜欢的人第一&#xff0c;诚心第二&#xff0c;虚心 如何正确看待别人的评…

[Android]修改应用包名、名称、版本号、Icon、启动页以及环境判断和打包

1.修改包名 在Android Studio中更改项目的包名涉及几个步骤&#xff1a; 打开项目结构: 在Android Studio中&#xff0c;确保您处于Android视图模式&#xff08;在左侧面板顶部有一个下拉菜单可以选择&#xff09;。 重命名包名: 在项目视图中&#xff0c;找到您的包名&…

挑战一周完成Vue3实战项目硅谷甄选Day1:项目初始化、项目配置、项目集成

一、项目初始化 node v16.4.0以上&#xff08;查看node版本 : node -v&#xff09; pnpm 8.0.0&#xff08;npm i -g pnpm8.0.0&#xff09; 在想创建的位置新建文件夹自己命名 在此文件夹下cmd:pnpm create vite 选择如下配置 Project name&#xff08;项目名称&#xff0…

【网络编程】TCP流套接字编程 | Socket类 | ServerSocket类 | 文件资源泄露 | TCP回显服务器 | 网络编程

文章目录 TCP流套接字编程1.ServerSocket类2.Socket类3.文件资源泄露4.**TCP回显服务器** TCP流套接字编程 ​ ServerSocket类和Socket类这两个类都是用来表示socket文件&#xff08;抽象了网卡这样的硬件设备&#xff09;。 TCP是面向字节流的&#xff0c;传输的基本单位是b…

这样狠心的女人,不配当妈!

男人小时候经常受父亲虐待&#xff0c;初中毕业就到深圳打拼&#xff0c;基本与父母再无联系。 因为心有创伤&#xff0c;他没有考虑过结婚的事情&#xff0c;也不希望自己的娃成为受苦的一代。 然而&#xff0c;机缘巧合&#xff0c;他偶然之间认识了自己的爱人。 在妻子小的时…

BGP选路实验(锐捷)---Origin选路

实验拓扑图 基本配置如图所示 要求&#xff1a;R5上利用loopback口建立多个分段ip&#xff0c;利用bgp选路原则让双网段数据通过R6转发&#xff0c;单网段数据通过R7转发&#xff0c;通过修改Origin的属性类型为intcomplete&#xff08;利用三种不同的Origin属性的优先顺序&am…

基于MLP算法实现交通流量预测(Pytorch版)

在海量的城市数据中&#xff0c;交通流量数据无疑是揭示城市运行脉络、洞察出行规律的关键要素之一。实时且精准的交通流量预测不仅能为交通规划者提供科学决策依据&#xff0c;助力提升道路使用效率、缓解交通拥堵&#xff0c;还能为公众出行提供参考&#xff0c;实现个性化导…

【网络安全】安全事件管理处置 — 安全事件处置思路指导

专栏文章索引&#xff1a;网络安全 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、处理DDOS事件 1.准备工作 2.预防工作 3.检测与分析 4.限制、消除 5.证据收集 二、处理恶意代码事件 1.准备 2.预防 3.检测与分析 4.限制 5.证据收集 6.消除与恢复 …

JS 删除数组元素( 5种方法 )

No.内容链接1Openlayers 【入门教程】 - 【源代码示例300】 2Leaflet 【入门教程】 - 【源代码图文示例 150】 3Cesium 【入门教程】 - 【源代码图文示例200】 4MapboxGL【入门教程】 - 【源代码图文示例150】 5前端就业宝典 【面试题详细答案 1000】 文章目录 一、五种…

PS学习笔记-抠图相关

选好颜色后&#xff0c;altdelete更换画布颜色、填充前景色 按住shift键自由缩放图片&#xff0c;调好后双击鼠标即可完成&#xff0c;或者点击工具栏的 对勾 在某图层下 CTRLT 变换图片&#xff0c;调好后双击鼠标即可完成&#xff0c;或者点击工具栏的 对勾 CTRLJ复制图…