Ubuntu22.04安装 docker和docker-compose环境

news2024/11/13 12:12:39

Docker简介

Docker 是一个开源的应用容器引擎,它使开发者能够打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app), 更重要的是容器性能开销极低。

传统的虚拟化技术(如 VMware,KVM 等)是在硬件层面实现虚拟化,需要模拟硬件,因此无法避免地有一些额外的性能开销。而 Docker 是在操作系统层面上实现虚拟化,Docker 容器和内核交互,几乎没有性能损耗。
在这里插入图片描述

Docker的安装

# update
sudo apt update
#执行以下命令来安装这些依赖
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y


#添加docker官网 GPG 密钥、设置stable 仓库
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/aliyun-docker.gpg

# 添加Docker软件源
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/aliyun-docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


# 安装docker
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 安装完成,Docker 服务将会自动启动。你可以输入下面的命令,验证它:
docker --version

# 查看docker状态
sudo systemctl status docker

# 重启docker
sudo systemctl restart docker

# 验证是否成功
sudo docker run hello-world

设置非root用户的权限
默认情况下,只有 root 或者 有 sudo 权限的用户可以执行 Docker 命令。
想要以非 root 用户执行 Docker 命令,需要将用户添加到 Docker 用户组,该用户组在 Docker_ce 软件包安装过程中被创建。输入:

sudo usermod -aG docker $USER   ## $USER是一个环境变量,代表当前用户名。

登出,并且重新登录,以便用户组会员信息刷新。

开机自启动docker

sudo systemctl enable docker

若遇到问题:
Authentication is required to manage system service or unit files.或 Failed to enable unit: Unit file docker.service does not exist.

解决:手动创建docker.service文件(如下步骤1~5)
1.创建docker.service文件(将docker注册为service)
sudo vim /etc/systemd/system/docker.service

2.编辑 docker.service文件。
  将下列配置命令加到docker.service中并保存。命令如下:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

3.添加文件权限并启动docker
sudo chmod +x /etc/systemd/system/docker.service

4.重载unit配置文件
每次有修改docker.service文件时,都要重新加载systemd配置。

sudo systemctl daemon-reload

5.设置开机自启Docker服务
sudo systemctl enable docker.service

6. 执行开机自启docker
sudo systemctl enable docker

docker 常用命令

# 列出当前正在运行的容器
docker ps
# 列出所有容器,包括未运行的
docker ps -a
# 运行一个新容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 停止一个或多个正在运行的容器
docker stop CONTAINER [CONTAINER...]
# 强制停止一个或多个正在运行的容器
docker kill CONTAINER [CONTAINER...]
# 删除一个或多个容器
docker rm CONTAINER [CONTAINER...]
# 删除一个或多个镜像
docker rmi IMAGE [IMAGE...]
# 启动一个或多个已经被停止的容器
docker start CONTAINER [CONTAINER...]
# 重启容器
docker restart CONTAINER [CONTAINER...]
# 进入正在运行的容器
docker exec -it CONTAINER COMMAND
# 构建一个镜像
docker build -t IMAGE PATH
# 将当前目录的Dockerfile上下文发送给守护进程,并在那里构建镜像
docker build -t IMAGE .
# 拉取一个镜像或仓库
docker pull NAME[:TAG]
# 推送一个镜像或仓库到仓库
docker push NAME[:TAG]
# 查看镜像信息
docker inspect IMAGE|ID [OPTIONS]
# 查看容器信息
docker inspect CONTAINER [CONTAINER...]
# 查看Docker的守护进程状态
docker info
# 删除所有容器
docker container prune -f
# 删除所有未使用的镜像
docker image prune -a -f
# 清理不再使用的镜像、容器、网络和卷
docker system prune
docker system prune -a -f
# 查看Docker守护进程的日志
docker logs -f

安装docker-compose

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:
使用 Dockerfile 定义应用程序的环境。
使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
最后,执行 docker-compose up 命令来启动并运行整个应用程序。

安装命令如下。(实际上就是从github的releases中下载对应系统版本的docker-compose程序文件,授予执行权限即可)

$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.29.1/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose

上面下载可能会有问题,也可以离线下载包

# 将 docker-compose 移至 /usr/local/bin 目录下并重命名
$ sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

# 设定 docker-compose 的执行权限
$ sudo chmod +x /usr/local/bin/docker-compose

# 查询 docker-compose 版本以确认是否成功安装
$ docker-compose -v
Docker Compose version v2.29.1

docker-compose常用命令

# 列出由Compose管理的正在运行的容器
docker-compose ps
# 自动完成包括构建镜像,(重新)创建服务,启动服务
docker-compose up
# 后台执行
docker-compose up -d
# 启动指定组件
docker-compose up mysql
docker-compose up -d my_service
# 此命令将会停止 up 命令所启动的容器,并移除网络
docker-compose down 
# -v删除所有卷的选项
docker-compose down -v
# 将根据 docker-compose.yml 文件中的 build 部分 重构所有服务的镜像。
docker-compose build
# 使用 --build 参数将重新构建服务的镜像,然后启动服务。
docker-compose up --build
# 重启所有服务
docker-compose restart
docker-compose start
docker-compose stop

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

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

相关文章

深度学习入门笔记

深度学习入门笔记 感知机逻辑与门与非门或门多层感知机异或门 神经网络激活函数输出层设计损失函数均方误差 MSE交叉熵误差 反向传播算法计算图局部计算计算图反向传播反向传播 参数更新训练过程总结 该篇文章为本人学习笔记的一部分。笔记基于《深度学习入门 基于python理论实…

Navicat连接Mongodb成功了,但是无法显示数据库怎么办?

不知道你是否遇到过?Navicat连接Mongodb成功了,但是无法显示数据库怎么办? 解决办法 这个问题比较坑,对于第一次接触的小伙伴,可能会一脸懵逼,原因就是在Navicat中默认会不显示隐藏的项目,如果不…

产品/运营经理的数据分析思维和学习路径

数据分析是产品经理和运营同学必知必会的技能之一,该技能会贯穿到产品经理和运营同学的整个职业生涯。 产品经理不需要成为数据分析方面的专家,但分析哪些数据、如何分析数据、如何用数据辅助决策、如何用数据驱动业务,这些是产品和运营同学…

C++学习笔记之指针(基础)

C学习笔记之指针(基础) https://www.runoob.com/cplusplus/cpp-pointers.html C/C中的指针内容是早就盛名在外了,当然了,想要随心所欲地使用也是要做很多功课的,先简单了解下吧~ 首先,我们需要了解一点内存…

STM32基础篇:RTC × Unix时间戳 × BKP

Unix时间戳 最早是在Unix系统使用的,之后很多由Unix演变而来的系统也都继承了Unix时间戳的规定。目前,Linux、Windows、安卓这些系统,其底层的计时系统都是使用Unix时间戳。 Uinx时间戳(Unix Timestamp)定义为从UTC/…

论文速读|ReKep:空间时间理论的关系关键点约束,用于机器人操作

项目地址:ReKep | Spatio-Temporal ReasoningReKep | Spatio-Temporal Reasoning of Relational Keypoint Constraints for Robotic ManipulationReKep | Spatio-Temporal Reasoning ReKep(Relational Keypoint Constraints)是一种基于视觉的…

Nebula: 无服务器计算中的性能和能源效率 - WebAssembly与Docker的比较研究

这篇论文的标题是《Nebula: Performance and Energy Efficiency in Serverless Computing - A Comparative Study of WebAssembly and Docker》,作者是 Marius Nilsen Kluften,来自奥斯陆大学(University of Oslo)的信息学系。论文…

android仿assistivetouch悬浮窗实现(带功能实现)

一、悬浮窗点击后的界面: 主要有四个功能,返回、应用程序、退出和主界面。其他功能也可以类似添加。 界面布局代码就不贴出来了,源码(切记需要签名才能让功能实现):下载地址 二、主要是检测系统启动或者a…

时序数据库荣登巅峰,被央视报道了!

8月30日,事务处理性能委员会TPC正式公布了最新的国际权威数据库性能基准榜单,“清华系”发起研制的Apache IoTDB开发的国产化时序数据库软件TimechoDB,在性能和系统成本维度上双双打破世界纪录。在央视《24小时》节目中,1分34秒重…

《黑神话:悟空》与游戏经济学的深度剖析

《黑神话:悟空》作为近年来备受瞩目的国产3A游戏大作,自其发布以来,不仅在游戏界内引起了轰动,更在多个消费领域产生了深远的影响。这款游戏不仅以其卓越的品质和深刻的文化内涵吸引了大量玩家的关注,还通过一系列连锁…

神策埋点 sensorsdata.es6.min.js、sensorsdata.min.js 触发eslint 语法检查,导致打包不成功

问题描述: 在使用神策埋点时,下载的web js sdk,打包时eslint 语法检查,会导致打包不成功。npm start没问题。 主要错误是: Line 1:204272: Expected an assignment or function call and instead saw an expression …

[Python]之深拷贝与浅拷贝

Python之深拷贝与浅拷贝 概述: ​ 大白话解释就是 深拷贝拷贝的多, 浅拷贝拷贝的少. 深浅拷贝区别就是: 拷贝的层级的多与少. 深浅拷贝都能操作可变类型 和 不可变类型, 但是深浅拷贝一般操作的都是 可变类型, 几乎不会出操作不可变类型的. 可变类型 和 不可变类型的划分依…

openssl RSA 密钥(key)、证书签名请求(csr)、证书(cer)的生成和例子

1. RSA 密钥(key)、证书签名请求(csr)、证书(cer)的生成顺序 2. 具体操作 a. 生成 RSA 密钥(私钥) openssl genrsa -aes256 -out ca.key 2048b. 生成证书签名请求(csr) # C-----国家(Country…

Oracle超详细(数据库编程)

目录 一、数据类型 (一)数值型数据类型 (二)字符型数据类型 (三)日期和时间型数据类型 (四)大对象和二进制数据类型 (五)其他数据类型 (六&…

离散余弦变换(Discrete Cosine Transform, DCT),信号去噪

介绍 离散余弦变换(Discrete Cosine Transform, DCT)是一种常用的信号处理工具,特别是在数据压缩、图像处理和模式识别等领域中。DCT的基本思想是将信号从空间域或时间域转换到频率域,以揭示信号中的频率成分。与离散傅里叶变换&…

C/C++网络编程--文件分块传输

文件分块传输是网络编程中一个常见的任务,尤其是在处理大文件时,将文件分块可以提高传输效率,简化错误处理,并可以实现并发传输。下面,写个从客户端向服务器发送大型数据的demo。 客户端 客户端有两点需要注意&#…

vue组件中的数据传递(2)--子组件传父组件

两种情况 子主动传 vue 父传子 子传父实现方式_vue父传子-CSDN博客 vue父子组件传值,父传子,子传父_父传子 且随时变化-CSDN博客 父主动要 Vue2.0的三种常用传值方式、父传子、子传父、非父子组件传值_父传子传-CSDN博客

File Transfer Server 文件传输服务器插件

您需要在本地不同设备之间传输文件吗?现在你可以做到了,你不必安装任何专用服务器。 文件传输服务器为您的游戏或应用程序添加了将文件从任何受支持的平台传输到任何受支持平台的能力。从移动到独立,从移动到移动等(查看支持的平台) 优势: -完整的源代码可用。 -不需要预…

【揭秘心梗元凶】不容忽视的七大生活习惯,竟是心梗“幕后推手”!

在这个快节奏的时代,心梗(急性心肌梗死)这一健康杀手正悄然逼近,威胁着越来越多人的生命安全。心梗不仅发病急骤,后果往往也极为严重。那么,心梗究竟是如何引起的?今天,我们就来揭开…

Leetcode面试经典150题-239.滑动窗口最大值

解法都在代码里,不懂就留言或者私信 官方定级hard难度,其实是medium,确实字节考过 class Solution {public int[] maxSlidingWindow(int[] nums, int k) {if(nums.length 1) {return new int[]{nums[0]};}/**我们要返回的是一个数组&#…