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.mzph.cn/news/31093.shtml

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

相关文章

Zabbix 6.0 监控其他

文章目录 一、Zabbix 监控 Windows 系统1&#xff09;下载 Windows 客户端 Zabbix agent 22&#xff09;安装客户端&#xff0c;配置3&#xff09;在服务端 Web 页面添加主机&#xff0c;关联模板 二、Zabbix 监控 java 应用1&#xff09;客户端开启 java jmxremote 远程监控功…

2500、删除每行中最大值在IDEA中调试Java

leetcode:2500、删除每行中最大值在IDEA中调试&#xff0c;使用Java实现 题目描述&#xff1a; 给你一个 m x n 大小的矩阵 grid &#xff0c;由若干正整数组成。 执行下述操作&#xff0c;直到 grid 变为空矩阵&#xff1a; 从每一行删除值最大的元素。如果存在多个这样的…

MySQL_多表查询

多表查询 概述&#xff1a;多表查询就是多张表之间的查询。 回顾&#xff1a;SELECT * FROM table_name 多表查询 from 后面就得跟多张表。如&#xff1a;select * from emp,dept 笛卡尔积&#xff1a;笛卡尔积在数学中&#xff0c;表示两个集合&#xff0c;集合 A 和集合 …

Django实现音乐网站 ⑽

使用Python Django框架制作一个音乐网站&#xff0c; 本篇主要是后台对歌曲类型、歌单功能原有功能进行部分功能实现和显示优化。 目录 歌曲类型功能优化 新增编辑 优化输入项标题显示 父类型显示改为下拉菜单 列表显示 父类型显示名称 过滤器增加父类型 歌单表功能优化…

# X11、Xlib、XFree86、Xorg、GTK、Qt、Gnome和KDE之间的关系

X11、Xlib、XFree86、Xorg、GTK、Qt、Gnome和KDE之间的关系 很多人对于他们是啥是傻傻分不清的&#xff0c;我做了个表格供大家参考。 摘抄&#xff1a; X11是X Window System Protocol, Version 11&#xff08;RFC1013&#xff09;&#xff0c;是X server和X client之间的通…

Android多渠道打包+自动签名工具 [原创]

多渠道打包自动签名工具 [原创] github源码&#xff1a;github.com/G452/apk-packer 如果觉得有帮助可以点个小星星支持一下&#xff0c;万分感谢&#xff01; 使用步骤&#xff1a; 1、在apk-packer.exe目录内放入打包需要的配置&#xff1a; 1&#xff09;签名文件.jks2&am…

各种变形链表(循环链表、双向链表、带头结点的链表等)的表示和基本操作的实现

目录 双向链表双链表的插入操作双链表的删除操作 循环链表循环双链表静态链表 双向链表 单链表节节点中只有一个指向其后继的指针&#xff0c;使得单链表只能从头结点一次顺序的向后遍历。要访问某个记得点的前驱结点&#xff08;插入、删除操作时&#xff09;&#xff0c;只能…

flutter开发实战-just_audio实现播放音频暂停音频设置音量等

flutter开发实战-just_audio实现播放音频暂停音频设置音量等 最近开发过程中遇到需要播放背景音等音频播放&#xff0c;这里使用just_audio来实现播放音频暂停音频设置音量等 一、引入just_audio 在pubspec.yaml引入just_audio just_audio: ^2.7.0在iOS上&#xff0c;video_p…

Michael.W基于Foundry精读Openzeppelin第23期——ERC165Checker.sol

Michael.W基于Foundry精读Openzeppelin第23期——ERC165Checker.sol 0. 版本0.1 ERC165Checker.sol 1. 目标合约2. 代码精读2.1 supportsERC165InterfaceUnchecked(address account, bytes4 interfaceId)2.2 supportsERC165(address account)2.3 supportsInterface(address acc…

Upgrading to WebSocket events.js:352 报错问题

将http-proxy-middleware升级到0.20.0就行了 安装依赖 npm install http-proxy-middleware npm install --save-dev http-proxy-middleware 通过express来使用该中间件&#xff0c;安装expressnpm install express 在demo文件夹下创建server.js文件作为代理使用 在demo文件…

【Express.js】全面鉴权

全面鉴权 这一节我们来介绍一下 Passport.js&#xff0c;这是一个强大的 NodeJS 的认证中间件 Passport.js 提供了多种认证方式&#xff0c;账号密码、OpenID、ApiKey、JWT、OAuth、三方登录等等。 使用 Passport.js 认证要配置三个部分&#xff1a; 认证策略中间件会话 接…

springboot整合JMH做优化实战

这段时间接手项目出现各种问题&#xff0c;令人不胜烦扰。吐槽下公司做项目完全靠人堆&#xff0c;大上快上风格注定留下一地鸡毛&#xff0c;修修补补不如想如何提升同事代码水准免得背锅。偶然看到关于JMH对于优化java代码的直观性&#xff0c;于是有了这篇文章&#xff0c;希…

乐鑫科技2021笔试题

笔试时间&#xff1a;2020.09.09&#xff0c;10&#xff1a;00-11&#xff1a;30 岗位&#xff1a;嵌入式软件工程师 题型&#xff1a;单选题20道&#xff0c;40分。编程题2道&#xff0c;60分。 单选题 1、算术右移指令执行的操作是&#xff1f;符号位会变化吗&#xff1f…

11款UML/SysML建模工具更新(2023.7)Papyrus、UModel……

DDD领域驱动设计批评文集 欢迎加入“软件方法建模师”群 《软件方法》各章合集 最近一段时间更新的工具有&#xff1a; 工具最新版本&#xff1a;drawio-desktop 21.6.5 更新时间&#xff1a;2023年7月22日 工具简介 开源绘图工具&#xff0c;用Electron编写&#xff0c;…

sql 语句 字段字符串操作

substring_index() 函数 字符串截取 表达式&#xff1a;substring_index(column,str,count) 释义&#xff1a;截取字符串column&#xff0c;str出现从前往后数第count次&#xff0c;之前的所有字符 示例语句&#xff1a;SELECT substring_index(‘www.baidu.com’,‘.’,2) 结…

uniapp文件下载并预览

大概就是这样的咯&#xff0c;文件展示到页面上&#xff0c;点击文件下载并预览该文件&#xff1b; 通过点击事件handleDownLoad(file.path)&#xff0c;file.path为文件的地址&#xff1b; <view class"files"><view class"cont" v-for"(…

[Leetcode] [Tutorial] 二分查找

文章目录 35. 搜索插入位置Solution 74. 搜索二维矩阵Solution 34. 在排序数组中查找元素的第一个和最后一个位置 35. 搜索插入位置 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被…

PPO和文本生成

策略梯度 策略梯度&#xff08;Policy Gradient&#xff09;方法梯度的计算如下&#xff1a; E ( a t , s t ) ∈ π θ [ A ^ t ∇ θ log ⁡ π θ ( a t ∣ s t ) ] \mathbb E_{(a_t,s_t) \in \pi_\theta}[\hat A_t \nabla_ \theta \log \pi_\theta(a_t | s_t)] E(at​,st…

Nginx的重定向

URI&#xff1a;统一资源标识符&#xff0c;是一种字符串标识&#xff0c;主要是用于标识抽象的或者是物理资源&#xff08;主要是指一些文件视频等等&#xff09; 常用的Nginx正则表达式 ^ 匹配输入字符串的起始位置&#xff08;以......开头&#xff09; $ 匹配输入…

07 |「广播接收器 」

前言 实践是最好的学习方式&#xff0c;技术也如此。 文章目录 前言一、二、实践1、发送和接收系统广播2、发送和接收自定义广播 一、 广播是 Android 系统和 Android 应用程序在发生可能影响其他应用程序组件功能的事件时发送的消息&#xff1b;广播是Android系统中的一种进程…