Docker常用操作命令总结(一)

news/2024/5/10 7:36:35/文章来源:https://blog.csdn.net/YZL40514131/article/details/128439885

在这里插入图片描述


文章目录

  • 一、Docker的应用场景
  • 二、Docker 的优点
  • 三、Docker 架构
  • 四、安装Docker
    • 1、更新 apt 包索引
    • 2、安装docker
    • 3、安装完成之后,运行命令sudo docker info,检查安装状态
    • 4、有可能,第一次需要手动启动服务.就需要执行下面的命令,
    • 5、还需要将docker服务设置成开机启动
    • 6、镜像加速
    • 7、重启服务
  • 五、镜像操作
    • 拉取,下载镜像,一般都是从dockerhub中拉去
    • 1、例如下载python镜像
    • 2、列出所有的镜像
    • 删除镜像
  • 六、容器操作
    • 1、启动容器
    • 2、查看所有的容器
    • 3、查看正在运行的容器
    • 4、启动一个停止的容器
    • 5、停止一个容器
    • 6、删除一个容器(只能删除停止的容器)
  • 七、搭建一个mariadb的容器
    • 1、下载镜像mariadb镜像
    • 2、运行容器
    • 3、端口映射(端口需要放开)
    • 4、进入正在运行的容器中
    • 5、查看容器的日志
  • 八、数据卷
    • 1、作用:实现容器和宿主机之间的数据共享
    • 2、查看数据卷:
    • 3、查看数据卷的详细信息
  • 九、搭建redis服务器
    • 1、下载镜像
    • 2、查看镜像是否下载成功
    • 3、启动容器
    • 4、进入容器中

一、Docker的应用场景

Web 应用的自动化打包和发布。
自动化测试和持续集成、发布。
在服务型环境中部署和调整数据库或其他的后台应用。
从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

二、Docker 的优点

您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。

三、Docker 架构

Docker 包括三个基本概念:

镜像(Image):在docker中把安装包叫做镜像,镜像是启动一个服务的时候所有的配置文件

容器(Container):容器是运行镜像后的一个状态,容器才是真正提供业务的单位;镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

概念说明
Docker 镜像(Images)Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。
Docker 容器(Container)容器是独立运行的一个或一组应用,是镜像运行时的实体。
Docker 客户端(Client)Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。
Docker 主机(Host)一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

四、安装Docker

以ubuntu为例

1、更新 apt 包索引

sudo apt update

2、安装docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

3、安装完成之后,运行命令sudo docker info,检查安装状态

如果是以下信息,表示安装docker成功

ubuntu@VM-24-12-ubuntu:~$ sudo docker info
Client:Context:    defaultDebug Mode: falsePlugins:app: Docker App (Docker Inc., v0.9.1-beta3)buildx: Docker Buildx (Docker Inc., v0.9.1-docker)compose: Docker Compose (Docker Inc., v2.12.2)scan: Docker Scan (Docker Inc., v0.21.0)Server:Containers: 1Running: 1Paused: 0Stopped: 0Images: 3Server Version: 20.10.21Storage Driver: overlay2

4、有可能,第一次需要手动启动服务.就需要执行下面的命令,

dockerd

5、还需要将docker服务设置成开机启动

查看是否设置为开机启动

ubuntu@VM-24-12-ubuntu:~$ systemctl list-unit-files | grep docker.service.*enabled
docker.service                         enabled         enabled  

设置开机启动 systemctl enable docker.service
关闭开机启动 systemctl disable docker.service

6、镜像加速

修改这个文件,如果没有就创建,

sudo vim /etc/docker/daemon.json

写入如下内容

{ "registry-mirrors":["https://registry.docker-cn.com"] }

在这里插入图片描述

7、重启服务

sudo systemctl restart docker.service

五、镜像操作

拉取,下载镜像,一般都是从dockerhub中拉去

dockerhub官方网站:https://hub.docker.com/

1、例如下载python镜像

如果后面什么都不加,默认下载最新的版本

sudo docker pull python

2、列出所有的镜像

sudo docker images

sudo docker image ls

删除镜像

sudo docker rm 镜像名称

sudo docker rmi 镜像名称

六、容器操作

1、启动容器

sudo docker run [参数] 镜像名:tag 要执行的命令

启动python容器

sudo docker run --name my1_python python:alpine

容器是进程,它执行的就是镜像名后面的命令(程序),如果这个命令(程序)执行结束,那么这个容器就退出了

2、查看所有的容器

sudo docker ps -a

3、查看正在运行的容器

sudo docker ps 

4、启动一个停止的容器

sudo docker start 容器名称/容器id

sudo docker start my2_python 

5、停止一个容器

sudo docker stop 容器名称/容器id

sudo docker stop my2_python

6、删除一个容器(只能删除停止的容器)

注意:只能删除停止的容器

sudo docker rm 容器名称/容器id

七、搭建一个mariadb的容器

1、下载镜像mariadb镜像

sudo docker pull mariadb:latest

2、运行容器

sudo docker run --name my_mariadb

运行容器时加的命令参数

-d:后台运行容器
–name:运行容器,执行容器名称
–env:设置环境变量
-p:端口映射 -p 宿主机端口:容器端口(宿主机的端口需要没有占用的,想要远程访问,云服务器的防火墙需要放开对应的端口)
-v:容器卷映射 -v:宿主机目录:容器目录

后台运行容器,并且将容器名称命名为my_mariadb,如下

ubuntu@VM-24-12-ubuntu:~$ sudo docker run -d --name my_mariadb1 mariadb:latest
0cfb895105b83c788d780c973e975de726e71174269a1ca37763104b84402a7e

查看刚刚运行的容器状态

ubuntu@VM-24-12-ubuntu:~$ sudo docker ps -a | grep my_mariadb1
4ab8a615062a   mariadb:latest   "docker-entrypoint.s…"   2 minutes ago   Exited (1) 2 minutes ago                                               my_mariadb1my_mariadb1

3、端口映射(端口需要放开)

在这里插入图片描述

启动容器

sudo docker run -d --name my-mariadb -p 8848:3306 --env MARIADB_USER=zhilong --env MARIADB_PASSWORD=123456 -env MARIADB_ROOT_PASSWORD=docker  mariadb:latest

连接数据库

ubuntu@VM-24-12-ubuntu:~$ mysql -h82.156.178.247 -u zhilong -P8848
ERROR 1045 (28000): Access denied for user 'zhilong'@'82.156.178.247' (using password: NO)
ubuntu@VM-24-12-ubuntu:~$ mysql -h82.156.178.247 -u zhilong -P8848 -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.5.5-10.10.2-MariaDB-1:10.10.2+maria~ubu2204 mariadb.org binary distributionCopyright (c) 2000, 2022, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

4、进入正在运行的容器中

sudo docker exec -it 容器名称/容器id /bin/bash

此时进入的不是服务器了,是服务器中的容器了,是一个精简的linux操作系统

ubuntu@VM-24-12-ubuntu:~$ sudo docker exec -it 9181049dae0e /bin/bash
root@9181049dae0e:/# ls
bin   dev                         etc   lib    lib64   media  opt   root  sbin  sys  usr
boot  docker-entrypoint-initdb.d  home  lib32  libx32  mnt    proc  run   srv   tmp  var

退出容器:exit

进入容器连接数据库操作

root@9181049dae0e:/# mysql -u zhilong -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 7
Server version: 10.10.2-MariaDB-1:10.10.2+maria~ubu2204 mariadb.org binary distributionCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

5、查看容器的日志

sudo docker logs 容器名称/容器id

八、数据卷

1、作用:实现容器和宿主机之间的数据共享

使用数据卷实现数据持久化
数据备份、数据共享

将宿主机中的目录和容器中的目录进行映射
将宿主机中的文件和容器中的文件进行映射
将数据卷与容器中的目录进行映射

2、查看数据卷:

sudo docker volume ls

3、查看数据卷的详细信息

sudo docker inspect 数据卷名称

例如

ubuntu@VM-24-12-ubuntu:~$ sudo docker inspect de2270508292c998a41b3cea4fabb9bd763cde4b7b6fdaa9856035365ec73768
[{"CreatedAt": "2022-12-24T23:02:54+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/de2270508292c998a41b3cea4fabb9bd763cde4b7b6fdaa9856035365ec73768/_data","Name": "de2270508292c998a41b3cea4fabb9bd763cde4b7b6fdaa9856035365ec73768","Options": null,"Scope": "local"}
]

进入容器到/var/lib/mysql路径(存储数据)

root@9181049dae0e:/var/lib/mysql# cd /var/lib/mysql
root@9181049dae0e:/var/lib/mysql# ls
aria_log.00000001  ddl_recovery.log  ib_logfile0  ibtmp1             mysql               performance_schema
aria_log_control   ib_buffer_pool    ibdata1      multi-master.info  mysql_upgrade_info  sys

挂载点:/var/lib/docker/volumes/36133d8e09693ae90d41b8492886f8de685a3efef6a15a9dd5e3a67e52ecf17d/_data

aria_log.00000001  aria_log_control  ddl_recovery.log  ib_buffer_pool  ibdata1  ib_logfile0  ibtmp1  multi-master.info  mysql  mysql_upgrade_info  performance_schema  sys
ubuntu@VM-24-12-ubuntu:/var/lib/docker/volumes/36133d8e09693ae90d41b8492886f8de685a3efef6a15a9dd5e3a67e52ecf17d/_data$ pwd
/var/lib/docker/volumes/36133d8e09693ae90d41b8492886f8de685a3efef6a15a9dd5e3a67e52ecf17d/_data
ubuntu@VM-24-12-ubuntu:/var/lib/docker/volumes/36133d8e09693ae90d41b8492886f8de685a3efef6a15a9dd5e3a67e52ecf17d/_data$ 

容器卷映射

ubuntu@VM-24-12-ubuntu:~/ck14/db$ sudo docker run -d --name mydb -p 8848:3306 -v /home/ubuntu/ck14/db:/var/lib/mysql --env MARIADB_USER=zhilong --env MARIADB_PASSWORD=123456 --env MARIADB_ROOT_PASSWORD=root  mariadb:latest
04bf1742a81fab64d4fe2817d4651a2aa57fa33ba5f0a0ac7fdeef09cc8cd1c5
ubuntu@VM-24-12-ubuntu:~/ck14/db$ ls
aria_log.00000001  aria_log_control  ddl_recovery.log  ib_buffer_pool  ibdata1  ib_logfile0  ibtmp1  multi-master.info  mysql  mysql_upgrade_info  performance_schema  sys

宿主机中新建数据表

在这里插入图片描述

容器中可以查看数据表

root@04bf1742a81f:/# mysql -h82.156.178.247 -uroot -P8848 -p 
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 10.10.2-MariaDB-1:10.10.2+maria~ubu2204 mariadb.org binary distributionCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| ck_14              |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.001 sec)MariaDB [(none)]> use ck_14
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
MariaDB [ck_14]> use ck_14;
Database changed
MariaDB [ck_14]> show tables;
+-----------------+
| Tables_in_ck_14 |
+-----------------+
| ck_14           |
+-----------------+
1 row in set (0.001 sec)

当把容器删除后,宿主机中的数据不会删除

再次进行映射,

ubuntu@VM-24-12-ubuntu:~/ck14/db$ sudo docker run -d --name mydb -p 8848:3306 -v /home/ubuntu/ck14/db:/var/lib/mysql --env MARIADB_USER=zhilong --env MARIADB_PASSWORD=123456 --env MARIADB_ROOT_PASSWORD=root  mariadb:latest
6c895653ce5ca9cab5302736412a1f8e3325d21d6fb47817c7d75efe71586388root@6c895653ce5c:/# cd /var/lib/mysql/
root@6c895653ce5c:/var/lib/mysql# ls
aria_log.00000001  ck_14             ib_buffer_pool  ibdata1  multi-master.info  mysql_upgrade_info  sys
aria_log_control   ddl_recovery.log  ib_logfile0     ibtmp1   mysql              performance_schema

九、搭建redis服务器

1、下载镜像

ubuntu@VM-24-12-ubuntu:~/ck14/db$ sudo docker pull redis:alpine

2、查看镜像是否下载成功

ubuntu@VM-24-12-ubuntu:~/ck14/db$ sudo docker images | grep redis
redis        alpine    8ace02fae412   8 days ago    29.9MB

3、启动容器

ubuntu@VM-24-12-ubuntu:~/ck14/db$ sudo docker run -d --name my_redis redis:alpine
d4b03ee711c4542120d56f90624c2356a5205d70ed61db0b57f768af421311e7

4、进入容器中

ubuntu@VM-24-12-ubuntu:~/ck14/db$ sudo docker exec -it my_redis /bin/sh
/data # ls
/data # redis-cli
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> 

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

图像处理:制作你的专属卡通头像和LOGO(圣诞节特别篇)

目录0 前言1 安装与贴图2 算法原理2.1 计算像素频率2.2 计算像素相对距离2.3 计算合适贴图3 配置功能4 使用:以圣诞老人为例0 前言 Tiler是一种使用各种其他较小图像平铺创建新图像的工具,它与其他马赛克工具不同,因为它可以适应多种形状、大…

基于Xlinx的时序分析与约束(5)----衍生时钟约束

衍生时钟约束语法 衍生时钟(Generated Clocks,又称为生成时钟)是指由设计中已有的主时钟通过倍频、分频或者相移等操作后产生的新的时钟信号,如由MMCM或PLL或由组合逻辑生成的倍、分频时钟信号。 衍生时钟约束必须指定时钟源&…

【正点原子I.MX6U-MINI移植篇】rootfs移植过程详解(三)

Linux三巨头己经完成了2个了,就剩最后一个rootfs(根文件系统)了,根文件系统的组成以及如何构建根文件系统是Liux移植的最后一步,根文件系统构建好以后就意味着我们己经拥有了一个完整的、可以运行的最小系统。以后我们…

程序员高手解决问题,都是从正确的提问开始

回顾各大技术网站、社区、问答,我们发现:真正的程序员高手都极度擅长提问。 好的提问不但能得到建设性的解决方案,更加能激发人们的好奇心、创造力和学习的动力。 毫不夸张地说,会提问的程序员一开口就赢了! 所以今…

QT基本组件与常用类

目录 一、设计师 Designer(掌握) 二、布局 Layout 2.1 布局的基本使用(掌握) 2.2 布局属性(掌握) 2.3 伸展器(掌握) 2.4 嵌套(掌握) 2.5 伸展与策略&#xff…

分布式缓存的四大痛点

目前开发中经常用到的缓存,是我们必不可缺的,他大大的提高了我们整个项目的响应速度和并发量。但是带来好处的同时,也给我们带了了新的问题:缓存穿透、缓存击穿、缓存雪崩以及缓存一致性这么四个问题,也是分布式缓存的…

IT大侦“碳”:VxRail的可持续法宝

环境Environmental      社会责任Social Responsibility      企业治理Corporate Governance      随着碳达峰、碳中和的逐步推进,越来越多的“大厂”或各行业的明星企业都开始重视自己的ESG报告,已然成为了商界新风尚。      可持续发展战略也与前沿技术密切相…

Java项目:Springboot体育器材管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 体育器材管理系统主要包含以下功能: 登录注册; 体育器材管理:显示器材表、显示价目表、显示供应商表&#x…

4.2、网络层提供的两种服务

1、面向连接的虚电路服务 虚电路服务的核心思想:可靠通信由网络自身来保证\color{red}可靠通信由网络自身来保证可靠通信由网络自身来保证 当两台计算机进行通信时,必须建立网络层的连接\color{red}网络层的连接网络层的连接----虚电路VC\color{red}虚…

Java+SpringBoot电影订票系统(含源码+论文+答辩PPT等)

项目功能简介: 该项目采用技术后台:SpringBoot、Spring、Springmvc、Springdata、MySQL数据库、前台:FreeMarker、css、Javascript等,项目含有源码、论文、配套开发软件、软件安装教程、项目发布教程等 项目功能介绍: 本系统主要的…

Hi,运维,你懂Java吗--No.4:JVM-概述

作为运维,你不一定要会写Java代码,但是一定要懂Java在生产跑起来之后的各种机制。 本文为《Hi,运维,你懂Java吗》系列文章 第四篇,敬请关注后续系列文章 欢迎关注 龙叔运维(公众号) 持续分享运…

筛法(线性筛,厄拉多塞筛)

在前前前前前前…的博客中,我们主要谈了欧拉筛和埃氏筛. 今天我们主要来聊一聊线性筛和厄拉多塞筛(其实和埃氏筛和欧拉筛本质上没区别哎).其实在这两种筛法中厄拉多塞筛最好懂(就连本蒟蒻一看代码就明白了…别看这个名字,容易糊弄人) 首先是厄拉多塞筛"粉墨登场"::…

某农业学校 算法设计与分析-第五次实验-回溯算法

1. 罗密欧与朱丽叶的迷宫问题 问题描述 罗密欧与朱丽叶的迷宫。罗密欧与朱丽叶身处一个mn的迷宫中,如图所示。每一个方格表示迷宫中的一个房间。这mn个房间中有一些房间是封闭的,不允许任何人进入。在迷宫中任何位置均可沿8 个方向进入未封闭的房间。罗…

深度学习常见概念字典(感知机、全连接层、激活函数、损失函数、反向传播、过拟合等)

这一章的所有内容均是为了进入深度学习具体的某某网络而准备的,简单但是非常有必要。 1. 神经网络(neural networks)的基本组成 1.1 神经元(neuron) 神经元(neuron) 是神经网络(n…

Djiango实现用户管理增删改成功能实战

1.0定义 前后端不分离模式 前后端分离是指前端页面看到的效果都是由后端控制,即后端渲染HTML页面,前端与后端的耦合度比较高 前后端分离模式 后端仅返回前端所需要的数据,不在渲染HTML页面,不在控制前端的效果,至…

CodeQL代码静态污点分析引擎排查漏洞模式

文章目录前言环境搭建1.1 codeql基础1.2 vscode插件1.3 生成数据库1.4 HelloWorldcodeql语法2.1 语法结构2.2 常用类库2.3 谓词介绍2.4 污点分析漏洞检测3.1 初步结果3.2 解决误报总结前言 对于代码审计的工作,最早期的安全人员会以人工审计的方式来审计项目代码&a…

RabbitMQ 第二天 高级 7 RabbitMQ 高级特性 7.1 消息的可靠投递 7.1.1 confirm【确认模式】

RabbitMQ 【黑马程序员RabbitMQ全套教程,rabbitmq消息中间件到实战】 文章目录RabbitMQ第二天 高级7 RabbitMQ 高级特性7.1 消息的可靠投递7.1.1 confirm【确认模式】第二天 高级 7 RabbitMQ 高级特性 7.1 消息的可靠投递 7.1.1 confirm【确认模式】 在使用 Ra…

【数据预处理】基于Pandas的数据预处理技术【california_housing加州房价数据集】_后9个任务

文章目录一.需求分析二.需求解决2.1 对第一个特征(收入中位数)排序后画散点图2.2 对第一个特征(收入中位数)画分位数图并分析2.3 【选做】对所有特征画分位数图并进行分析2.4 使用线性回归方法拟合第一个特征(收入中位…

【C语言进阶】指针练习题

写在前面 这是指有关指针的小题 正文 练习一 int main() {int a[5][5];int (*p)[4];pa;printf("%p,%d", &p[4][2]-&a[4][2], &p[4][2]-&a[4][2] );return 0; } 解析: a[4][2]为如图粉色部分,p[4][2]为如图蓝色部分。a的…

Java项目:springboot药品管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目属于前后端分离的项目,分为两个角色药品管理员和取药处人员 药品管理员: 登录、退出、药品信息录入、药厂信息录入…