Docker基础——初识Docker

news2025/1/11 21:49:56

Docker架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

  • Docker 客户端(Client) : Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。
  • Docker 主机(Host) :一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker 包括三个基本概念:

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

在这里插入图片描述

Docker 安装

卸载老的Docker及依赖

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装一些依赖库

  • yum-utils 提供 yum-config-manager 类库
  • device-mapper-persistent-data 和 lvm2 被devicemapper 存储驱动依赖
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

设置稳定版本的库

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装Docker CE

yum install -y docker-ce

安装完后启动

sudo systemctl start docker

查看docker版本

[root@test ~]# docker -v
Docker version 24.0.4, build 3713ee1

查看docker状态

[root@test ~]# sudo systemctl start docker
[root@test ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2023-07-11 07:22:15 UTC; 21s ago
     Docs: https://docs.docker.com
 Main PID: 2222 (dockerd)
    Tasks: 11
   Memory: 29.9M
   CGroup: /system.slice/docker.service
           └─2222 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

仓库配置

Docker 官方和国内很多云服务商都提供了国内加速器服务,比如:

  • 阿里云的加速器:https://help.aliyun.com/document_detail/60750.html
  • 网易加速器:http://hub-mirror.c.163.com
  • Docker官方中国加速器:https://registry.docker-cn.com
  • ustc 的镜像:https://docker.mirrors.ustc.edu.cn
# 配置镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF

之后重新启动服务

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

镜像查看和拉取

拉取hello world

$ docker pull hello-world:latest

[root@test ~]# docker pull hello-world:latest
latest: Pulling from library/hello-world
719385e32844: Pull complete 
Digest: sha256:a13ec89cdf897b3e551bd9f89d499db6ff3a7f44c5b9eb8bca40da20eb4ea1fa
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

看本地仓库是否有这个库

[root@test ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    9c7a54a9a43c   2 months ago   13.3kB

运行这个镜像的实例,即容器

[root@test ~]# docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

注意, 如果你在没有镜像的时候,直接docker run hello-world也是可以的;它会先检查本地是否有这个镜像,没有的话会先从指定仓库中拉取

启动docker服务:systemctl start docker
停止docker服务:systemctl stop docker
重启docker服务:systemctl restart docker
查看docker服务状态:systemctl status docker
设置docker开机启动:systemctl enable docker
取消docker开机启动:systemctl disable docker


脚本安装

#!/bin/bash
# 移除掉旧的版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

# 删除所有旧的数据
sudo rm -rf /var/lib/docker

#  安装依赖包
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

# 添加源,使用了阿里云镜像
sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 配置缓存
sudo yum makecache fast

# 安装最新稳定版本的docker
sudo yum install -y docker-ce

# 配置镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF

# 启动docker引擎并设置开机启动
sudo systemctl start docker
sudo systemctl enable docker

# 配置当前用户对docker的执行权限
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo systemctl restart docker

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

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

相关文章

MMDeploy部署YOLOX-x模型

环境搭建 本文初始环境为PyTorch 2.0.0、Python 3.8(ubuntu20.04)、Cuda 11.8 OpenMMLab基础环境 首先安装OpenMMLab基础环境&#xff0c;以下代码均在命令窗口下输入 pip install openmim mim install mmcv-full mim install "mmengine0.7.2"git clone https://…

太阳能供电户外视频远程监控4G无线物联网工业路由器ZR3000

太阳能供电技术常被应用于环保节能的项目中&#xff0c;太阳能具备节能环保、寿命长、性能稳定、维护成本低等特点&#xff0c;被各行各业采纳使用。大多数太阳能应用于户外&#xff0c;存在监控点距离较远、取电困难、宽带光纤布线成本高、环境恶劣等问题&#xff0c;现场还有…

ansible使用playbook剧本

目录 一、执行配置文件 1、修改hosts文件 2、编写yml脚本 3、语法检查[rootansible ~] ansible-playbook --syntax-check ansible.yml 4、预测试 5、执行命令 一、执行配置文件 Playbook配置文件使用YAML语法&#xff0c;具有简介明了&#xff0c;结构清晰等特点。Playbo…

对OpenAI重拳出击!美国政府出手「开源」ChatGPT,Altman惊慌连发3推

FTC突然对OpenAI展开调查&#xff0c;Altman连发3推澄清。FTC对阵OpenAI的大戏正缓缓拉开帷幕。 重磅&#xff01;美国联邦贸易委员会的调查说来就来&#xff01; 调查对象不是别人&#xff0c;正是风头正旺的OpenAI。 一封长达20页的调查要求书直接给了Sam Altman当头棒喝。…

【并发编程的艺术读书笔记】从内存图来理解java是如何执行多线程的

从内存图来理解java是如何执行多线程的 一、内存图简介 众所周知&#xff0c;java类中的成员变量会保存到方法区、java运行时的方法会存入栈中&#xff0c;随之方法中的局部变量也是存储在栈中的&#xff0c;引用类型&#xff08;new出来的对象&#xff09;存储在堆内存中。下…

【C++/嵌入式笔试面试八股】二、24.TCP三次握手四次挥手 | TCP可靠性

TCP三次握手四次挥手 64.TCP头部中有哪些信息?❤️ TCP数据报格式(左图) UDP数据报格式也放这(右图),不具体解释了。 结合三次握手四次挥手来看 端口: 区分应用层的不同应用进程 扩展:应用程序的端口号和应用程序所在主机的 IP 地址统称为 socket(套接字),IP:端口…

Linux - 安装nacos 2.1.0

安装包下载 网址为 https://github.com/alibaba/nacos/tags 点击访问 本人选择的nacos版本为2.1.0 与之对应的spring代码版本为 <spring.boot.version>2.3.12.RELEASE</spring.boot.version> <spring.cloud.version>Hoxton.SR12</spring.cloud.version…

运输层(TCP运输协议相关)

运输层 1. 运输层概述2. 端口号3. 运输层复用和分用4. 应用层常见协议使用的运输层熟知端口号5. TCP协议对比UDP协议6. TCP的流量控制7. TCP的拥塞控制7.1 慢开始算法、拥塞避免算法7.2 快重传算法7.3 快恢复算法 8. TCP超时重传时间的选择8.1 超时重传时间计算 9. TCP可靠传输…

如何在vscode中debug python代码,包括如何优雅地传入多个参数

Visiul Studio Code, 简称vscode&#xff0c;是一款轻量级代码编辑器&#xff0c;其丰富的扩展程序使得其可以方便地作为任何语言的编辑器。 本文将讲述如何在vscode中对python脚本文件进行debug。 本文主要包括debug的两种方式&#xff1a; 基本debugging(basic debugging)…

咖啡店小程序怎么做

咖啡店小程序功能介绍 咖啡店小程序是一款专为咖啡店打造的移动应用程序&#xff0c;旨在提供更便利、高效的服务体验。以下是该小程序的主要功能介绍&#xff1a; 1. 菜单浏览&#xff1a;用户可以通过小程序浏览咖啡店提供的各种咖啡、茶和小吃菜单&#xff0c;包括详细的产…

Docker基础——Centos7安装Docker

0.安装Docker Docker 分为 CE 和 EE 两大版本。CE 即社区版&#xff08;免费&#xff0c;支持周期 7 个月&#xff09;&#xff0c;EE 即企业版&#xff0c;强调安全&#xff0c;付费使用&#xff0c;支持周期 24 个月。 Docker CE 分为 stable test 和 nightly 三个更新频道…

速通sklearn库

速通sklearn库 前言 ​ 最近在复习之前学习过的知识点&#xff0c;因此想到把学过的总结一下&#xff0c;方便后面再次复习&#xff0c;所以有了这个系列。 说明 ​ 由于标题写的是“速通”&#xff0c;因此我的想法是可以让大家看完这篇文章&#xff0c;可以上手matplotlib库&…

FCPX插件-复古老电影胶片边框幻灯片照片展示介绍动画 Emotion Slides

Emotion Slides是一款fcpx插件&#xff0c;可以制作复古老电影胶片边框幻灯片照片展示介绍动画&#xff0c;完全自定义任意数量的场景&#xff0c;完全定制的控制器&#xff0c;7个独特的场景准备&#xff0c;易使用简单&#xff0c;只需拖放。 Emotion Slides插件的主要功能包…

【网络编程】传输层协议——UDP协议

文章目录 一、传输层的意义二、端口号2.1 五元组标识一个通信2.2 端口号范围划分2.3 知名端口号2.4 绑定端口号数目问题2.5 pidof & netstat命令 三、UDP协议3.1 UDP协议格式3.2 如何理解报头&#xff1f;3.3 UDP协议的特点3.4 UDP缓冲区3.5 UDP传输最大长度 一、传输层的意…

基于linux下的高并发服务器开发(第一章)- GDB调试(1)1.13

掌握一个清屏快捷键&#xff1a;CTRLL 01 / 什么是GDB 02 / 准备工作 03 / GDB 命令 -- 启动、退出、查看代码 在~/Linux/lesson08目录下有test.c文件 #include <stdio.h> #include <stdlib.h>int test(int a);int main(int argc,char* argv[]){int a,b;printf(&…

React懒加载/动态加载(Suspense +lazy())简单实例

页面嵌套 两种页面嵌套的方式&#xff0c;一种是父子组件&#xff0c;一种是懒加载1、父子组件&#xff08;可略&#xff0c;只用来做例子对比&#xff09;2、使用懒加载 两种页面嵌套的方式&#xff0c;一种是父子组件&#xff0c;一种是懒加载 1、原本需要用父子组件来实现页…

计算机网络 day7 扫描IP脚本 - 路由器 - ping某网址的过程

目录 network 和 NetworkManager关系&#xff1a; 实验&#xff1a;编写一个扫描脚本&#xff0c;知道本局域网里哪些ip在使用&#xff0c;哪些没有使用&#xff1f; 使用的ip对应的mac地址都要显示出来 计算机程序执行的两种不同方式&#xff1a; shell语言编写扫描脚本 思…

selenium WebDriver 中的几种等待--sleep(),implicitly_wait(),WebDriverWait()

目录 强制等待:sleep() 隐式等待:implicitly_wait() 显示等待:WebDriverWait() 与until()或者until_not()方法结合使用 WebDriverWait与expected_conditions结合使用 显示等待,自定义等待条件 强制等待:sleep() import time sleep(5) #等待5秒 设置固定休眠时间&#x…

【JAVA】与数字相关的类,Number Math 类

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 文章目录 前言数据类型Number类介绍数据格式化实例 Math类介绍静态常量实例 前言 为了解决对数字、日期和系统设置进行处理的困难&#xff0c;如&#xff1a;一些数字&数学问题、随机…

【iOS】—— 编译链接

【iOS】—— 编译链接 文章目录 【iOS】—— 编译链接编译流程预处理&#xff08;预编译Prepressing&#xff09;编译&#xff08;Compilation&#xff09;汇编&#xff08;Assembly&#xff09;链接&#xff08;Linking&#xff09; 编译流程 编译流程分为四步 预处理&#…