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: ./springbootAppdockerfile: Dockerfilerestart: alwayscontainer_name: myApplicationports:- 9801:9801logging: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/timezoneVOLUME /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: redisrestart: alwayshostname: rediscontainer_name: redisprivileged: trueports:- 6379:6379environment:TZ: Asia/Shanghaivolumes:- ./redis/data:/data- ./redis/conf/redis.conf:/etc/redis/redis.conf- ./redis/logs:/logscommand: ["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-dirdockerfile: 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.mzph.cn/news/829288.shtml

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

相关文章

Linux系统安全及应用(1)

目录 一.账号安全控制 系统账号清理 二.密码安全控制 密码安全控制 三.命令历史限制 命令历史限制 四.限制su切换用户 1&#xff09;将信任的用户加入到wheel组中 2&#xff09;修改su的PAM认证配置文件 ​编辑五.PAM认证的构成 六.使用sudo机制提升权限…

IDEA离线安装插件

1、下载地址 https://plugins.jetbrains.com/idea 如果去其他编辑器&#xff0c;点击下拉&#xff0c;选择即可。 2.搜索 在输入框输入关键词&#xff0c;按照提示选择即可&#xff0c;点击搜索按钮&#xff0c;查看结果。 3、选择版本 按照自己的版本选择合适的版本 4、安…

linux的SSH(远程登录)服务

目录 1.SSH远程管理 1.1 SSH的概述 1.2 OpenSSH服务器 1.3 SSH端口、配置文件 2.服务端重要配置 3.登录验证方式 3.1 密码验证 3.2 密钥对验证 4.使用 SSH 客户端程序 4.1 ssh 远程登录 4.2 scp 远程复制 4.3 sftp文件传输 5.创建使用密钥对 6.TCP Wrappers访问控…

CLIP论文笔记:Learning Transferable Visual Models From Natural Language Supervision

导语 会议&#xff1a;ICML 2021链接&#xff1a;https://proceedings.mlr.press/v139/radford21a/radford21a.pdf 当前的计算机视觉系统通常只能识别预先设定的对象类别&#xff0c;这限制了它们的广泛应用。为了突破这一局限&#xff0c;本文探索了一种新的学习方法&#x…

sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

Linux线程(pthread)概念以及编程

pthread 线程的意思 1.简的来说&#xff0c;线程的概念就是在一个程序中&#xff0c;同时进行多个函数的运行比如以下代码 2.要引入头文件#include <pthread.h> ; 线程被调函数的定义是空指针类型的如&#xff1a; void *func1() 在main函数中&#xff0c;pthread_cre…

【软件】ERETCAD-Env:在轨空间环境3D动态仿真软件

文章介绍了Extreme-environment Radiation Effect Technology Computer-Aided Design – Environment (ERETCAD-Env)软件&#xff0c;文章的介绍和展示了ERETCAD-Env软件的功能和特点&#xff0c;这是一款用于动态模拟在轨卫星所处空间环境的计算机辅助设计软件。强调了该软件在…

Rust异步并发编程tokio异步运行时讲解和使用,新手必学

Rust 在v1.39版本以后就引入了async关键字&#xff0c;用于支持异步编程。 async fn foo() {}Rust中&#xff0c;async函数或块会被视作一个 Future 对象&#xff0c;async 关键字只是用来定义这个 Future 对象&#xff0c;定义好的这片异步代码并不会自动执行&#xff0c;而是…

c语言指针的应用场景

​ 1.什么是指针&#xff1f; 当我们提起指针的时候&#xff0c;可能第一反应会露出惊喜的表情 &#xff08;但是我们其实没必要那么慌&#xff0c;因为当我们随着我们学习的越来越深入就会发现&#xff0c;指针虽然看起来难&#xff0c;实际上也不怎么简单。哈哈哈开玩笑的&a…

TCN-LSTM时间卷积网络长短期记忆网络多输入多输出回归预测

文章目录 效果一览文章概述 订阅专栏只能获取一份代码部分源码参考资料 效果一览 文章概述 TCN-LSTM时间卷积网络长短期记忆网络多输入多输出回归预测 matlab2021 订阅专栏只能获取一份代码 部分源码 %------------------------------------------------------------------…

c# winform打包

本次采用vs2022打包winform窗体应用&#xff0c;有时应用不需要打包为安装应用&#xff0c;执行一个EXE就运行了 测试了几次&#xff0c;winform 非.net Framework 和控制台程序也是非.net Framework项目能打包这种&#xff0c;后续在研究

边缘计算在视频监控领域的应用

一、边缘计算在视频监控领域的应用 运用边缘计算解决视频监控问题&#xff0c;可以带来许多优势。以下是一些具体的应用示例&#xff1a; 实时分析与处理&#xff1a;在视频监控系统中&#xff0c;边缘计算盒子可以实时处理和分析视频流&#xff0c;实现对监控画面的智能识别…

STM32H7 HSE时钟的使用方法介绍

目录 概述 1 STM32H750 HSE时钟介绍 2 使用STM32Cube创建Project 3 认识HSE时钟 3.1 HSE时钟的特性 3.2 HSE的典型应用电路 4 STM32Cube中配置时钟 4.1 时钟需求 4.2 配置参数 4.2.1 使能外围资源 4.2.2 使用STM32Cube注意项 4.2.3 配置参数 5 总结 概述 本文主要…

IBM SPSS Statistics for Mac v27.0.1中文激活版:强大的数据分析工具

IBM SPSS Statistics for Mac是一款功能强大的数据分析工具&#xff0c;为Mac用户提供了高效、精准的数据分析体验。 IBM SPSS Statistics for Mac v27.0.1中文激活版下载 该软件拥有丰富的统计分析功能&#xff0c;无论是描述性统计、推论性统计&#xff0c;还是高级的多元统计…

论文解读:(CAVPT)Dual Modality Prompt Tuning for Vision-Language Pre-Trained Model

v1文章名字&#xff1a;Dual Modality Prompt Tuning for Vision-Language Pre-Trained Model v2文章名字&#xff1a;Class-Aware Visual Prompt Tuning for Vision-Language Pre-Trained Model 文章汇总 对该文的改进&#xff1a;论文解读&#xff1a;(VPT)Visual Prompt …

Visual Studio 对 C++ 头文件和模块的支持

在 C 编程领域&#xff0c;头文件和模块的管理有时候确实比较令人头疼。但是&#xff0c;有许多工具和功能可以简化此过程&#xff0c;提高效率并减少出错的可能性。下面是我们为 C 头文件和模块提供的几种工具的介绍。 构建明细 通过菜单栏 Build > Run Build Insights&a…

【个人博客搭建】(11)swagger添加jwt信息

这个主要是为了方便使用swagger时&#xff0c;能更好的带入我们的token。 ps&#xff1a;如果使用其他第三方api工具&#xff08;apipost、postman等&#xff09;则不需要。 &#xff08;当然&#xff0c;不用不能没有&#xff0c;是吧&#xff09; 1、在AddSwaggerGen内添加…

本地Windows主机,使用pycharm通过wsl的ubuntu来创建django项目

Windows主机在pycharm中通过wsl的ubuntu来创建django项目 需求&#xff1a;在windows主机中创建python项目再转接到linux服务器中运行&#xff0c;有点麻烦。【特别是存放日志文件或其他文件路径时需要修改为linux中的路径】 1&#xff1a;我的是windows主机 2&#xff1a;有…

关于SSL加密,您应该知道什么?

SSL加密&#xff0c;全称为安全套接字层加密&#xff0c;是一种网络安全协议&#xff0c;主要用于在网络通信中提供隐私和数据完整性。它通过在客户端和服务器之间建立一个加密的通道&#xff0c;确保数据在传输过程中不被窃取或篡改。随着互联网的普及和电子商务的快速发展&am…

前端提高篇(二十四)JS进阶18对象属性的高级用法

x:1, y:2, } Object.defineProperty(obj1, ‘z’,{ value:3, writable:true, enumerable:true, configurable:true, }) for (var i in obj1){ console.log(i ’ : ’ obj1[i]); } 运行效果&#xff1a; 不可枚举时&#xff1a; var obj1 { x:1, y:2, } Obj…