Docker相关命令与入门

news2024/11/16 15:49:32

1. Docker 命令

# centos 7
systemctl start docker 	 	# 启动服务
systemctl stop docker  		
systemctl restart docker  	# 重启服务
systemctl status docker
systemctl enable docker 	# 开机自启动

1.1 镜像相关的命令

# 查看镜像
docker images
docker images -q # 查看所有的镜像ID
# 搜索镜像
docker search redis  #可以直接去官网查看docker官方支持的镜像  hub.docker.com
# 拉取镜像
docker pull redis[: 版本号]
# 删除镜像
docker rmi IMAGEID

1.2 容器相关的命令

# 查看容器 
docker ps -a 	# -a:查看所有的容器包括历史的
# 创建并启动容器  
# -i:容器一直运行 -t:分配一个伪终端 --name:起名字 
docker run -i -t --name=c1 image:版本 /bin/bash		# 交互式容器
# -d:后台运行容器
docker run -i -d --name=c2 image:版本  				# 守护式容器
# 退出容器 利用-it创建的容器exit后容器会立刻关闭
exit
# 进入容器
docker exec -i -t 容器名 /bin/bash
# 停止容器
docker stop 容器名
# 启动容器
docker start 容器名
# 删除容器(不能删除运行的容器)
docker rm 容器名
# 查看容器信息
docker inspect 容器名

1.3 容器的数据卷

1.3.1数据卷的概念和作用
  • Docker容器删除后,容器中产生的数据就不在了

  • Docker容器不可以和外部机器直接交换文件

  • 容器之间的怎么数据交互? —>数据卷

    1. 数据卷是宿主机中的一个目录或文件
    2. 当容器目录和数据卷目录绑定之后,对方的修改会立即同步
    3. 一个数据卷可以被多个容器同时挂载
    4. 一个容器可以挂在多个数据卷
  • 数据卷的作用

    • 容器数据的持久化
    • 外部机器和容器的间接通信
    • 容器之间的数据交换
1.3.2 数据卷的配置
  • 创建容器时,使用-v设置数据卷

    docker run ... -v 宿主机目录:容器内目录 [-v 宿主机目录:容器内目录]
    
  • 注意:

    1. 目录必须时是绝对路径
    2. 如果目录不存在,会自动创建
    3. 可以挂在多个数据卷
  • 通过多个容器挂载相同的数据卷,可以实现容器之间的数据交互

    docker run -it --name=c3 -v /root/data:/root/data centos:7
    docker run -it --name=c4 -v /root/data:/root/data centos:7
    
    # 容器中在挂在的目录修改添加文件后,两个容器的数据是同步的
    echo hhhh>a.txt
    
1.3.3 数据卷容器
  1. 创建启动c3数据卷容器,使用-v参数设置数据卷

    docker run -it --name=c3 -v /volume centos:7
    
    -v /volume 没有指定宿主机的数据卷目录,docker会自动分配一个目录,可使用docker inspect c3查看 
    
  2. 创建启动c1 c2容器,使用–-volumes-from挂载到容器c3

    docker run -it --name=c1 --volumes-from c3 centos:7
    docker run -it --name=c2 --volumes-from c3 centos:7
    
  3. 此时c1 和c2 挂载到了c3上,c3挂载到了宿主机上,本质上是c1、c2、c3都挂载到了宿主机的同一个位置

2. Docker 应用部署

2.1 MySql部署

  • 在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server

问题:

  1. 容器内的网络服务和外部机器是不能直接通信的
  2. 外部机器和宿主机可以直接通信
  3. 容器和宿主机可以直接通信

解决方式端口映射

当容器中的网络服务需要被外部机器访问时,可以将容器中提供服务的端口映射到宿主机的端口上。外部机器就可以通过访问宿主机的端口,从而访问容器的服务
在这里插入图片描述

步骤:

  1. 搜索镜像

    docker search mysql
    
  2. 拉取镜像

    docker pull mysql:5.6
    
  3. 创建容器、设置端口映射、目录映射(数据卷)

    #先在宿主机/root目录下创建一个mysql目录,用于存储mysql数据信息
    mkdir ~/mysql
    cd ~/mysql/
    

    创建端口映射、数据卷

    docker run -id \  		# 以后台运行的方式创建容器
    -p 3307:3306 \			# 端口映射  宿主端口:容器服务端口
    --name=c_mysql \		
    -v $PWD/conf:/etc/mysql/conf.d \  	# 必要的数据卷设置
    -v $PWD/logs:/logs \				# 同上
    -v $PWD/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \		# 初始化root用户的密码
    mysql:5.6				# 镜像以及版本的选择
    

    进入容器

    docker exec -it c_mysql /bin/bash
    

    进入容器后就可以直接登录mysql,并进行mysql的相应操作了

    此时可以在外部主机通过映射的端口访问到容器内了

  4. 操作容器

2.2 部署tomcat

mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat
在宿主机器上创建HTML网页,例如创建在$PWD/test/index.html
浏览器访问:http://192.168.148.129:8080/test/index.html

2.3 部署redis

  • 先是按照上述的命令下载redis某个版本(如5.0)的镜像,然后执行如下命令
docker run -id --name=c_redis -p 6379:6379 redis:5.0

3. Dockerfile

  • 主要作用:用于制作Docker 镜像

3.1 Docker 镜像原理

  • 镜像原理

    1. Docker镜像是由特殊的文件系统叠加而成
    2. 最底端是bootfs,使用宿主机的bootfs
    3. 第二层是root文件系统rootfs,称为base image
    4. 之后往上边叠加替他的镜像文件
    5. 统一文件系统技术将不同的层整合成一个文件系统,为这些层提供一个统一的视角,这样来隐藏多层的存在,在用户看来,,只存在一个文件系统
    6. 一个镜像可以放在另一个镜像的上面。位于下面的镜像称为父镜像,最底部的镜像是基础镜像
    7. 镜像是只读的,但是Docker可以加载一个可读写的文件系统作为容器,再整成新的镜像

3.2 Docker 镜像如何制作

  1. 容器转化为镜像
    # 将一个容器转化为镜像
    docker commit 容器id 镜像名称:版本号
    # 镜像无法传输,因此需要将镜像转化为压缩文件以便于传输
    docker save -o 压缩文件名称 镜像名称:版本号
    # 将压缩文件解压为镜像
    docker load -i 压缩文件名称
    
    
    • docker 的容器转化为镜像时,只有容器内产生的文件或数据才会保存为镜像,
  2. Dockerfile制作

    • 书写Dockerfile可以优先抄写官网上的写法

    • Dockerfile关键字 关键字指南

      写好Dockerfile文件

      使用 docker bulid 命令 构建镜像,然后镜像被压缩后就可以传输给别的使用者

    docker build -f dockerfile文件路径 -t 镜像名称:版本 .
    
    Dockerfile案例实践:

    自定义一个centos7镜像,要求:

    1. 默认登录路径为 :/usr
    2. 可以使用vim

    Dockerfile文件如下:

    # dockerfile 注意dockerfile中需要的镜像资源,本机如果有就会使用本机的
    # 若本机没有会自动下载
    FROM centos:7
    MAINTAINER dzc<12345@qq.com>
    RUN yum install -y vim
    WORKDIR /usr
    CMD /bin/bash
    
    #docker bulid 构建镜像
    # -f docker文件路径
    # -t 镜像名称:版本号
    # .搜索路径
    docker build -f ./centos_dockerfile -t centos_with_vim:1.0 .
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lmOjQ2Gm-1691217727220)(C:\Users\DongZhaoCheng\AppData\Roaming\Typora\typora-user-images\image-20230804150116475.png)]

    docker build 最后的 . 号,其实是在指定镜像构建过程中的上下文环境的目录

    # 由镜像创建并启动容器,即可进入
    docker run -it --name=centos_vim centos_with_vim:1.0
    

4. Docker 服务编排

4.1 服务编排概念

docker-compose.yml文件中定义各个容器之间的关系、启动顺序等

4.2 docker-compose安装

# 二进制包的方式安装到linux中(命令多试几次就行了)
curl -L https://github.com/docker/compose/release/download/1.22.0/docker-compose-`uname-s`-`uname-m` -o /usr/local/bin/docker-compose
# 设置文件的可执行权限
chmod +x /usr/local/bin/docker-compose
# 查看版本
docker-compose --version

4.3 一个docker-compose.yml的示例 视频讲解


5. Docker 私有仓库

5.1 私有仓库搭建(照着执行就可以)

5.2 将镜像传到私有仓库

①先给镜像打标签Tag(标记镜像为私有仓库的镜像)
# 查看有啥镜像
docker iamges
>>---------------------------虚线下为终端输出
REPOSITORY        TAG       IMAGE ID       CREATED             SIZE
centos_with_vim   1.0       087e14c3fff7   About an hour ago   477MB
nginx             latest    605c77e624dd   19 months ago       141MB
tomcat            latest    fb5657adc892   19 months ago       680MB
redis             5.0       c5da061a611a   19 months ago       110MB
mysql             5.6       dd3b2a5dcb48   19 months ago       303MB
registry          latest    b8604a3fe854   20 months ago       26.2MB
centos            7         eeb6ee3f44bd   22 months ago       204MB

# 打标签(勿忘端口号)
docker tag centos_with_vim:1.0 192.168.148.129:5000/centos_vim

# 再查看下镜像
docker iamges
>>---------------------------虚线下为终端输出
REPOSITORY                        TAG       IMAGE ID       CREATED             SIZE
centos_with_vim                   1.0       087e14c3fff7   About an hour ago   477MB
192.168.148.129:5000/centos_vim   latest    087e14c3fff7   About an hour ago   477MB
nginx                             latest    605c77e624dd   19 months ago       141MB
tomcat                            latest    fb5657adc892   19 months ago       680MB
redis                             5.0       c5da061a611a   19 months ago       110MB
mysql                             5.6       dd3b2a5dcb48   19 months ago       303MB
registry                          latest    b8604a3fe854   20 months ago       26.2MB
centos                            7         eeb6ee3f44bd   22 months ago       204MB
②push到私有仓库
docker push 192.168.148.129:5000/centos_vim
>>>----------------------------------------
Using default tag: latest
The push refers to repository [192.168.148.129:5000/centos_vim]
5f70bf18a086: Pushed
e125f7c01fa0: Pushed
174f56854903: Pushed
latest: digest: sha256:eadf3fbeaabf26be9b490a31dcd395899a2025deee37fa5be0045a7df30f7a39 size: 947

5.3 拉取私有仓库的镜像到本地

 # 192.168.148.129:5000/centos_vim 分别是私有仓库的地址和端口以及其镜像的名称
 docker pull 192.168.148.129:5000/centos_vim

6. Docker 相关概念

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K3Y7lYtW-1691217727222)(C:\Users\DongZhaoCheng\AppData\Roaming\Typora\typora-user-images\image-20230804162642235.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-db82Ropo-1691217727222)(C:\Users\DongZhaoCheng\AppData\Roaming\Typora\typora-user-images\image-20230804162342804.png)]


如果本文对您有用,可以点赞、收藏本文哦,下次用到时就好找多了
如果能关注作者就太好了,作者将持续学习,持续输出,持续分享!谢谢鼓励!

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

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

相关文章

深度学习:探究Tensor和Numpy

目录 引言 1 pytorch中Tensor 1.1 什么是Tensor 1.2 为什么需要Tensor 1.3 如何创建Tensor 1.3.1 从已有其他数据结构转化创建为Tensor 1.3.2 随机初始化一个Tensor 1.3.3 从已保存文件加载一个Tensor 1.4 Tensor的特性 1.4.1 丰富的常用函数操作 1.4.2 灵活的dtype和…

使用TensorBoard进行可视化

1. TensorBoard介绍 TensorBoard是TensorFlow推出的可视化工具&#xff0c;可以可视化模型结构、跟踪并以表格形式显示模型指标。 TensorBoard的使用包括两个步骤&#xff1a; 在代码中设置TensorBoard&#xff0c;在训练的过程中将会根据设置产生日志文件在浏览器中可视化该…

启动RocketMQ报错

说明&#xff1a;启动RocketMQ消费者时&#xff0c;报以下错误&#xff1a;java.lang.IllegalStateException&#xff1a;Failed to start RocketMQ push consumer. 解决&#xff1a;看下所有的监听器类&#xff0c;检查是不是有相同的消费者组名&#xff0c;注释掉其中一个即可…

文心一言 VS 讯飞星火 VS chatgpt (71)-- 算法导论7.1 1题

参照图 7-1的方法&#xff0c;说明 PARTITION在数组 A(13&#xff0c;19&#xff0c;9&#xff0c;5&#xff0c;12&#xff0c;8&#xff0c;7&#xff0c;4&#xff0c;21&#xff0c;2&#xff0c;6&#xff0c;11)上的操作过程。 文心一言&#xff1a; PARTITION 是一种常…

C++笔记之while循环的帧率监测与控制

C笔记之while循环的帧率监测与控制 code review! 文章目录 C笔记之while循环的帧率监测与控制1.两个时间相关的类2.例程3.运行4.代码 1.两个时间相关的类 2.例程 3.运行 4.代码 // 帧率监测与控制程序 #include <chrono> #include <iostream> #include <thre…

python 连接oracle pandas以简化excel的编写和数据操作

python代码 Author: liukai 2810248865qq.com Date: 2022-08-18 04:28:52 LastEditors: liukai 2810248865qq.com LastEditTime: 2023-07-06 22:12:56 FilePath: \PythonProject02\pandas以简化excel的编写和数据操作.py Description: 这是默认设置,请设置customMade, 打开koro…

Python爬虫的学习day02 requests 模块post 函数, lmxl 模块的 etree 模块

1. requests 模块post 函数 1.1 post 函数的参数 &#xff08;简单版&#xff09; 参数1&#xff1a; url 网络地址 参数2&#xff1a; data 请求数据 &#xff08;一般数据是 账号&#xff0c;密码&#xff09; 参数3&#xff1a; headers 头请求 &#xff08…

概念解析 | 虚拟镜面:超越三次反射的非视线成像

虚拟镜面:超越三次反射的非视线成像 注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:虚拟镜面在非视线成像中的应用。 参考文献:Royo D, Sultan T, Muoz A, et al. Virtual Mirrors: Non-Line-of-Sight Imaging Beyond the Th…

MyBatis关联查询

文章目录 前言多对一关联 association一对多关联 collection 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 关联查询是指在一个查询中同时获取多个表中的数据&#xff0c;将它们结合在一起进行展示。 关联表需要两个及以上的表 数据库代码&#xff1…

初阶C语言——特别详细地介绍函数

系列文章目录 第一章 “C“浒传——初识C语言&#xff08;更适合初学者体质哦&#xff01;&#xff09; 第二章 详细认识分支语句和循环语句以及他们的易错点 第三章 初阶C语言——特别详细地介绍函数 目录 系列文章目录 前言 一、函数是个什么鬼东西&#xff1f; 二、C语…

springboot基于vue的高校迎新系统的设计与实现8jf9e

随着时代的发展&#xff0c;人们的生活方式得到巨大的改变&#xff0c;从而慢慢地产生了大量高校迎新信息&#xff0c;高校迎新信息需要一个现代化的管理系统&#xff0c;进行高校迎新信息的管理。 高校迎新系统的开发就是为了解决高校迎新管理的问题&#xff0c;系统开发是基于…

JavaScript |(六)DOM事件 | 尚硅谷JavaScript基础实战

学习来源&#xff1a;尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版 文章目录 &#x1f4da;事件对象&#x1f4da;事件的冒泡&#x1f4da;事件的委派&#x1f4da;事件的绑定&#x1f407;赋值绑定&#x1f407;addEventListener()&#x1f407;attachEvent()&…

认识FFMPEG框架

FFMPEG全称: Fast Forward Moving Picture Experts Group (MPEG:动态图像专家组) ffmpeg相关网站: git://source.ffmpeg.org/ffmpeg.git http://git.videolan.org/?pffmpeg.git https://github.com/FFmpeg/FFmpeg FFMPEG框架基本组件: AVFormat , AVCodec, AVDevice, AVFil…

【多线程学习6】synchronized关键字

【多线程学习6】synchronized关键字 一、synchronized关键字是什么&#xff1f;有什么作用&#xff1f; synchronized关键字是Java线程同步的关键字&#xff0c;其可以修饰方法或代码块&#xff0c;并可以保证其修饰的方法或代码块在任意时刻只能有一个线程执行。 synchroni…

关于HIVE的分区与分桶

1.分区 1.概念 Hive中的分区就是把一张大表的数据按照业务需要分散的存储到多个目录&#xff0c;每个目录就称为该表的一个分区。在查询时通过where子句中的表达式选择查询所需要的分区&#xff0c;这样的查询效率会提高很多 个人理解白话:按表中或者自定义的一个列,对数据进…

筛选给定范围内的日志

目录 1.时间戳 2.实例 1.首先创建ubuntu.log日志 2.写dem.awk创建规则 3.筛选 1.时间戳 一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列&#xff0c;唯一地标识某一刻的时间。 awk提供了mktime()函数&#xff0c;它可以将时间…

macbook怎么卸载软件?2023年最新全新解析macbook电脑怎样删除软件

macbook怎么卸载软件&#xff1f;2023年最新全新解析macbook电脑怎样删除软件。关于Mac笔记本如何卸载软件_Mac笔记本卸载软件的四种方法的知识大家了解吗&#xff1f;以下就是小编整理的关于Mac笔记本如何卸载软件_Mac笔记本卸载软件的四种方法的介绍&#xff0c;希望可以给到…

像素画教程:立体感与“84渐变法“

像素画本身没有什么困难&#xff0c;是矢量图简笔画之外最简单、而又最容易产生美术效果的画风。 然而&#xff0c;细节难以描绘、立体感难表现、画面易单调成了像素画绘制过程中的常见困难。 这篇文章或许不能保证每个人都能熟练掌握、运用像素画&#xff0c;但至少可以抛砖引…

任务14、无缝衔接,MidJourney瓷砖(Tile)参数制作精良贴图

14.1 任务概述 在这个实验任务中,我们将深入探索《Midjourney Ai绘画》中的Tile技术和其在艺术创作中的具有挑战性的应用。此任务将通过理论学习与实践操作相结合的方式,让参与者更好地理解Tile的核心概念,熟练掌握如何在Midjourney平台上使用Tile参数,并实际运用到AI绘画…

【雕爷学编程】Arduino动手做(184)---快餐盒盖,极低成本搭建机器人实验平台

吃完快餐粥&#xff0c;除了粥的味道不错之外&#xff0c;我对个快餐盒的圆盖子产生了兴趣&#xff0c;能否做个极低成本的简易机器人呢&#xff1f;也许只需要二十元左右 知识点&#xff1a;轮子&#xff08;wheel&#xff09; 中国词语。是用不同材料制成的圆形滚动物体。简…