Docker配置及简单应用

谈论/理解 Docker 的常用核心部分,以下皆在 Ubuntu 操作系统下进行

1 国内源安装 Docker-ce

1.1 配置 Linux 内核流量转发

因为docker和宿主机的端口映射,本质是内核的流量转发功能,所以要对其进行配置

1.1.1 未配置流量转发

如果没有配置流量转发的话,复制一下代码即可配置

$ cat <<EOF >  /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
EOF
# 加载内核防火墙模块,允许流量转发
# 加载内核防火墙功能参数1
[root@docker-01 ~]#modprobe br_netfilter

#  确认有记录,就是开启了这个流量转发功能
[root@docker-01 ~]#lsmod|grep netfilter
br_netfilter           22256  0 
bridge                146976  1 br_netfilter

# nginx优化参数
#对内核tcp参数优化
# 增加默认tcp链接数等参数修改
[root@docker-01 ~]#sysctl -p /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1  # iptables的forward转发功能就没用了

1.2 配置国内源

因为下载之后我们一直都是用的国外的,没有梯子的话很慢,所以我们将配置 docker 镜像源,我一般是用阿里的

# 基础环境配置
# 把 docker 内置的一些工具包给删掉,一般不用他们
yum remove docker docker-common docker-selinux docker-engine
# 安装 yum 的一些工具包
yum install yum-utils device-mapper-persistent-data lvm2

# 2 配置yum源
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo

# 3 修改参数,将 Docker CE 的 yum 仓库地址从默认的 Docker 仓库更改为清华大学开源软件镜像站的仓库
sed -i 's#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#g'  /etc/yum.repos.d/docker-ce.repo
# 4 使用更新后的仓库地址,生成一个缓存,以便 yum 可以快速查找和安装软件包
yum makecache fast

# 5 安装docker-ce  社区版,免费版 docker
yum install docker-ce -y

# 6 启动
systemctl start docker

# 7 查看docker服务端进程
ps -ef|grep docker 
# 7.1 检查docker版本
[root@docker-01 ~]#docker version
Client: Docker Engine - Community
 Version:           20.10.17
 API version:       1.41
 Go version:        go1.17.11
 Git commit:        100c701
 Built:             Mon Jun  6 23:05:12 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true


Server: Docker Engine - Community
 Engine:
  Version:          20.10.17
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.11
  Git commit:       a89b842
  Built:            Mon Jun  6 23:03:33 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.8
  GitCommit:        9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

# 8 默认
docker pull 默认是在国外站点下载, 太慢
可以在 https://hub.docker.com/  #注册,然后,就会有账号密码,里面管理你自己的私有镜像。

# 解决下载太慢问题
# 方案1,执行如下脚本即可
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
========================================================================
# 方案2,用你自己的 阿里云镜像加速器
https://cr.console.aliyun.com/cn-beijing/instances/mirrors
# 在上面网址中可以登陆自己的阿里云账户,里面有配置方法

# 配置docker镜像下载加速器(去获取你自己的阿里云镜像站,别用别人的)
# 常见玩法
[root@docker-01 ~]#cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://m9gdlx6x.mirror.aliyuncs.com"]
}

目前遇到一个问题,配置源之后还是拉不到镜像,拉取超时,目前还在排查中,出了结果将在此进行更新,目前拉取不到镜像建议翻个墙

1.3 启动一个容器

简单操作走一走

# 启动一个nginx测试
# 容器,镜像的关系 
# 镜像()
# 1.  搜索官网镜像
# docker search  镜像名:镜像版本    # 语法
docker search nginx  # 默认最新版本 nginx:latest

# 2. 下载官网镜像
# 语法
# docker  pull 镜像名:tag  版本
docker  pull  nginx:latest 

# 下载过程,你会发现,拆开,一层一层下载的?为什么?镜像原理,分层原理
[root@docker-01 ~]#docker pull nginx 
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete 
a9edb18cadd1: Pull complete 
589b7251471a: Pull complete 
186b1aaa4aa6: Pull complete 
b4df32aa5a72: Pull complete 
a0bcbecc962e: Pull complete 
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

3. 运行官网镜像
# 端口映射,你才能访问到容器内的东西
# -p 28877:80   将宿主机的28877流量转发给容器内目标端口  80端口
# -d 后台运行docker实例进程,不加试试
docker run -d   -p 28877:80      nginx

4. 运行容器后,会发挥当前创建的一个容器id记录号,你可以去管理它
[root@docker-01 ~]#docker run -d   -p 28877:80      nginx
f7bffe1c1854ec3c6c3c1d64a22d97a69414e07b5774bf44da494c219e231085

5.查看运行的容器进程列表
docker ps 

2 Docker 网络流量走向

简单点来说,在上面,我们创建了一个容器,同时对其端口进行映射,我们在本地访问这个端口时,流量将进行转发至docker内部的80端口进行访问

3 容器进程详解

# 检查这个nginx 容器进程的信息 
(base) root@iZ0jlclobhru3bgbp34p4tZ:~# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS        PORTS                                     NAMES
3dc1ca333102   nginx     "/docker-entrypoint.…"   21 hours ago   Up 21 hours   0.0.0.0:22888->80/tcp, :::22888->80/tcp   silly_shamir
# 容器进程,说白了,宿主机上的一个进程(被docker进程所管理的程序)

我们可以查看到进程如下:
在这里插入图片描述

[root@docker-200 ~]#ps -ef
# 这段信息,证明,容器进程,创建了容器的信息,以及名称空间,以及网络空间等
/usr/bin/containerd-shim-runc-v2
-namespace moby
-id 3dc1ca3331029f8dc5e00327151718cf1f1ba9cb1e9dd4522fbca5e97655459d
-address 

root     1061329       1  0 Nov07 ?        00:00:02 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 3dc1ca3331029f8dc5e00327151718cf1f1ba9cb1e9dd4522fbca5e97655459d -address /run/containerd/container
root     1061352 1061329  0 Nov07 ?        00:00:00 nginx: master process nginx -g daemon off;
root      15180  15122  0 11:45 pts/0    00:00:00 grep --color=auto 13916

# 停止容器进程试试
(base) root@iZ0jlclobhru3bgbp34p4tZ:~# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS        PORTS                                     NAMES
3dc1ca333102   nginx     "/docker-entrypoint.…"   22 hours ago   Up 22 hours   0.0.0.0:22888->80/tcp, :::22888->80/tcp   silly_shamir


# 你可以直接基于 容器id,完整,或者最少3位,或者容器名去管理
(base) root@iZ0jlclobhru3bgbp34p4tZ:~# docker stop 3dc
3dc
# 三选一都行
#docker stop 3dc  3dc1ca333102  silly_shamir 

(base) root@iZ0jlclobhru3bgbp34p4tZ:~# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

# docker 容器挂掉后,数据会丢失吗?(这个容器记录是否还在,是否被删除)
#答案: 不会丢,具体要看 docker ps -a 是否还能查询到该容器记录

#查看所有的容器记录,详细信息
(base) root@iZ0jlclobhru3bgbp34p4tZ:~# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS                      PORTS     NAMES
3dc1ca333102   nginx     "/docker-entrypoint.…"   22 hours ago   Exited (0) 54 seconds ago             silly_shamir
# 再次启动该容器

以上是关于docker的一个简单的下载配置和应用,细节我们下一节开始讲解

乾坤未定,你我皆牛马

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端请求后端php接口跨域 cors问题

只需要后端在网站的入口文件 一般都是 index.php 加上 这几行代码就可以了 具体的参数可以根据需要去修改 header("Access-Control-Allow-Origin: *"); header(Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS); header(Access-Control-Allow-Heade…

Qt(程序打包)

Qt开发的程序最终都是要给用户使用的&#xff0c;用户的电脑上不可能装一个Qt的开发环境导入项目使用。因此项目项目开发完成后需要打包——制作成安装包&#xff0c;用户直接下载并安装即可使用。 1. 设置图标 设置图标的操作步骤如下&#xff1a; 1. 准备好图标文件&#xff…

LLM - 使用 LLaMA-Factory 微调大模型 Qwen2-VL SFT(LoRA) 图像数据集 教程 (2)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/143725947 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 LLaMA-…

HDLBIts习题(3):使用冒号表示位宽时,冒号两端必须是常量

&#xff08;1&#xff09;易错习题1&#xff1a;Circuits - Combinational Logic - Multiplexers - 256-to-1 4bit multiplexer 使用冒号表示位宽时&#xff0c;冒号两端必须是常量&#xff0c;因此如果使用变量&#xff0c;可以使用位拼接的方法。 &#xff08;2&#xff09;…

人工智能助手是否让程序员技能退化?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

shell排序

任务描述 本关任务&#xff1a;实现shell排序算法&#xff0c;void ShellSort(int R[],int N,int d[],int t)。 相关知识 基本思想&#xff1a;对待排记录序列先作“宏观”调整&#xff0c;再作“微观”调整&#xff0c;它是由Donald.L.Shell在1959年提出来的。 所谓“宏观”…

C/C++中的结构体和联合体

c语言中为我们提供了几种基本数据类型&#xff0c;但是在实际编程中&#xff0c;有时候要表达复杂数据关系时&#xff0c;单单使用基本数据类型不能很好的表示&#xff0c;为了解决这种问题&#xff0c;可以自己构建一个结构体数据类型&#xff0c;定义的结构体数据类型与基本数…

MIT 6.S081 Lab1: Xv6 and Unix utilities翻译

Lab1: Xv6 and Unix utilities 文章目录 Lab1: Xv6 and Unix utilities实验任务启动xv6(难度&#xff1a;Easy)sleep(难度&#xff1a;Easy)pingpong&#xff08;难度&#xff1a;Easy&#xff09;Primes(素数&#xff0c;难度&#xff1a;Moderate/Hard)find&#xff08;难度&…

MySQL 如何用C语言连接

✨✨✨励志成为超级技术宅 ✨✨✨ 本文主要讲解在Linux服务器上&#xff0c;如何使用c语言MySQL库的接口来对MySQL数据库进行操作&#xff0c;如果没有服务器安装MySQL&#xff0c;也可以先学学看怎么用c语言mysql库的接口&#xff0c;还是比较容易的了。(●☌◡☌●)。那么开…

雨晨 24H2 Windows 11 IoT ltsc 2024 IE 极简版 26100.2222

文件: 雨晨 24H2 Windows 11 IoT ltsc 2024 IE 极简版 26100.2222 install.wim 大小: 1737837354 字节 修改时间: 2024年11月12日, 星期二, 12:41:56 MD5: 3511B5416EA18DD4AD2D75F133C49E25 SHA1: 817E4DF1F58AA5A584E5D9263F282C1D20533969 CRC32: EB1C1B7B 简述&#xff1a…

丹摩征文活动|FLUX.1+ComfyUI的详细部署以及实验总结

公主请阅 1. FLUX.1的简介2. 部署过程创建资源ComfyUI的部署操作部署FLUX.1 如何使用&#xff1f;实验总结&#xff1a;环境搭建与工具安装实验步骤实验结果分析总结 1. FLUX.1的简介 FLUX.1 是由黑森林实验室开发的图像生成工具&#xff0c;分为三个版本&#xff1a; FLUX-1-…

【电力系统】永磁同步电机调速系统带有扰动观测器

【电力系统】永磁同步电机调速系统带有扰动观测器( DOB)的最优滑模控制、改进补偿滑模控制、传统滑模、PID控制研究 摘要 本文研究了永磁同步电机&#xff08;PMSM&#xff09;调速系统中的不同控制策略&#xff0c;包括最优滑模控制、改进补偿滑模控制、传统滑模控制以及PID控…

手动实现h5移动端点击全屏按钮横屏展示图片,左右滑动切换,处理页面会随着手指滑动问题

页面提供全屏按钮,全屏展示的容器 <div class"container"><button click"openSwiper">点击全屏查看</button><!-- 大图 --><divclass"full"v-if"showSwiper"touchstart"handleTouchStart"touch…

RHEL 网络配置(Linux网络服务器 09)

0 引入 对于Linux系统的网络管理员来说&#xff0c;掌握Linux服务器的网络配置是至关重要的&#xff0c;同时管理远程主机也是网络管理员必须掌握的。这些是后续网络服务配置的基础。 本文&#xff0c;我们讲解如何使用nmtui命令配置网络参数&#xff0c;以及通过nmtui命令查…

【Qt】Macbook M1下载安装

文章目录 一、下载Xcode命令行工具二、在Cion中配置编译器三、安装Qt四、配置qmake环境五、创建Qt项目 博主已经下载了Clion&#xff0c;所以本文是将qt配置到Clion上 本博客所写的教程有一定的问题&#xff0c;因为我在官网下载后发现有一些所需的包是没有的&#xff0c;不知道…

UE5 样条线组件(未完待续)

按点生成模型 按距离生成 spline mesh 可缩放spline mesh

Linux(CentOS)项目总结(前后端分离)

项目情况&#xff1a; 前端开发&#xff1a;vue3 vite ts VSCode后端开发&#xff1a;JDK17 Spring Boot 3 Mybatis Maven IDEA数据库&#xff1a;MySQL8.4.3 SQLyog代码管理&#xff1a;Git虚拟环境&#xff1a;VMware远程登录&#xff1a;FinalShell服务器操作系统&…

【C++】 C++游戏设计---五子棋小游戏

1. 游戏介绍 一个简单的 C 五子棋小游戏 1.1 游戏规则&#xff1a; 双人轮流输入下入点坐标横竖撇捺先成五子连线者胜同一坐标点不允许重复输入 1.2 初始化与游戏界面 初始化界面 X 输入坐标后 O 输入坐标后 X 先达到胜出条件 2. 源代码 #include <iostream> #i…

A算法详解(go实现)

A*算法详解&#xff08;go实现&#xff09; 推荐一位大佬的文章&#xff0c;建议可以去看看https://hogwartsrico.github.io/2016/03/11/AStarPathFinding/index.html 下面贴出来文章中用于举例的网站&#xff1a; https://anvaka.github.io/ngraph.path.demo/#?graphamste…

丹摩征文活动 | 0基础带你上手经典目标检测模型 Faster-Rcnn

文章目录 &#x1f34b;1 引言&#x1f34b;2 平台优势&#x1f34b;3 丹摩平台服务器配置教程&#x1f34b;4 实操案例&#xff08; Faster-rcnn 项目&#xff09;&#x1f34b;4.1 文件处理&#x1f34b;4.2 环境配置&#x1f34b;4.3 训练模型&#x1f34b;4.4 数据保存并导…