Docker 安装与基本使用

news2024/11/25 18:53:50

image.png

一、简介

  • Docker 官方文档、Docker 中文文档,更新会落后于官方文档

  • 什么是 Docker ?

    Docker 是一个应用打包分发部署的工具,也可以把它理解为一个轻量的虚拟机,它只虚拟软件需要的运行环境,多余的一点都不要,而普通虚拟机则是一个完整而庞大的系统,包含各种不管要不要的软件。

    • 打包:就是把软件运行所需的依赖、第三方库、软件打包到一起,变成一个 安装包
    • 分发:可以把打包好的 安装包 上传到一个镜像仓库,其他人可以非常方便的获取和安装。
    • 部署:拿着 安装包 就可以一个命令运行起来应用,自动模拟出一模一样的运行环境,不管是在 Windows/Mac/Linux
  • 特性对比

    特性普通虚拟机Docker
    跨平台通常只能在桌面级系统运行,例如 Windows/Mac,无法在不带图形界面的服务器上运行支持的系统非常多,各类 windowsLinux 都支持
    性能性能损耗大,内存占用高,因为是把整个完整系统都虚拟出来了性能好,只虚拟软件所需运行环境,最大化减少没用的配置
    自动化需要手动安装所有东西一个命令就可以自动部署好所需环境
    稳定性稳定性不高,不同系统差异大稳定性好,不同系统都一样部署方式

二、安装

  • docker 安装、docker-compose 安装、docker 快速入门,包含 windows 安装等详细步骤

    • 桌面版:https://www.docker.com/products/docker-desktop

    • 服务器版:https://docs.docker.com/engine/install/#server

    • docker 安装成功后,可以使用 $ docker -v 查看是否安装成功。

    • docker-compose 安装成功后,可以使用 $ docker-compose -v 查看是否安装成功。

      注意:

      除了在 Linux 上安装 docker 时,不会自动安装 docker-compose,其他平台(windowmac)都会自动安装好 docker-compose

      安装好 docker 后,可以通过 $ docker-compose -v 检查是否顺带安装好了 docker-compose,没有安装好,可以按官网的方式进行安装。

    • 安装成功后,在桌面版中,只需要启动即可正常使用,就算修改了配置也是重启软件也可以,在服务器版中则需要通过 systemctl 启动或重启:

      # 前面的 sudo 可更具情况进行添加
      # 将 docker 加入开机自启动的列表
      $ sudo systemctl enable docker
      # 启动
      $ sudo systemctl start docker
      # 停止
      $ sudo systemctl stop docker
      # 重启
      $ sudo systemctl restart docker
      # 查看状态
      $ sudo systemctl status docker
      
  • 如果是在 Windows 环境下,还需要配置 WSL 环境:

    • WSL 介绍与使用

    • 开始使用适用于 Linux 的 Windows 子系统 (WSL)

    • 开启 Windows 虚拟化Linux 子系统(WSL2) ,附:docker windows 安装等详细步骤。

      image.png

      image.png

    • Ubuntu(乌班图) 是个基于 Debian 以桌面应用为主的 Linux 操作系统,可在应用上线搜索下载,也可通过命令进行安装。

    • 命令安装(默认安装 ubuntu linux)必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用以下:

      # 安装好 ubuntu 后,并启动,会要求输入账号密码
      $ wsl --install 
      
      # 上面等于下面,默认安装就是 Ubuntu
      $ wsl --install -d Ubuntu
      
      # 输出
      正在安装: Ubuntu  
      已安装 Ubuntu。  
      正在启动 Ubuntu...  
      Installing, this may take a few minutes...
      Please create a default UNIX user account. The username does not need to match your Windows username.  
      For more information visit: <https://aka.ms/wslusers>  
      Enter new UNIX username: xxxx  
      New password:  
      Retype new password:  
      passwd: password updated successfully  
      Installation successful!  
      To run a command as administrator (user "root"), use "sudo <command>".
      ...
      

      安装好后,如何进入 ubuntu?

      1、可在 cmd/PowerShell 中执行 $ ubuntu 命令进入 ubuntu

      2、在系统搜索中,搜索 ubuntu 应用,打开即可。

  • 镜像配置

    • 镜像列表

      镜像归属镜像地址
      Docker 中国官方镜像https://registry.docker-cn.com
      DaoCloud 镜像站http://f1361db2.m.daocloud.io
      Azure 中国镜像https://dockerhub.azk8s.cn
      科大镜像站https://docker.mirrors.ustc.edu.cn
      阿里云https://<your_code>.mirror.aliyuncs.com 需要去注册个账号获取个私有的,这里放个别人的 https://ud6340vz.mirror.aliyuncs.com
      七牛云https://reg-mirror.qiniu.com
      网易云https://hub-mirror.c.163.com
      腾讯云https://mirror.ccs.tencentyun.com
    • 镜像格式

      // 单个
      "registry-mirrors": ["https://registry.docker-cn.com"]
      
      // 可以支持多个
      "registry-mirrors": ["https://registry.docker-cn.com", "https://dockerhub.azk8s.cn", ...]
      
    • 配置镜像:

      # 方法一【使用命令修改配置】
      # 1.运行以下命令来编辑 Docker 配置文件:
      $ sudo vim /etc/docker/daemon.json
      # 2.将以下内容复制到文件中,文件中有对象则去掉 {} 拷贝进去:
      { "registry-mirrors": ["https://registry.docker-cn.com"] }
      # 3. 保存并关闭文件。
      # 4. 重启Docker服务:
      $ sudo systemctl restart docker
      # 5. 完成后,可以通过运行以下命令来验证是否成功:
      $ docker info
      # 6. 注意:如果是从其他镜像源获取镜像,需要将 https://registry.docker-cn.com 替换为相应的镜像源地址。
      
      
      # 方法二:【使用 Docker Desktop 界面修改】
      # 1.在 Docker Desktop 的状态栏上右键单击图标,选择 Settings。
      # 2. 在 Docker Engine 选项卡中,找到 Registry mirrors 并单击 + 按钮。
      # 3. 输入新的镜像源地址。
      "registry-mirrors": ["https://registry.docker-cn.com"]
      # 4. 单击 Apply & restart 保存更改并重启服务。
      # 5. 如果按钮自带重启,则不需要管,没有 restart 则需重启 Docker 服务。
      # 6. 完成后,可以通过运行以下命令来验证是否成功:
      $ docker info
      

      image.png

    • 查看当前镜像

      $ docker info
      

      执行上面命令,查看输出信息中是否有 Registry Mirrors,没有默认就是国外镜像,有就说明有自定义镜像地址:

      ...
      Registry Mirrors:
        https://registry.docker-cn.com/
      

三、使用

  • 常用命令

    # 运行容器
    $ docker run ...
    # 查看当前运行中的容器
    $ docker ps
    # 查看镜像列表
    $ docker images
    # 从仓库中拉取镜像
    $ docker pull
    # 删除指定 id 的容器
    $ docker rm <container-id>
    # 停止/启动指定 id 的容器
    $ docker stop/start <container-id>
    # 删除指定 id 的镜像
    $ docker rmi <image-id>
    # 查看 volume 列表
    $ docker volume ls
    # 查看网络列表
    $ docker network ls
    ......
    
  • Docker 命令指令列表: https://docs.docker.com/engine/reference/commandline/run/

  • Docker 官方镜像仓库:https://hub.docker.com/

    例如:搜索 redis,下载运行。

    $ docker run -d -p 6379:6379 --name redis redis:latest
    
    -d # 表示可后台运行容器(守护式运行)  
    -p # 宿主机端口:docker容器端口,将容器端口映射到宿主机上,通过宿主机访问内部端口
    --name # 给要运行的容器起的名字  
    redis:latest # 指定版本
    -it # 表示与容器进行交互式启动
    /bin/bash # 交互路径
    -v # 将容器内的指定文件夹挂载到宿主机对应位置
    ......
    
  • docker-compose 方式运行

    例如:搜索 wordpress,可以通过 docker-compose.yml 下载运行。

    新建 docker-compose.yml,并将内容拷贝进去保存,然后到该目录下执行安装命令

    $ docker-compose up -d
    

    等待安装完成后,则可以进行访问

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

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

相关文章

jinkens编译问题

可以看到是NapaMedia 编译有问题 往上面查看 再在gerrit上看提交的这个文件。。打开看下是不是有冲突 果然有冲突 有冲突在gerrit上直接解决冲突 然后保存 updatechanges再publish edit 然后点进编译

Gym - 101652

A - Odd Palindrome 题意&#xff1a;给你一个字符串如果它的所有回文子串长度为奇数&#xff0c;输出Odd.否则输出Or not. 思路&#xff1a;其实只要判断是否有两个相连的字符就可以了 #include <bits/stdc.h> using namespace std; #define pi 3.1415926 #define X f…

STM32初识---概念了解(下)

复位和时钟控制&#xff08;RCC) 系统复位 当发生以下任一事件时&#xff0c;产生一个系统复位&#xff1a; 1. NRST引脚上的低电平(外部复位) 2. 窗口看门狗计数终止(WWDG复位) 3. 独立看门狗计数终止(IWDG复位) 4. 软件复位(SW复位) 5. 低功耗管理复位 电源复位 当以下事件中…

XML文档详解

目录 XML文档 一、XML文件 二、Dom4J解析XML文件 三、Sax解析XML文件 四、使用Dom4j的XPath解析XML文件 4.1XPath语法 4.2 获取sys-config.xml文件的配置信息 4.3 获取server.xml文件的配置信息 4.4 获取bookstore.xml文件的配置信息 XML文档 一、XML文件 1.1 学习重…

s3fs安装使用

s3fs安装使用 前言 最近在预研将对象存储桶挂载到本地文件系统的需求&#xff0c;查阅了一些相关的资料&#xff0c;找到s3fs-fuse开源组件&#xff0c;可以满足需求&#xff0c;本文主要记录一下s3fs的部署以及使用。 s3fs简介 s3fs 是一个 C 开发的开源工具&#xff0c;可…

Amplify-Shader-Pack下载

ASE相关效果资源https://download.csdn.net/download/mayzhengxi/87915649?spm1001.2014.3001.5503

[linux] ebtables技术

Linux系统中使用ebtables技术 ebtables就是以太网桥防火墙&#xff0c;以太网桥工作在数据链路层&#xff08;MAC层&#xff09;&#xff0c;ebtables主要过滤数据链路层数据包&#xff0c;ebtables能过滤桥接流量。ebtables每个阶段的过滤时机都比iptables早。 ebtables的配置…

centos7.9修改ssh默认的端口号

多开几个ssh&#xff0c;防止配置文件错误&#xff0c;将自己关在服务器外面了 netstat -ntlp|grep ssh # ssh对应的端口号 修改sshd_config配置文件 /etc/ssh/sshd_config&#xff0c;重启sshd服务 #Port 22 Port 10011 # 端口号自己定义&#xff0c;不能超过65535&#xf…

基于Java+Swing+Mysql影院购票系统

基于JavaSwingMysql影院购票系统 一、系统介绍二、功能展示1.用户登陆2.用户订票管理3.电影售票中心4.电影上映管理4.退票记录查询 三、数据库四、其他系统实现五、获取源码 一、系统介绍 该系统实现了查看管理员登陆、用户订票管理、电影上映管理、电影售票中心、退票记录查询…

重定义/自定义printf到串口输出实现的三种方法(cubeide)

重定义/自定义printf到串口输出实现的三种方法&#xff08;cubeide) 文章目录 重定义/自定义printf到串口输出实现的三种方法&#xff08;cubeide)1.重写_write函数2.重定义PUTCHAR_PROTOTYPE宏3.va_list自定义printf总结&#xff1a; 1.重写_write函数 注释掉syscalls.c文件中…

Java中Map使用增强for循环和迭代器获取key和value

加油&#xff0c;新时代打工人&#xff01; java中List集合三种获取集合元素方式 本文运行代码使用 jdk1.8 for 语句比较简单&#xff0c;用于循环数据。 Java迭代器&#xff08;Iterator&#xff09;是 Java 集合框架中的一种机制&#xff0c;是一种用于遍历集合&#xff08…

非线程安全问题

目录 实例变量共享导致的“非线程安全问题” 如何解决这个问题&#xff1f; i--与System.out.println()出现引起的“非线程安全问题” 非线程安全主要是指多个线程对同一个对象中的同一个实例变量进行操作时会出现值被更改、值不同步的情况&#xff0c;进而影响程序的执行流…

科目一速通技巧笔记,简记

常规 累计积分制度&#xff08;12满&#xff09;周期12月 虚假材料1年&#xff0c;假1吊二撤三醉五逃终身 假1500 骗三2k以下 初次领证1年实习期、实习标志&#xff0c;18~70岁 拼装车、报废车&#xff0c;吊销 200~2k 没有中心线&#xff08;一条路&#xff09;城市道路3…

路径规划算法:基于白鲸优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于白鲸优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于白鲸优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法白鲸…

Python、STK、MATLAB的连接和使用

写在前面 预备知识&#xff1a; Python通过命令行调用MATLAB的简单实现。这篇文章讲明了如何使用 Python 调用 MATLAB 的原理和过程&#xff0c;并给出相应代码。 STK、MATLAB、SQL的连接和使用。这篇文章讲明了STK 11.2、MATLAB 2014a、SQL 2019的安装过程&#xff0c;以及…

超越99%的程序员,chatgpt用C++写个线程安全无锁环形队列

​肝了一个周末&#xff0c;我们一起来欣赏chatgpt写的代码吧。让其用C为我们写一个线程安全的环形队列&#xff0c;并逐步提出一些需求。 先看带锁的实现。 带锁版本 我对chatgpt的需求是&#xff1a; 用C实现线程安全的环形队列&#xff0c;提供代码注释&#xff0c;以及g…

Meetup 报名|07.22 StarRocks Friends 与你相约广州

夏日炎炎&#xff0c;经历了杭州和上海两站的成功活动后&#xff0c;社区开发者的热情依旧如火如荼&#xff01;在更加炽热的七月&#xff0c;我们即将迎来 StarRocks & Friends 的第三站--广州&#xff01; 社区依旧秉持连接 StarRocks 社区专家与用户共同探讨大数据领域…

MySQL数据库 - 基本数据类型

目录 一、数据类型分类 二、数据类型 1、tinyint 类型 有符号 tinyint 范围测试 无符号 tinyint 范围测试 2、bit 类型 3、float 类型 有符号 float 范围测试 无符号 float 范围测试 4、decimal 类型 5、char 类型 6、varchar 类型 7、日期类型 8、enum类型、set类型…

Codeforces Round 739 (Div. 3)

A.Dislike of Threes AC代码&#xff1a; #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int N2e510; int f[N]; int cnt; int main() {for(int i1;;i){if(i%3!0&&i%10!3) f[cnt]i;if(cnt>1000) break…

第一阶段-第六章 Python的数据容器

目录 一、数据容器入门  1.学习目标  2.为什么要学习数据容器  3.什么是数据容器  4.本小节的总结 二、数据容器&#xff1a;list&#xff08;列表&#xff09;  2.1列表的定义  1.学习目标  2.为什么需要列表  3.列表的定义  4.本节的代码演示  5.本小节的…