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

news2024/11/22 19:37:03

在这里插入图片描述


文章目录

  • 一、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:    default
 Debug Mode: false
 Plugins:
  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: 1
  Running: 1
  Paused: 0
  Stopped: 0
 Images: 3
 Server Version: 20.10.21
 Storage 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_mariadb1
                                             my_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 distribution

Copyright (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 distribution

Copyright (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 distribution

Copyright (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 -A

Database 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
6c895653ce5ca9cab5302736412a1f8e3325d21d6fb47817c7d75efe71586388



root@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.coloradmin.cn/o/115277.html

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

相关文章

LabVIEW如何减少下一代测试系统中的硬件过时4

LabVIEW如何减少下一代测试系统中的硬件过时4 DSSP Class Definition DSSP父类定义有三种不同类型的函数:仅父类、公共类和基于度量的函数。DSSP父类,DSSP.Lvclass包含所有子类函数的超集,加上父类特有的一些函数。DSSP父类的单个子实例(例如AgSigGen.…

2022年总结(2022年1月1日至2022年12月25日)

前言 时光飞逝,又到了一年一度的年终总结的时间了,2022年充满磨难的一年,悲哉,痛哉~~ 但对于我而言,其实还好,基本无太大影响,黄金单身汉,一人吃饱,全家不饿~&#xff…

spring之手写框架

文章目录前言一、手写spring框架之核心接口实现二、手写spring框架之实例化Bean三、手写spring框架之获取所有set方法四、手写spring框架之给属性赋值4.1 非简单类型属性赋值4.2 简单类型属性赋值附:前言 Spring IoC容器的实现原理:工厂模式解析XML反射…

学习性能所必须的知识之算法

什么是算法? 通过有效地缩小查找范围,只需要很少的次数就能很快速的找到需要的数字,这样的策略或方法就称为“算法”。 算法的好坏对性能有很大的影响。 学习算法的窍门 掌握算法优点与缺陷,“折中”是一个很重要的思维通过在图上推演来思考评价算法的指标 通过复杂度(…

各种型号西门子PLC所支持的通信协议小结

西门子PLC有4大类,几十个型号类型,PLC不同所支持的通讯协议也不相同。 按照大类型来划分,具体可分为串口协议和以太网通信协议两大类。 串口协议主要有:MODBUS RTU 通信协议;PROFIBUS 通信协议;USS通信协…

疫情信息管理系统(附源代码及数据库)

本系统是一个可以对各种疫情进行管理的系统,管理员可以直接对居民、住户进行统一的管理,这样就能在疫情期间大大减轻了管理者的工作量,使管理社区的渠道更加的方便。其主要功能有:登录功能,公告的发布,到访…

2022, 6年技术路, 后疫情时代复盘

专注 聚焦 持续复盘写下你一年的希望...又到了每年一度的复盘时间。转眼一想, 做技术已经 6 年了。说实话,有点疲惫了。今年整个互联网行业都不好过, 加上疫情的反复不断, 从耳边流出了很多裁员的信息, 股市也比较低迷, 身处底层的我们只能夹缝生存。但是, 我又是…

【MySQL基础教程】DQL语句详细介绍

前言 本文为 【MySQL基础教程】DQL语句 相关内容介绍,下边具体将对DQL语句基本语法,基础查询,条件查询,聚合函数,分组查询,排序查询,分页查询,相关案例,执行顺序等进行详…

Elasticsearch 核心技术(二):elasticsearch-head 插件安装和使用

❤️ 个人主页:水滴技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 🌸 订阅专栏:大数据核心技术从入门到精通 文章目录一、安装方式二、下载 head 插件三、安装 head 插件四、运行 head 插件五、使用…

服务器硬件规格常用查看命令——网卡相关命令

lspci 使用lspci命令可以显示系统中的PCI总线和连接到它们的设备信息,在默认情况下,显示一个简短格式的设备列表。但是可以使用“lspci -vvx”或“lspci -vvxxx”显示更加详细的设备信息,在这些信息中包含了PCI设备驱动程序或lspci本身的错误…

GitHub与微信开启“秘密扫描”计划,来确保数据安全

近日GitHub 官方博客更是宣布:" 腾讯微信现在是 GitHub 秘密扫描合作伙伴。" “秘密扫描”是Github发起的一个计划,可别被它名字吓到了,它并不是说秘密的扫描用户的隐私数据,而是和微信合作发起,防止微信开…

Redhat7上安装Red Hat Developer Toolset并自由切换gcc和g++的版本

Redhat7上安装Red Hat Developer Toolset并自由切换gcc和g的版本一、Red Hat Developer Toolset 概述二、使用Red Hat Software Collections2.1 获取pool ID2.2 将pool ID 附加到本地系统中2.3 获取仓库列表2.4 使能上述仓库三、安装 Red Hat Developer Toolset四、升级Red Hat…

大数据分析案例-基于决策树算法构建员工离职预测模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

在windows操作系统上安装mysql数据库

背景 写这个数据库的安装教程,是为了后续文章中在windows系统中搭建测试环境要用到数据库做铺垫,不是所有的人都有云服务器,有的觉得去虚拟机里面安装太麻烦了,电脑会更卡,因此,还不如直接在自己电脑上安装…

客户管理繁,库存盘点难?明道云让你准点下班

文/张占胜 程哲 赵香英 编辑/杜逸敏 一、行业背景 随着疫情的扩散,经济形势日益复杂多变,进销存管理无疑成为了国内企业的焦点。如何利用新时代的先进技术把这一传统管理方式现代化和智能化,已经引起了国内业界的重视,这也是企…

Infleqtion与Morningstar合作探索量子计算的新途径

(图片来源:网络) 量子计算服务商Infleqtion宣布,将Infleqtion的旗舰量子软件SuperstaQ整合到Morningstar投资和投资组合分析平台Morningstar Direct中。借助SuperstaQ的整合,通过Morningstar的实验室分析模块&#xff…

12.20工作学习记录 力扣 罗马文转数字

每日一题:罗马文转数字 定义两个指针 不断后移 每一次让前一个指针的值累加为sum 最后返回sum 力扣https://leetcode.cn/problems/roman-to-integer/ 最长公共前缀 主要是subString方法 力扣https://leetcode.cn/problems/longest-common-prefix/solutions/现在分词与形容…

【Linux学习】之systemd与systemctl

文章目录一、systemd1. systemd 守护进程管理 Linux 的启动2. systemd 提供的功能:3. systemd 使用单元来管理不同类型的对象。4. 服务单元信息二、systemctl1. systemctl输出中的服务状态2. 列出servera上安装的所以服务单元3. 列出servera上所有活动和不活动的套接字单元4.1 …

Activiti7-任务分配

上面这些已经在流程变量设置的时候学会了 ,这里略。 参考:Activiti7-流程变量_ZHOU_VIP的博客-CSDN博客 错别字:认领任务 设计一个流程,设置候选人 错了,应该设置在候选人那里 由于修改了流程设计,需要重…

被勒索后的72 小时“生死时速”

编者按 数字化浪潮蓬勃兴起,企业面临的安全挑战亦日益严峻。 腾讯安全近期将复盘2022年典型的攻击事件,帮助企业深入了解攻击手法和应对措施,完善自身安全防御体系。 本篇是第四期,复盘了一次勒索病毒的紧急应对事件。一旦染上…