docker基本使用方法

news2024/11/24 12:33:30

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.sh
 sudo 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.coloradmin.cn/o/857207.html

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

相关文章

Blockchain投资:是否是实现财务自由的捷径?

随着Blockchain技术的不断发展和应用&#xff0c;越来越多的人开始探索Blockchain投资的机会。Blockchain作为一种分布式记账技术&#xff0c;以其去中心化、透明性和安全性等特点&#xff0c;吸引了众多投资者的关注。但是&#xff0c;Blockchain投资是否真的可以成为实现财务…

unity 修改默认脚本

using System.Collections; using System.Collections.Generic; using UnityEngine; //***************************************** //创建人&#xff1a; xxxx //功能说明&#xff1a; //***************************************** #ROOTNAMESPACEBEGIN# public class #SCRI…

0基础学习VR全景平台篇 第82篇:智慧眼-角色是什么?如何运用呢?

一、功能说明 角色是指城市运营工作开展时所需要设定的成员职称或者人物定位&#xff0c;如管理员、督察员、镇街主管、镇接干事、网格员等等。 后台编辑界面 点击【新增】&#xff0c;填写角色的名称&#xff0c;若有上级&#xff0c;还需选择对应的父级角色。如管理员为最…

Python(七十五)集合的生成式

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

山东布谷科技直播软件源码探索高效、稳定直播传输的技术介绍:流媒体传输技术

今天我们探索的是让直播软件源码平台在直播时能够高效、稳定的进行直播传输的技术&#xff0c;而这个技术就是直播软件源码平台的流媒体传输技术&#xff0c;在直播软件源码平台中&#xff0c;流媒体传输技术会将直播的图像、视频、音频等相关的流媒体信号通过网络传递到用户的…

SQL-每日一题【1251. 平均售价】

题目 Table: Prices Table: UnitsSold 编写SQL查询以查找每种产品的平均售价。average_price 应该四舍五入到小数点后两位。 查询结果格式如下例所示&#xff1a; 解题思路 1.题目要求查询每种产品的平均售价。给出了两个表&#xff0c;我们用聚合查询来解决此问题。 2.首先我…

从 OBJ 到 FBX:图扑新一代飞机模型、动画、漫游

相信大多数图扑 HT 用户都曾见过这个飞机的 Demo&#xff0c;在图扑发展的这十年&#xff0c;这个 Demo 是许多学习 HT 用户一定会参考的经典 Demo 之一。 这个 Demo 用简洁的代码生动地展示了 OBJ 模型加载、数据绑定、动画和漫游等功能的实现。许多用户参考这个简单的 Demo 后…

通过Shinami快速使用赞助交易(Gas代付)

Web3中对钱包和tokens的要求对于新用户来说是最大的挑战。Sui上的赞助交易不仅为用户提供丝滑的体验&#xff0c;还为构建者开辟了更多的收入模式。 按需付费的区块链模型直接支持网络基础设施&#xff0c;但对于那些已经习惯了Web2世界中看似免费服务的用户来说&#xff0c;这…

{errcode“:-106,“errmsg“:“token check fail“} 微信公众号测试号接口配置报错Django版

准备写个公众号做消息提醒的工具&#xff0c;&#xff0c;于是去了微信公众平台&#xff0c;准备用测试号接口试试。代码写的没问题&#xff0c;服务器也是已经部署了的。基本上所有问题都排查了还是显示配置失败。最后发现是请求头的问题 先列举一下需要注意的问题&#xff0…

自媒体行业深度解析:挖掘收入潜力,洞察未来趋势

随着社交网络和移动互联网的快速发展&#xff0c;自媒体行业成为了越来越多人的职业选择。那么&#xff0c;自媒体行业到底怎么样&#xff1f;自媒体人的收入和前景如何&#xff1f;本文将为大家带来一些关于自媒体行业的介绍和分析。 一、自媒体的定义 自媒体是指个人或组织利…

【ES】笔记-箭头函数的实践于应用场景

箭头函数的实践于应用场景 需求-1 点击 div 2s后颜色变成[粉色]从数组中返回偶数的元素 需求-1 点击 div 2s后颜色变成[粉色] html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport…

论文解读《Adversarial training methods for semi-supervised text classification》

1 背景 1.1 对抗性实例&#xff08;Adversarial examples&#xff09; 通过对输入进行小扰动创建的实例&#xff0c;可显著增加机器学习模型所引起的损失对抗性实例的存在暴露了机器学习模型的脆弱性和局限性&#xff0c;也对安全敏感的应用场景带来了潜在的威胁&#xff1b;…

前端开发的工作职责精选【10篇】

前端开发的工作职责1 1、使用Divcss并结合Javascript负责产品的前端开发和页面制作; 2、熟悉W3C标准和各主流浏览器在前端开发中的差异&#xff0c;能熟练运用DIVCSS&#xff0c;提供针对不同浏览器的前端页面解决方案; 3、负责相关产品的需求以及前端程序的实现&#xff0c…

IDEA 配置 eslint

第一步 第二步 然后就去试一下啦&#xff0c;理论上到这一步就没问题了&#xff0c;有问题在留言吧。

超低延时直播技术的前世今生

作者&#xff1a;李晨光、匡建鑫、陈鉴平 卷首语&#xff1a; 据中国互联网络信息中心发布的《中国互联网络发展状况统计报告》显示&#xff0c;截止到 2022 年 6 月我国网络直播用户规模达到了 7.16 亿&#xff0c;占网民整体的 68.1% 。最主要原因是 2020 年度疫情期间导致居…

C++入门(小白篇2-标识符定义-关键词-变量类型)

前言 在上一节课中&#xff0c;我们学习到C软件的安装&#xff0c;也知道C运行的各种软件&#xff0c;以及运行第一个程序 今天我们来学习一下 1、C中标识符(变量)的命名规则 2、认识C中的关键词 3、认识C中的数据类型 每天学一点&#xff0c;不要太多不然脑子装不下&#xff0…

vscode终端背景颜色修改以及报错信息颜色修改

引言 刚从pycharm转到vscode上时&#xff0c;很不喜欢vscode终端信息一片白色&#xff0c;于是想尽办法去修改vscode终端风格 这里提供vscode终端背景颜色的修改和vscode终端报错提示信息颜色的修改方法 (1)vscode终端背景颜色优化 步骤一&#xff0c;ctrlshiftp打开设置搜索…

【python 深度学习】解决遇到的问题

目录 一、RuntimeError: module compiled against API version 0xc but this version of numpy is 0xb 二、AttributeError: module ‘tensorflow’ has no attribute ‘flags’ 三、conda 更新 Please update conda by running 四、to search for alternate channels that…

项目启动会为什么很重要? 要确定哪些事宜?

项目启动会议及事项安排 1、领导致辞 2、项目目标 3、项目范围及关键交付物 4、项目里程碑 5、项目组织架构及人员工作安排 6、项目管理机制 7、联系人列表 8、Q&A 进主页获取更多资料

JVM—编译器、类加载的过程、双亲委派机制这些你还记得吗?

背景介绍 这两天在对JVM的知识进行回顾&#xff0c;顺便来分享分享&#xff0c;接下来也会有系列文章&#xff0c;欢迎大家一起讨论。 过程 为什么叫JVM&#xff1f; Java Virtual Machine&#xff0c;java虚拟机。可以理解成一个以字节码为机器指令的CPU 有哪些特点呢&#…