docker基本使用方法

docker使用

1. Docker 介绍

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

1.1 Docker 架构

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

容器与镜像的关系类似于面向对象编程中的对象与类。

1.2 Docker 安装

Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的 Linux 主机。因此,Docker 必须部署在 Linux 内核的系统上。

  • ubuntu 安装
 curl -fsSL https://test.docker.com -o test-docker.shsudo sh test-docker.sh
  • 卸载
# 删除安装包
sudo apt-get purge docker-ce
# 删除镜像、容器、配置文件等内容
sudo rm -rf /var/lib/docker
  • windows安装

如果其他系统想部署 Docker 就必须安装一个虚拟 Linux 环境。在 Windows 上部署 Docker 的方法都是先安装一个虚拟机,并在安装 Linux 系统的的虚拟机中运行 Docker。

在这里插入图片描述

链接:https://www.runoob.com/docker/ubuntu-docker-install.html

1.3 Docker Hello world

Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。

  • 输出Hello world
docker run ubuntu:15.10 /bin/echo "Hello world"

以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo “Hello world”,然后输出结果。

  • 各个参数解析:

    • docker: Docker 的二进制执行文件。

    • run: 与前面的 docker 组合来运行一个容器。

    • ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。

    • /bin/echo “Hello world”: 在启动的容器里执行的命令

  • Docker 镜像加速

    国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器;Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

    • 科大镜像:https://docker.mirrors.ustc.edu.cn/

    • 网易:https://hub-mirror.c.163.com/

    • 阿里云:https://<你的ID>.mirror.aliyuncs.com

    • 七牛云加速器:https://reg-mirror.qiniu.com

  • 加速配置Ubuntu16.04+、Debian8+、CentOS7

​ 对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果不存在请新建该文件):

{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}

之后重新启动服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

2. Docker 常用命令

2.1 Docker 容器使用

  • 查看到 Docker 客户端的所有命令选项
docker
  • docker command --help 更深入的了解指定的 Docker 命令使用方法
docker stats --help
  • 获取镜像
docker pull ubuntu
  • 启动容器
docker run -it ubuntu /bin/bash# 参数说明:
# -i: 交互式操作。
# -t: 终端。
# ubuntu: ubuntu 镜像。
# /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash/
# 要退出终端,直接输入 exit
  • 退出容器
exit
  • 查看所有的容器
docker ps -a
  • 使用 docker start 启动一个已停止的容器
docker start b750bbbcfd88
  • 后台运行

    在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式

# 加了 -d 参数默认不会进入容器
docker run -itd --name ubuntu-test ubuntu /bin/bash
  • 停止容器
docker stop <容器 ID>
  • 停止的容器可以通过 docker restart 重启
docker restart <容器 ID>
  • 进入容器

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入

# 使用 docker attach 命令进入容器,退出后会导致容器的停止
docker attach 1e560fca3906# 使用 docker exec 命令进入容器,退出后容器会继续运行
docker exec -it 243c32535da7 /bin/bash
  • 导出容器
docker export 1e560fca3906 > ubuntu.tar
  • 导入容器
# 以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:
cat docker/ubuntu.tar | docker import - test/ubuntu:v1# 通过指定 URL 或者某个目录来导入
docker import http://example.com/exampleimage.tgz example/imagerepo
  • 删除容器
docker rm -f 1e560fca3906
  • 内容传输

    • 导出
    # docker cp <容器ID或名称>:<容器内路径> <本地主机路径>
    docker cp 15bb76c6f6d6:/models/aircas/model/default/model_20230801-111150 /data/xzf/
    
    • 导入
    # docker cp <容器ID或名称>:<容器内路径> <本地主机路径>
    docker cp /home/user/data.txt mycontainer:/app

2.2 Docker 镜像使用

  • 列出所有镜像
docker images

在这里插入图片描述

各个选项说明:

  • **REPOSITORY:**表示镜像的仓库源
  • **TAG:**镜像的标签
  • **IMAGE ID:**镜像ID
  • **CREATED:**镜像创建时间
  • **SIZE:**镜像大小

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 15.10、14.04 等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。

  • 进入容器
docker run -it ubuntu:20.04 /bin/bash # 参数说明:
# -i: 交互式操作。
# -t: 终端。
# ubuntu:20.04: 这是指用 ubuntu 20.04 版本镜像为基础来启动容器。
# /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
  • 获取新的镜像
docker pull ubuntu:13.10
  • 查找镜像
    • 从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
    • 使用 docker search 命令来搜索镜像
docker search httpd
  • 删除镜像
# 镜像删除使用 docker rmi 命令,比如我们删除 hello-world 镜像
docker rmi hello-world

2.3 Docker 容器连接

  • 网络端口映射

    使用 -P 绑定端口号,使用 docker ps 可以看到容器端口 5000 绑定主机端口 32768

# Docker 端口映射的语法是 -p [主机端口]:[容器端口]
# 以下命令将容器的端口 80 映射到主机的端口 8080
docker run -p 8080:80 [容器名称或 ID]# 将容器暴露给主机的所有网络接口,而不仅仅是 localhost,使用 0.0.0.0 表示所有的 IP 地址
docker run -p 0.0.0.0:8080:80 [容器名称或 ID]

2.4 Docker Compose

  • Compose 使用的三个步骤:

    • 定义应用程序的环境(使用ubuntu:20.04镜像)

    • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行

    • 执行 docker-compose up 命令来启动并运行整个应用程序

  • 定义docker-compose.yml

version: '3'
services:# 容器名称test:# 镜像名称image: ubuntu:20.04# 端口映射ports:- "12009:22"- "15009:5005"# 环境environment:LANG: zh_CH.UTF-8# 路径映射,将本地test映射到容器的code路径下volumes:- ./test:/code- /etc/localtime:/etc/localtime:ro# 设置ssh的登录密码command: bash -c "/usr/sbin/sshd -D && passwd && 123"privileged: true
  • 运行容器
# -d 后台运行容器
docker-compose up -d

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

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

相关文章

springcloud3 bus+springconfig 实现配置文件的动态刷新(了解)

一 springcloud Bus的作用 1.1 springcloud的作用 spring cloud bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架。 它整合了java的事件处理机制和消息中间件的功能。其中目前支持RabbitMQ和kafka 简介&#xff1a; bus实现多个服务的配置文件动态刷新。 1.2 …

DC电源模块在工业控制器中的重要性

BOSHIDA DC电源模块在工业控制器中的重要性 DC电源模块在工业控制器中起着非常重要的作用&#xff0c;它是实现工业控制器运转所必需的组成部分。 DC电源模块主要用于将交流电转换成直流电供给工业控制器中的各个部件&#xff0c;包括控制器内部的微处理器、传感器、执行器等等…

【SpringCloud】RabbitMQ基础

1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得到响应&#xff0c;…

如何系列 如何使用Resilience4j提高应用弹性和容错

文章目录 背景简介Maven重试器注解式编程式配置事件监听指标监控健康检查 速率限制注解式编程式配置事件监听指标监控动态修改配置 断路器注解式配置 舱壁注解式 时间限制器多组件配合使用最佳实践 配置参考&#xff1a; 背景 在应用程序开发的过程中&#xff0c;特别是在构建…

机器学习基础

什么是机器学习&#xff1f;----本质就是寻找一个函数。 可以训练什么样的函数呢&#xff1f; 可以训练一个回归的函数&#xff0c;也可以训练一个分类的函数。 这个例子的需要分类的类别是19*19的选项。 在机器学习领域里面不止回归和分类。 举例&#xff1a;预测函数 利用已…

Llama 2 with langchain项目详解(一)

Llama 2 with langchain项目详解(一) 2023年2月25日,美国Meta公司发布了Llama 1开源大模型。随后,于2023年7月18日,Meta公司发布了Llama 2开源大模型,该系列包括了70亿、130亿和700亿等不同参数规模的模型。相较于Llama 1,Llama 2的训练数据增加了40%,上下文长度提升至…

Oracle数据迁移

问题描述&#xff1a; oracle数据库的所有表结构、数据、索引等需要需从测试库迁移到正式库。 解决步骤&#xff1a; oracle数据库迁移&#xff0c;主要通过expdp从测试库所在的源服务器将指定的数据表或数据源导出为一个或多个数据文件&#xff08;.dmp文件&#xff09;&…

MySql用户管理、权限管理

用户管理 1. 查看系统用户&#xff08;查询mysql系统数据库中的user表&#xff09; select * from mysql.user; 2. 创建用户 CREATE USER 用户名主机名 identified by 密码 -- 创建用户zhonghua,只能在当前主句localhost访问,密码为123456 create user zhonghualocalhost i…

Fabric系列 - 知识点整理

知识点 源码编译 主机编译 容器编译 手动部署(docker-compose) 单peer 多peer 中途加peer 多主机多peer 链码 语法, 接口 (go版) 命令行调用 ca server 在DApp中使用SDK调用 (js版) 部署的几个阶段 部署1排序和1节点, 1组织1通道 光部署能Dapp 带ca server (每个组织一个)…

使用IIS服务器部署Flask python Web项目

参考文章 ""D:\Program Files (x86)\Python310\python310.exe"|"D:\Program Files (x86)\Python310\lib\site-packages\wfastcgi.py"" can now be used as a FastCGI script processor参考文章 请求路径填写*&#xff0c;模块选择FastCgiModule&…

Android使用kotlin+协程+room数据库的简单应用

前言&#xff1a;一般主线程&#xff08;UI线程&#xff09;中是不能执行创建数据这些操作的&#xff0c;因为等待时间长。所以协程就是为了解决这个问题出现。 第一步&#xff1a;在模块级的build.gradle中引入 id com.android.application// roomid kotlin-androidid kotlin…

kafka-2.12使用记录

kafka-2.12使用记录 安装kafka 2.12版本 下载安装包 根据你的系统下载rpm /deb /zip包等等, 这里我使用的是rpm包 安装命令 rpm -ivh kafka-2.12-1.nfs.x86_64.rpm启动内置Zookeeper 以下命令要写在同一行上 /opt/kafka-2.12/bin/zookeeper-server-start.sh /opt/kafka-2…

【前端 | CSS】align-items与align-content的区别

align-items 描述 CSS align-items 属性将所有直接子节点上的 align-self 值设置为一个组。align-self 属性设置项目在其包含块中在交叉轴方向上的对齐方式 align-items是针对每一个子项起作用&#xff0c;它的基本单位是每一个子项&#xff0c;在所有情况下都有效果&…

【云原生-Uptime Kuma】自动化运维监控工具-Uptime Kuma

文章目录 简介基础信息开源信息 在线安装docker安装Uptime Kuma安装docker-compose安装 在线访问账号创建基础配置 监控管理监控看板添加监控组配置http监控监控异常通知消息 自定义监控页面特性支持支持计划维护特性总结 总结 简介 基础信息 uptime-kuma是一款开源的、多功能…

ChatGLM-RLHF(六)-PPO(Proximal Policy Optimization)原理实现代码逐行注释

一&#xff0c;前言 从open AI 的论文可以看到&#xff0c;大语言模型的优化&#xff0c;分下面三个步骤&#xff0c;SFT&#xff0c;RM&#xff0c;PPO&#xff0c;我们跟随大神的步伐&#xff0c;来学习一下这三个步骤和代码实现&#xff0c;本章介绍PPO代码实现。 上章我们…

无线液位传感器—简介

近年来&#xff0c;随着无线传感网络技术的愈发成熟和稳定&#xff0c;无线传感器因其安装、维护方便&#xff0c;不用布线、节约成本&#xff0c;监测方便&#xff0c;使用灵活&#xff0c;可适用于多种工业领域等优点&#xff0c;正在逐步替代部分传统有线传感器&#xff0c;…

LabVIEW对并行机器人结构进行建模仿真

LabVIEW对并行机器人结构进行建模仿真 为了对复杂机器人结构的数学模型进行建模、搜索、动画和验证&#xff0c;在工业机器人动态行为实验室中&#xff0c;设计并实现了具有五个自由度的单臂型机器人。在研究台上可以区分以下元素&#xff1a;带有直流电机和编码器的机器人;稳…

Linux基础学习

文章目录 Linux命令学习Linux环境准备Linux命令行学习Linux命令行格式与文件系统linux实用命令笔记Linux文件权限查看 Linux命令学习 理解Linux命令是什么 &#xff08;图形化的操作&#xff0c;文件查看&#xff0c;浏览器打开&#xff09; 你打开一个谷歌浏览器&#xff0c;…

【考研复习】24王道数据结构课后习题代码|第3章栈与队列

文章目录 3.1 栈3.2 队列3.3 栈和队列的应用 3.1 栈 int symmetry(linklist L,int n){char s[n/2];lnode *pL->next;int i;for(i0;i<n/2;i){s[i]p->data;pp->next;}i--;if(n%21) pp->next;while(p&&s[i]p->data){i--;pp->next;}if(i-1) return 1;…

Godot 4 源码分析 - 碰撞

碰撞功能应该是一个核心功能&#xff0c;它能自动产生相应的数据&#xff0c;比如目标对象进入、离开本对象的检测区域。 基于属性设置&#xff0c;能碰撞的都具备这样的属性&#xff1a;Layer、Mask. 在Godot 4中&#xff0c;Collision属性中的Layer和Mask属性是用于定义碰撞…