Docker 安装部署与基础操作

2023-11-15

Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到。下面的介绍都针对社区版。

01 Docker 安装

本次安装的操作系统是Ubuntu,并使用Docker仓库进行安装,其他系统的 Docker CE 的安装方式请参考 官方文档

使用Docker仓库进行安装时,在新主机上首次安装 Docker CE 之前,需要设置 Docker 仓库。之后,可以从仓库安装和更新 Docker 。

1.1 设置仓库

首先,更新 apt 包的索引

sudo apt-get update 

安装 apt 依赖包,用于通过HTTPS来获取仓库

 sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

添加 Docker 的官方 GPG 密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

设置稳定版 Docker 仓库

echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

1.2 安装 Docker 引擎

更新 apt 包的索引

sudo apt-get update 

安装 Docker Engine-Community 和 containerd ,两种方法选其一即可

# 安装最新版本
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 安装特定版本
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

测试 Docker 是否安装成功,可以通过查看docker版本或者运行测试demo验证

# 查看已安装docker版本
docker -v      
# 运行 hello-world 测试demo
sudo docker run hello-world

在这里插入图片描述

1.3 配置 Docker

Docker Engine V1.12 之后版本,用户可以自行创建 daemon.json 文件对 Docker Engine 进行配置和调整。要点如下:

  • 该文件作为 Docker Engine 的配置管理文件, 里面几乎涵盖了所有 docker 命令行启动可以配置的参数。
  • 不管是在哪个平台以何种方式启动, Docker 默认都会来这里读取配置。使用户可以统一管理不同系统下的 docker daemon 配置。
  • 相关参数的使用说明,可以参阅 man dockerd 帮助信息,或者参阅官方文档。
  • --config-file选项允许您以JSON格式为守护程序设置任何配置选项。此文件使用与键相同的标志名称,但允许多个条目的标志除外,它使用多个标志名称,例如,labels用于label标志。

配置文件中设置的选项不得与通过flags设置的选项冲突。如果文件和标志之间的选项重复,则docker守护程序无法启动,无论其值如何。我们这样做是为了避免静默忽略配置重新加载中引入的更改。例如,如果在配置文件中设置守护程序标签并且还通过–label标志设置守护程序标签,则守护程序无法启动。守护程序启动时将忽略文件中不存在的选项。

Linux上配置文件的默认位置是 /etc/docker/daemon.json。该–config-file标志可用于指定非默认配置。如下示例为简单配置,详细配置项与含义请参考 官方配置文档

# graph 已废弃,使用data-root代替,这个主要看docker的版本
# "graph": "/data/docker", 
# Docker运行时使用的根路径,根路径下的内容稍后介绍,默认/var/lib/docker
"data-root": "/data/docker", 
# Docker Engine 在 Ubuntu 系统支持 overlay2、aufs、btrfs 三种存储驱动,默认使用 overlay2、
"storage-driver": "overlay2",
# 配置docker的私库地址
"insecure-registries": ["registry.access.redhat.com", "quay.io"],
# 镜像加速的地址,增加后在 docker info中可查看
"registry-mirrors": [],
# Docker 网络,Docker的IP地址配置最好和本地主机IP有映射关系,在出故障时方便找到宿主机,这里将主机地址的后两个数对应到IP网络地址的中间两位
"bip": "172.130.203.0/24",
# 启动Docker的额外参数
"exec-opts": ["native.cgroupdriver=systemd"],
# Docker 容器引擎被杀死时不影响运行在其中的容器运行情况
"live-restore": true

1.4 启动 Docker

先创建docker的数据目录

sudo mkdir -p /data/docker

Docker 需要用户具有 sudo 权限,为了避免每次命令都输入sudo,可以把用户加入 Docker 用户组

sudo usermod -aG docker $USER

启动docker

# 设置开机自启动
systemctl enable docker 
systemctl start docker
# 查看docker状态
docker info

02 Docker 镜像管理

2.1 Docker 拉取镜像的过程

  1. 首先服务器上运行Docker引擎
  2. 本地服务器从Docker远程镜像服务器下载镜像到本地
  3. 本地服务器通过Docker引擎启动镜像的容器实例

2.2 配置镜像加速器

打开配置文件

sudo vim /etc/docker/daemon.json
# 在文件中插入如下内容
{
  "registry-mirrors": ["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com"]
}

重载配置并重新启动Docker

systemctl daemon-reload 
systemctl restart docker

2.3 镜像保存与加载

Docker 管理镜像和管理容器的两组命令的特点:

  • docker save 保存的是镜像(image),docker export 保存的是容器(container);
  • docker load 用来载入镜像包,docker import 用来载入容器包,但两者都会恢复为镜像;
  • docker load 不能对载入的镜像重命名,而 docker import 可以为镜像指定新名称。

保存镜像与加载镜像

# 保存镜像,将镜像打包
docker save spring-boot-docker  -o  /home/wang/docker/spring-boot-docker.tar
# 加载镜像,解压镜像
docker load -i spring-boot-docker.tar

2.4 镜像管理命令

查看镜像列表

docker images

删除镜像

docker rmi -f centos

03 Docker 应用部署

3.1 启动容器

如果docker中没有需要的镜像,使用 docker pull 命令来载入所需镜像

docker pull nginx

使用 run 命令使用镜像启动一个容器

docker run -d -p 80:80 nginx
# 查看端口是否启动成功
netstat -antup | grep 80

run 命令参数说明:

  • -d 后台运行
  • -p 8080:80 端口映射,将容器的80端口映射到物理机的8080端口

3.2 访问容器

正在运行的容器可以使用 exec 命令对其进行访问,访问容器需要指定其 Id 或者名称

(base) ➜  ~ docker ps 
(base) ➜  ~ docker exec -it d5e7b813dcb7 /bin/bash  
root@d5e7b813dcb7:/# 

在这里插入图片描述

exec 参数说明:

  • -i 交互式操作
  • -t 分配一个伪终端
  • container id / container name 指定要访问的容器 id 或者 名称
  • /bin/bash 交互式shell,该参数也可以是 /bin/sh 或者 sh

退出容器 直接执行 exit

3.3 停止容器

停止一个容器的运行可以使用如下命令:

docker stop <container ID>

启动已停止的容器使用如下命令:

# 使用如下命令查看所有容器状态
docker ps -a
# 使用如下命令启动已停止的容器
docker start <container ID>
# 或者
docker restart <container ID>

参考资料

官方文档 在Ubuntu上安装Docker
Docker 入门教程
菜鸟教程 Docker教程
Docker配置文件daemon.json解析

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker 安装部署与基础操作 的相关文章

随机推荐

  • 132_Springboot总是会自动在/tmp/spring.log生成日志文件问题处理

    原因是项目配置文件中有如下引用
  • 2016年蓝桥杯预赛第十题最大比例

    题目 最大比例 X星球的某个大奖赛设了M级奖励 每个级别的奖金是一个正整数 并且 相邻的两个级别间的比例是个固定值 也就是说 所有级别的奖金数构成了一个等比数列 比如 16 24 36 54 其等比值为 3 2 现在 我们随机调查了一些获奖
  • vue 工程从window 到mac

    ERROR in src assets css theme default scss node modules css loader node modules postcss loader lib node modules sass loa
  • 五十三.L1-003 个位数统计

    include
  • 骨骼蒙皮动画(SkinnedMesh)的原理解析(一)

    一 3D模型动画基本原理和分类 3D模型动画的基本原理是让模型中各顶点的位置随时间变化 主要种类有Morph 变形 动画 关节动画和骨骼蒙皮动画 SkinnedMesh 从动画数据的角度来说 三者一般都采用关键帧技术 即只给出关键帧的数据
  • 使用Flutter之后,我们的CPU占用率降了50%

    近年来 移动互联网迅猛发展 业务需求频繁更新 业务内容动态化需求急剧增加 纯原生开发已经无法满足业务快速增长的需求 因此诞生了多种跨平台开发框架 如 H5 原生开发 React Native 和 Weex 但这两年最受开发者青睐的莫过于 F
  • 自己编写chrome插件

    1 首先你需要一个menifest json文件 manifest version 3 name My Extension version 2 0 action default popup popup html default icon i
  • 【python基础】:分类统计各字符的个数

    功能实现 利用python实现统计一个字符串中数字 字母及其他字符的个数和各个字符的总数 方法一 利用 isdigit isalpha 函数判断字符是否是数字或者字母 代码如下 s input 请输入一串字符 num char space
  • How to Change SSH Port on CentOS 7, 8 and 9

    The default SSH service port value is 22 in which case hackers may be able to launch attacks on the server through port
  • 第十章 内部类(上)

    第十章 内部类 上 可以将一个类的定义放在另一个类的定义内部 这就是内部类 内部类是一种非常有用的特性 因为它允许你把一些逻辑相关的类组织在一起 并控制位于内部的类的可视性 然而必须要了解 内部类与组合是完全不同的概念 这一点很重要 在最初
  • QT信号连接信号

    有时候代码可能复杂 我们需要一个信号连接另一个信号 比如例子中的下课不是直接运行时触发的 而是点击下课按钮 include mainwindow h include ui mainwindow h include QPushbutton h
  • linux bmc管理(工作笔记,随时更新)

    ipmi使用 概述 1 修改bmc IP地址 2 修改bmc 用户信息 概述 在日常工作中 对机器bmc配置一般是连接显示器进行相应配置 通过ipmi进行bmc的配置可以实现在系统下进行bmc的配置 从而实现对多台服务器进行bmc的配置 大
  • 记一次umi开发后台管理系统的基础使用

    先介绍一个umi 阿里开源的一个企业级可插拔的react脚手架 umi相对比react官方推荐的脚手架更加的简单 更贴近vue cli的使用感受 而本文仅仅介绍基础使用方法 高手请绕行 开发展示 仿叮咚买菜后台管理系统预览 http din
  • 抖音短视频矩阵号系统开发者开源部署分享(一)

    抖音是一款备受欢迎的短视频APP 拥有数亿的用户 其中包括了大量的粉丝 为了让更多的人能够发现和观看到你的视频 抖音SEO是必不可少的一环 特别是对于拥有企业或个人品牌的用户来说 在这个过程中 抖音SEO源码的开源部署显得尤为重要 首先 我
  • 2022年11月计划(cesium for ue源码抄写+ socket视频学习+ue4 tf视频学习)

    根据规划 进行cesium for ue源码抄写 网络视频教程 ue4 tf1视频学习
  • VSCode SFTP 文件同步配置中监听文件删除或新增包含子目录的文件 watcher配置

    name aaaaa host 321312321 protocol sftp port 22 username 123321 password 123321 remotePath www wwwroot web uploadOnSave
  • 关于Geany编写python中文注释时报错的解决办法

    关于Geany编写python中文注释时报错的解决办法 其实这个方法很简单 首先打开Geany 新建或者打开一python文件 然后在 文档 中选择 设置文件编码 的 Unicode 里面的 UTF 8 就好了 注意 这种方只能在你所正在编
  • EXCEL 怎么用函数公式计数(Excel函数去重计数 / 去除重复项),不使用透视表

    起因 因领导层需要将电商平台利润核算自动化 原始数据不可以动 所以需要用到公式 PS 其实所谓自动化不是Python VBA办公自动化 就是嵌套一堆公式 然后每月更新电商后台基础数据 就可以出来利润结果 正文 普通方法1 直接使用 SUM
  • RHEL6 系统启动故障排错

    RHEL6 系统排错 系统故障了 机器无法正常工作 更别提正常提供服务 这个时候如果我们掌握了系统排错 那就大有用武之地了 我们在学习和实验阶段 可以通过系统排错帮助大家更深入了解系统启动过程 对系统进行如下破坏 1 破坏grub引导 dd
  • Docker 安装部署与基础操作

    Docker 是一个开源的商业产品 有两个版本 社区版 Community Edition 缩写为 CE 和企业版 Enterprise Edition 缩写为 EE 企业版包含了一些收费服务 个人开发者一般用不到 下面的介绍都针对社区版