Docker常用命令练习

文章目录

  • Docker常用命令练习
  • 1.docker 基础命令
  • 2.镜像命令
  • 3.保存镜像
  • 4.加载镜像
  • 5.容器命令
  • 6.环境变量
  • 7. --rm
  • 8. --network=host

Docker常用命令练习

1.docker 基础命令

安装docker

yum install docker

启动docker

systemctl start docker

关闭docker

systemctl stop docker

重启docker

systemctl restart docker

docker设置随服务启动而自启动

systemctl enable docker

查看docker 运行状态

systemctl status docker

查看docker 版本号信息

docker version
docker info

docker 帮助命令
忘记了某些命令便可使用此进行查看与回顾

docker --help

比如 咱忘记了 拉取命令 不知道可以带哪些参数 咱可以这样使用

docker pull --help

2.镜像命令

查看镜像列表

docker images

搜索镜像

docker search 镜像名
docker search --filter=STARS=9000 mysql 
搜索 STARS >9000的 mysql 镜像

拉取镜像
不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本

docker pull 镜像名 
docker pull 镜像名:tag

运行镜像 ----咱拉取一个tomcat 跑起来试一试(没有拉取也可以直接运行,会自动检测拉取然后运行)

> docker run 镜像名 
> docker run 镜像名:Tag 
> docker pull tomcat
> docker run tomcat

删除镜像
------当前镜像没有被任何容器使用才可以删除

1.删除一个 (-f 强制删除)
docker rmi -f 镜像名/镜像ID
2.删除多个 其镜像ID或镜像用用空格隔开即可 
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
3.删除全部镜像  -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
4.删除镜像
docker image rm 镜像名称/镜像ID

3.保存镜像

将我们的镜像 保存为tar 压缩文件 这样方便镜像转移和保存 ,然后 可以在任何一台安装了docker的服务器上 加载这个镜像
命令:

docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字

docker save tomcat -o /myimg.tar

保存镜像任务执行完毕,我们来看下指定位置下是否有该tar?

4.加载镜像

任何装 docker 的地方加载镜像保存文件,使其恢复为一个镜像

docker load -i 镜像保存文件位置

加载文件 恢复为镜像

然后通过tag打标签

docker tag   原容器id 新容器名:版本号

5.容器命令

1.查看正在运行容器列表

docker ps

2.查看所有容器 -----包含正在运行 和已停止的

docker ps -a

3.运行一个容器

 docker run -it --name 要取的别名 镜像名:Tag /bin/bash 

 -it 表示 与容器进行交互式启动
 -d 表示可后台运行容器 (守护式运行)  
--name 给要运行的容器 起的名字  
/bin/bash  交互路径

4.停止容器

docker stop 容器名/容器ID

5.删除容器

#删除一个容器
docker rm -f 容器名/容器ID
#删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
#删除全部容器
docker rm -f $(docker ps -aq)

6.容器端口与服务器端口映射
命令:

-p 宿主机端口:容器端口   (注意是小写的p)
-P 宿主机随机端口:容器端口  (注意是大写P) 

-p 9090:80 解析 将容器内部的 80端口与docker 宿主机(docker装在哪太服务器 那台服务器 )9090端口进行映射 那通过外部访问宿主机9090端口 即可访问到 docker 容器 80端口了

docker run -d --name nginx01 -p 9090:80  nginx
docker run -d --name nginx02 -p 9091:80  nginx

在Docker中, -p 和 -P 是用于映射容器端口到主机端口的两个选项。它们之间的区别如下:

  1. -p 选项:这个选项用于映射指定的容器端口到主机的指定端口。例如,使用 -p 8080:80 将容器的80端口映射到主机的8080端口。你可以指定容器和主机的端口号。
  2. -P 选项:这个选项用于自动将容器的所有暴露的端口映射到主机的随机端口。Docker会自动分配一个主机端口,并将容器端口映射到该主机端口上。类似docker -p :80 你可以使用 docker port <container_name> 命令来查看容器的映射端口。
  3. 总结来说,-p 选项允许你手动指定容器和主机的端口映射关系,而 -P 选项则是自动将容器的所有暴露的端口映射到主机的随机端口上。

7.进入容器
这里咱就进入 前面的 nginx1 容器

docker exec -it 容器名/容器ID /bin/bash

8.退出容器
从容器内 退出到自己服务器中 需注意 两个退出命令的区别
直接退出 未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭

exit

优雅退出 — 无论是否添加-d 参数 执行此命令容器都不会被关闭

Ctrl + p + q

9.停止容器

docker stop 容器ID/容器名

10.重启容器

docker restart 容器ID/容器名

11.启动容器

docker start 容器ID/容器名

12.kill 容器

docker kill 容器ID/容器名

13.容器文件拷贝
docker cp 命令用于在容器和本地文件系统之间复制文件/文件夹。
#从主机上拷贝文件到容器内

docker cp 1.txt mycontainer:/1.txt

#从容器里面拷贝文件/目录到本地一个路径

docker cp 容器名称或id:/container_path to_path  

例如:

docker cp tomcat:usr/local/tomcat/README.md ./

14.查看容器日志

docker logs -f --tail=要查看末尾多少行 默认all 容器ID

15.容器自动重启
使用docker run命令时 添加参数**–restart=always**便表示,该容器随docker服务启动而自动启动

docker run -d  -p 8888:80 --restart=always --name my-nginx nginx

16.数据挂载
简单来讲,就是将容器内的数据与外部宿主机文件绑定起来,类似一个双持久化,当容器删除时,宿主机文件数据目录仍在,下次启动容器只要将数据目录指向宿主机数据所在位置即可恢复!
命令:
-v 宿主机文件存储位置:容器内文件位置
如此操作,就将 容器内指定文件挂载到了宿主机对应位置,-v命令可以多次使用,即一个容器可以同时挂载多个文件
-v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置

docker run -v <volume名或宿主机绝对路径>:<容器内绝对路径> <镜像名>
例如:
docker run -v my_volume:/data busybox
或使用宿主机目录
docker run -v /host/path:/container/path busybox

17.更换容器名

docker rename 容器ID/容器名 新容器名

18.自己提交一个镜像
我们运行的容器可能在镜像的基础上做了一些修改,有时候我们希望保存起来,封装成一个新的镜像,这时候我们就需要使用 commit 命令来构建一个新的镜像

docker commit -m="提交信息" -a="作者信息" 容器名/容器ID 提交后的镜像名:Tag

6.环境变量

docker run -d --name my_container -e VAR_NAME=value -e ANOTHER_VAR=some_value your_image_name

docker run -d -e name=fpl1116 -e girl=beautiful nginx

在上述命令中:
-d 表示在后台运行容器(detach mode)。
–name 用于指定容器的名称。
-e VAR_NAME=value 和 -e ANOTHER_VAR=some_value 分别用来设置环境变量 VAR_NAME 和 ANOTHER_VAR,它们的值分别为 value 和 some_value。 your_image_name是你想要运行的Docker镜像的名字。 如果你需要设置多个环境变量,可以多次使用 -e参数。这些环境变量将在容器内部可用,应用可以像读取普通环境变量那样读取它们的值。

在Docker容器中查看设置的环境变量,可以使用以下方法:

  1. 在容器外部查看
    如果你想查看容器启动时设置的环境变量,可以使用 docker inspect 命令:

    docker inspect --format='{{range $key, $value := .Config.Env}}{{println $key}}={{println $value}}{{end}}' <容器ID或容器名>
    

    或者只查看某一个环境变量:

    docker inspect --format='{{index .Config.Env "YOUR_VARIABLE"}}' <容器ID或容器名>
    
  2. 在容器内部查看
    若要在容器内部查看环境变量,首先需要进入容器的命令行:

    docker exec -it <容器ID或容器名> /bin/bash
    

    进入容器后,可以直接查看环境变量:

    env
    

    或者查看特定环境变量:

    echo $YOUR_VARIABLE
    

7. --rm

在Docker中, --rm 标志用于在容器停止后自动删除容器。当使用该标志运行容器时,容器停止运行后会立即被删除,释放相关的资源。这对于临时性的容器和一次性任务非常有用,可以避免手动删除容器的麻烦。

8. --network=host

在这里插入图片描述

docker run -d --network=host --name=nginx2  -v  /home/206/nginxhtml:/usr/share/nginx/html    nginx

在Docker中, --network 标志用于指定容器连接的网络模式。以下是一些常见的网络模式及其作用:

  1. bridge (默认模式):在桥接网络中,每个容器都分配了一个IP地址,并且可以通过ip相互访问。这是最常用的网络模式,适用于大多数应用程序。

  2. host :在主机网络模式下,容器与主机共享网络命名空间,即容器使用主机的网络栈。这使得容器可以直接使用主机的网络接口,无需进行端口映射。

  3. none :在无网络模式下,容器不会连接到任何网络。这意味着容器无法通过网络与其他容器或外部进行通信。这种模式适用于某些安全性要求较高的容器。

  4. container:<name|id> :在容器网络模式下,容器与另一个指定容器共享网络命名空间。这意味着两个容器可以通过本地主机进行通信,就像它们在同一主机上一样。

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

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

相关文章

外卖项目:用Redis实现缓存店铺营业状态、店铺菜品,优化商品浏览速度(debug一遍)

文章目录 一、设置店铺营业状态二、缓存菜品三、缓存套餐四、执行速度 一、设置店铺营业状态 针对店铺的营业状态&#xff0c;只涉及到一个字段&#xff0c;就没有设计表结构了&#xff0c;所有直接用redis存储来实现该功能。 约定&#xff1a;1表示营业 0表示打烊 先来看原先…

【Redis】Redis常见原理和数据结构

Redis 什么是redis redis是一款基于内存的k-v数据结构的非关系型数据库&#xff0c;读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列、分布式锁等场景。 redis的数据类型 string&#xff1a;字符串 缓存对象&#xff0c;分布式ID&#xff0c;token&#xff0c;se…

手撕算法-二叉树的最大深度

描述&#xff1a;分析&#xff1a;求以节点root为根节点的树的最大深度。可以进行拆分&#xff1a;root为根节点的树的最大深度 max(左子树的最大深度, 右子树最大深度&#xff09;1 截止条件是节点为空&#xff0c;深度为0&#xff1b; 代码&#xff1a; public int maxDep…

CAN总线协议:过载帧与帧间隔

一. 简介 通过 CAN 总线传输数据是需要按照一定协议进行的。CAN 协议提供了 5 种帧格式来传输数据&#xff1a;数据帧、遥控帧、错误帧、过载帧和帧间隔。 前面几篇文章学习了CAN协议的的三种数据传输格式&#xff1a; CAN总线协议&#xff1a;数据帧-CSDN博客 CAN总线协议…

相聚武汉氢能展_2024武汉国际氢能源及燃料电池产业博览会

相聚武汉氢能展_2024武汉国际氢能源及燃料电池产业博览会 2024武汉国际氢能源及燃料电池产业博览会 2024 Wuhan International Hydrogen Energy and Fuel Cell Industry Expo 同期举办&#xff1a;2024世界汽车制造技术暨智能装备博览会 时间&#xff1a;2024.8.14-16 地…

jmeter之常用函数-第六天

1.常见函数&#xff1a; _counter 计数器函数 TRUE(每个用户都有自己的计数器) FALSE(所有用户共用一个计数器) _Random 随机数函数 参数1:取值范围最小值(包含) 参数2:取值范围最大值(包含) _time 获取当前时间的函数 无参: 获取的是距离 1970/01/01 00:00:00 的毫秒值 参…

【计算机网络】计算机网络概述

文章目录 一、计算机网络的概念二、 计算机网络的功能1. 数据通信2. 资源共享3. 分布式处理4. 提高可靠性5. 负载均衡 补充&#xff1a; 计算机的发展阶段小结三、计算机网络的组成1. 组成部分2. 工作方式3. 功能组成 四、 计算机网络的分类1. 按分布范围2. 按使用者3. 按交换技…

代码随想录day24(2)二叉树:合并二叉树(leetcode617)

题目要求&#xff1a;将两个二叉树合并&#xff0c;要求是将同位置处的两个节点值相加&#xff0c;如果一个为空那就将另一个二叉树的值覆盖。 思路&#xff1a;如果使用迭代法&#xff0c;就是通过层序遍历&#xff0c;通过队列进行判断进行相加。如果使用递归法&#xff0c;…

【史上最全万字mysql进阶语法】

前言&#xff1a; &#x1f49e;&#x1f49e;大家好&#xff0c;书生♡&#xff0c;今天主要和大家分享一下mysql的进阶语法,数据库的分组/分页/排序/子查询以及详细案例&#xff0c;希望对大家有所帮助。 &#x1f49e;&#x1f49e;前路漫漫&#xff0c;希望大家坚持下去&am…

获取cookie

在Servlet9里设置cookie 在Servlet10里进行获取 访问Servlet9.do&#xff0c;再访问Servlet10.do

没有项目管理经验,可以参加PMP考试?

PMP考试的申请者需要具备项目管理经验&#xff0c;所需的项目管理经验小时数指的是与项目相关的经验&#xff0c;比如参与项目研发、测试、交付、运维、技术支持、售前等。项目经验是一个广义概念&#xff0c;国际上认为几乎所有工作都可以视为项目。 PMP报考条件&#xff1a; …

P2036 [COCI2008-2009 #2] PERKET

如果这是最后一页&#xff0c;在你离开之前&#xff0c;能否让我把故事重写 题目链接&#xff1a;P2036 [COCI2008-2009 #2] PERKET - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 解题思路&#xff1a; dfs模板题&#xff0c;枚举每种调料取和不取&#xff0c;至少选一种调…

【JavaScript】JavaScript 程序流程控制 ② ( 循环流程控制 | 循环要素 - 循环体 / 循环终止条件 | for 循环语法结构 )

文章目录 一、JavaScript 程序流程控制 - 循环流程控制1、循环流程控制2、循环要素 - 循环体 / 循环终止条件3、for 循环语法结构 - 循环控制变量 / 循环终止条件 / 操作表达式4、for 循环 完整代码示例 一、JavaScript 程序流程控制 - 循环流程控制 1、循环流程控制 在 程序开…

数据容器-tuple-Python

师从黑马程序员 列表可以修改&#xff0c;元祖不可以修改 元组的定义和使用 元组的元素类型不受限 #定义元组 t1(1,"Hello",True) t2() t3tuple() print(f"t1的类型是:{type(t1)},内容是:{t1}") print(f"t2的类型是:{type(t2)},内容是:{t2}")…

Macbook m1安装docker详细教程

下载安装包 进入官网 https://www.docker.com/ 下滑找到下载位置 下滑找到Mac对应安装包 等待下载完成即可。 安装 双击打开下载的安装包 将Docker拖到Applications中 安装完成后&#xff0c;找到安装的Docker 双击打开 点击accept同意 进入下面&#xff1a; 点fini…

​selenium+python做web端自动化测试框架与实例详解教程

最近受到万点暴击&#xff0c;由于公司业务出现问题&#xff0c;工作任务没那么繁重&#xff0c;有时间摸索seleniumpython自动化测试&#xff0c;结合网上查到的资料自己编写出适合web自动化测试的框架&#xff0c;由于本人也是刚刚开始学习python&#xff0c;这套自动化框架目…

The service already exists!怎么解决,Windows怎么安装/卸载服务?

问题描述 有时候,我们在Windows系统上安装服务时会遇到报错,The service already exists! 问题分析 这个报错说明此服务已经存在了,所以我们不能再次安装,但有时候我们明明是第一次安装,为什么也会报这个错误呢? 在Windows上注册服务通常需要使用命令行工具或者特定的…

BOM

是浏览器对象 目录 是浏览器对象 BOM概述&#xff1a; Windows常见的对象事件&#xff1a; 窗口加载事件&#xff1a; 传统方式&#xff1a; 新的加载方式&#xff1a; 回调函数&#xff1a; 调整窗口大小事件&#xff1a; 定时器setTimeout&#xff1a; 定时器setInt…

makefile基础与实战编译C++项目

从源码到执行程序 makefile运行流程 &#xff1a;这个符号用于在执行的命令之前&#xff0c;通常会告诉make不要输出命令本身&#xff0c;只输出命令的结果。但是当它位于命令行的开头时&#xff0c;它通常会让Make静默执行该命令&#xff0c;即不在命令行中显示该命令&#xf…

MATLAB环境下基于机器学习的合成数据生成方法

合成数据是通过计算机程序人工生成的数据&#xff0c;而不是由真实事件生成的数据。采用合成数据来增加训练数据&#xff0c;可以节省数据采集费用&#xff0c;或满足隐私要求。随着计算能力的提高和云数据存储选项的崛起&#xff0c;合成数据比以往更容易获取。这无疑是一个积…