首页
统计
友联
直播
更多
壁纸
关于
推荐
百度一下
Search
1
测试
6 阅读
2
ubuntu系统在原分区上使用LVM扩容
5 阅读
3
欢迎使用 Typecho
4 阅读
4
Docker部署
4 阅读
5
Hello World
4 阅读
默认分类
docker
技术杂谈
Typecho
linux
登录
/
注册
Search
标签搜索
docker
Gps's blog
累计撰写
9
篇文章
累计收到
0
条评论
首页
栏目
默认分类
docker
技术杂谈
Typecho
linux
页面
统计
友联
直播
壁纸
关于
推荐
百度一下
搜索到
9
篇与
的结果
2025-12-12
测试
{lamp/}测试测试{lamp/}
2025年12月12日
6 阅读
0 评论
0 点赞
2025-08-08
ubuntu系统在原分区上使用LVM扩容
ubuntu系统在原分区上使用LVM扩容场景:ubuntu系统中已经挂载好硬盘A(300GB)也做好分区,需要将新硬盘 3(20GB)扩容到/var/skyguard挂载点的详细操作步骤如下:步骤1:确认新硬盘设备名称首先需要确认新增硬盘的设备名(我在这里是/dev/sdc):root@UCSS:/home/ts# fdisk -l Disk /dev/sdc: 20 GiB, 21474836480 bytes, 41943040 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes步骤2:初始化新硬盘为物理卷(PV)将新硬盘/dev/sdc初始化为LVM物理卷:root@UCSS:/home/ts# pvcreate /dev/sdc WARNING: dos signature detected on /dev/sdc at offset 510. Wipe it? [y/n]: y Wiping dos signature on /dev/sdc. Physical volume "/dev/sdc" successfully created.步骤3:将新PV加入现有卷组(VG)确认现有卷组(VG)名称root@UCSS:/home/ts# vgs VG #PV #LV #SN Attr VSize VFree sgapp-vg 3 5 0 wz--n- 329.27g 0将/dev/sdc加入目标卷组sgapp-vg:root@UCSS:/home/ts# vgextend sgapp-vg /dev/sdc Volume group "sgapp-vg" successfully extended步骤4:确认卷组可用空间检查卷组sgapp-vg的空闲空间(应显示新增的10GB):root@UCSS:/home/ts# vgdisplay sgapp-vg --- Volume group --- VG Name sgapp-vg System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 9 VG Access read/write VG Status resizable MAX LV 0 Cur LV 5 Open LV 5 Max PV 0 Cur PV 3 Act PV 3 VG Size 329.27 GiB PE Size 4.00 MiB Total PE 84294 Alloc PE / Size 79175 / <309.28 GiB Free PE / Size 5119 / <20.00 GiB #确认有10G空闲空间 VG UUID teeb69-5xEU-qsQ1-5Tkf-vqFI-a5c0-yvDBoP步骤5:扩展逻辑卷(LV)将空闲空间全部分配给逻辑卷lv_data:root@UCSS:/home/ts# lvextend -l +100%FREE /dev/sgapp-vg/lv_data Size of logical volume sgapp-vg/lv_data changed from 80.18 GiB (20527 extents) to <100.18 GiB (25646 extents). Logical volume sgapp-vg/lv_data successfully resized.步骤6:扩展文件系统根据文件系统类型扩展(Ubuntu默认多为ext4,若为xfs需用xfs_growfs):确认/var/skyguard挂载点使用的文件系统类型,通过以下命令:root@UCSS:/home/ts# df -Th /var/skyguard/ Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/sgapp--vg-lv_data xfs 81G 3.9G 97G 4% /var/skyguard这里 Type 显示是 xfs 的 文件类型挂载文件系统类型root@UCSS:/home/ts# xfs_growfs /var/skyguard/ meta-data=/dev/mapper/sgapp--vg-lv_data isize=512 agcount=6, agsize=4599808 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1 spinodes=0 rmapbt=0 = reflink=0 data = bsize=4096 blocks=26261504, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=8984, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0#若为 Type 的回显为 ext2/3/4 的文件系统类型 #挂载文件系统类型则用改命令 root@UCSS:/home/ts# resize2fs /var/skyguard/步骤7:验证扩容结果检查/var/skyguard的可用空间:root@UCSS:/home/ts# df -Th /var/skyguard/ Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/sgapp--vg-lv_data xfs 101G 4.0G 97G 4% /var/skyguard(显示总容量增加了 20GB,即从 81GB变为 101GB左右)注意事项:操作前确保/var/skyguard无重要进程占用,建议先停止相关服务。若扩容失败,检查步骤是否遗漏或设备名是否正确(避免误操作/dev/sda)。xfs文件系统必须在挂载状态下扩展,ext4支持在线/离线扩展。问题答疑:问题1:扩容后是否重启服务器在 LVM 扩容并使用 xfs_growfs(针对 XFS 文件系统)完成操作后,不需要重启服务器。原因说明:LVM 的动态性:LVM(逻辑卷管理)本身支持在线操作,物理卷(PV)、卷组(VG)、逻辑卷(LV)的扩展都可以在系统运行时完成,无需重启。XFS 文件系统的在线扩展:xfs_growfs 命令专门用于在 XFS 文件系统挂载状态下动态扩展空间,操作完成后立即生效,无需卸载或重启。验证方式:直接通过 df -Th /var/skyguard 命令查看空间变化,确认容量已增加即可,无需额外操作。问题2:当执行 pvcreate /dev/sdc 出现 Device /dev/sdc excluded by a filter 错误通常是由于硬盘存在残留分区表、LVM 过滤规则或其他元数据导致的。以下是具体解决步骤:步骤1:检查硬盘是否有残留分区表使用 fdisk 查看硬盘是否存在分区信息:root@UCSS:/home/ts# fdisk -l /dev/sda Disk /dev/sda: 300 GiB, 322122547200 bytes, 629145600 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 17B4715A-17E7-4EC7-A353-C9E68E21D1D8 Device Start End Sectors Size Type /dev/sda1 2048 4095 2048 1M BIOS boot /dev/sda2 4096 1503231 1499136 732M Linux filesystem /dev/sda3 1503232 629143551 627640320 299.3G Linux LVM步骤2:清除硬盘分区表(若有残留)若存在分区,先删除所有分区:root@UCSS:/home/ts# fdisk /dev/sdc在 fdisk 交互界面中执行:输入 d(删除分区),若有多个分区,重复删除直到所有分区被清除。输入 w(保存修改)。步骤3:强制清除LVM元数据(若仍报错)若硬盘曾被用作LVM物理卷,可能残留元数据,需强制清除:sudo pvcreate --force --yes /dev/sdb预期回显:Physical volume "/dev/sdb" successfully created.步骤4:检查LVM过滤规则(极端情况)若以上步骤无效,可能是 /etc/lvm/lvm.conf 中的过滤规则排除了 /dev/sdb:查看过滤配置:grep "filter =" /etc/lvm/lvm.conf若发现 filter 中包含排除 /dev/sdb 的规则(如 r|/dev/sdb|),需注释或修改该规则,然后重启 lvm2 服务:sudo systemctl restart lvm2后续操作解决后,可继续执行原步骤3及后续操作:sudo vgextend sgapp-vg /dev/sdb # 将新PV加入卷组注意:操作前确保 /dev/sdb 是目标新硬盘,避免误操作其他设备。问题3:当出现WARNING: dos signature detected on /dev/sdb at offset 510. Wipe it? [y/n]: 提示时,怎么选择呢?应该输入 y 并回车。原因说明:这个提示表示 /dev/sdb 硬盘上检测到了 DOS分区表签名(通常是旧的分区表残留信息)。这些残留信息可能会干扰LVM对硬盘的识别,导致后续操作失败(如 pvcreate 无法正常创建物理卷)。操作及预期结果:输入 y 后,系统会清除残留的DOS签名,确保硬盘被干净地初始化为LVM物理卷:WARNING: dos signature detected on /dev/sdb at offset 510. Wipe it? [y/n]: y Wiped dos signature on /dev/sdb. Physical volume "/dev/sdb" successfully created.后续步骤:清除签名后,即可继续执行将新PV加入卷组的操作:sudo vgextend sgapp-vg /dev/sdb这一步是安全的,不会影响硬盘本身的可用空间,只会清除影响LVM识别的残留元数据。
2025年08月08日
5 阅读
0 评论
0 点赞
2025-08-05
Dockerfile
什么是 Dockerfile?Dockerfile 是 Docker 用于构建镜像的文本配置文件,定义了镜像的构建步骤和环境配置,包含了构建 Docker 镜像的所有指令。使用 Dockerfile 定制镜像下面定制一个 nginx 镜像为例,构建好的镜像内会有一个/usr/share/nginx/html/index.html 的文件。创建 Dockerfile在一个空目录下,新建一个名为 Dockerfile 的文件,并在文件内添加 以下 内容。[root@lavm-5wutyiasaf gps]# vim Dockerfile [root@lavm-5wutyiasaf gps]# cat Dockerfile From nginx RUN echo "这是一个本地构建的nginx镜像" > /usr/share/nginx/html/index.html基本命令说明:FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制所需要的基础原始镜像。RUN:用于执行后面跟着的命令行命令。注:Dockerfile 的指令每执行一次都会在 Docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。例如,下面的写法会创建 3 层镜像:[root@lavm-5wutyiasaf gps]# cat Dockerfle FROM centos RUN yum -y install wget RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" RUN tar -xvf redis.tar.gz构建镜像在 Dockerfile 文件存放目录下,执行构建动作:[root@lavm-5wutyiasaf gps]# ls 1.txt Dockerfile [root@lavm-5wutyiasaf gps]# docker build -f Dockerfile -t nginx:1 .参数说明:-f:指定文件名。Dockerfile 必须以大写 D 开头命名为 Dockerfile,除非使用-f 参数指定其他文件名。-t:参数用于 指定镜像名称和标签。.:最后的点表示构建上下文路径。注意:上下文路径不要放无用的文件,因为 会一起打包发送给 Docker 引擎,如果文件过多会造成 构建过程缓慢。Dockerfile 指令详解指令说明示例关键细节FROM指定基础镜像,用于后续的指令构FROM ubuntu:22.04必须为第一条指令(ARG 除外)MAINTAINER指定 Dockerfile 的作者/维护者(已弃用,推荐使用 LABEL)MAINTAINER gps作用与 LABEL 指令类似,用于镜像添加作者、维护者、联系方式等元数据;仅限于指定维护者信息。LABEL添加镜像的元数据,使用键值对的形式LABEL version="1.0"比 MAINTAINER 更有广泛的用途,可以用来 添加更多类型的元数据信息,RUN在构建过程中在镜像中执行命令RUN apt-get update && apt-get install -y nginx合并命令可减少层数CMD指定容器创建时的默认命令(可以被覆盖)Shell 格式:CMD python app.pyExec 格式:CMD ["python","app.py"]一个 Dockerfile 里 只能包含一个 CMD 指令,如果有多个,只有最后一个 CMD 指令会 生效。ENTRYPOINT设置容器创建时的主要命令(不可被覆盖)ENTRYPOINT ["echo","hello"]该指令会在容器启动时始终执行,无论是否指定了其他命令,都不会被覆盖,而是作为容器的主要执行命令 。EXPOSE声明容器运行时监听的特定网络端口EXPOSE 80 ENV在容器内部设置环境变量ENV MY_NAME gpsENV APP_HOME /app容器启动时环境变量是 ENV 指定的值,运行时可通过 docker run 明的-e 选项还覆盖环境变量的值。ADD将文件、目录或远程URL复制到镜像中ADD app.py /app/ADD src/ /app/ADD https://example.com/file.tar.gz /tmp/ADD app.tar.gz /app/它类似于COPY指令,但在功能上更强大,除了复制文件和目录 ,该指令还 支持 自动解压缩。COPY将文件或目录复制到镜像中COPY app.py /app/COPY src/ /app/它不支持自动解压缩功能,与ADD指令相比,功能更简单明确。VOLUME为容器创建挂载点或声明卷单个目录:VOLUME ["/data"]多个目录:VOLUME ["/data","/var/log"] WORKDIR设置后续指令的工作目录WORKDIR /app USER指定后续指令的用户上下文USER myuser容器运行时,进程将以 myuser 用户的身份运行,而不是以 root 用户身份。ARG定义构建过程中的变量ARG MY_ENV=productionENV ENVIRONMENT=$MY_ENV ONBUILD当镜像被用作另一个构建过程的基础时,添加触发器
2025年08月05日
4 阅读
0 评论
0 点赞
2025-07-02
Docker 镜像使用
当容器运行时,使用的镜像如果在本地中不存在,Docker 就会自动从 Docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像资源下载。列出镜像列表我们可以使用 docker images 来列出本地主机上的所有镜像[root@lavm-5wutyiasaf ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test/ubuntu v2 3e987db64805 26 hours ago 77.9MB test/ubuntu v1 906851c5bf30 26 hours ago 77.9MB ubuntu 22.04 b103ac8bf22e 13 days ago 77.9MB ubuntu latest bf16bdcff9c9 2 weeks ago 78.1MB nginx latest 1e5f3c5b981a 8 weeks ago 192MB mysql 8.0 355bbda86f66 8 weeks ago 772MB hello-world latest 74cc54e27dc4 4 months ago 10.1kB dko0/lsky-pro latest c89f58b471b2 2 years ago 838MB centos latest 5d0da3dc9764 3 years ago 231MB参数说明:REPOSITORY:表示镜像的仓库源TAG:镜像的标签IMAGE ID:镜像 IDCREATED:镜像创建时间SIZE:镜像大小关于标签同一仓库源可以有多个 TAG,代表这个仓库源的不同版本,如 ubuntu 的仓库源里,有 22.04、有 15.10,我们使用 REPOSITORY:TAG 来定义不同的镜像。使用指定版本的镜像,例如 ubuntu 15.10[root@lavm-5wutyiasaf ~]# docker run -it --name 15.10ubuntu ubuntu:15.10 /bin/bash Unable to find image 'ubuntu:15.10' locally 15.10: Pulling from library/ubuntu 7dcf5a444392: Pull complete 759aa75f3cee: Pull complete 3fa871dc8a2b: Pull complete 224c42ae46e7: Pull complete Digest: sha256:02521a2d079595241c6793b2044f02eecf294034f31d6e235ac4b2b54ffc41f3 Status: Downloaded newer image for ubuntu:15.10 root@355aaeb6bcfa:/#参数说明-i:交互式操作-t:终端--name 15.10ubuntu:容器命名为 15.10ubuntuubuntu:15.10 :指定 ubuntu 15.10 版本镜像为基础来运行容器/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash获取新的镜像当我们在本地主机上使用一个不存在的镜像时,Docker 就会自动下载这个镜像。如果想预先下载的话可以使用 docker pull命令来下载。[root@lavm-5wutyiasaf ~]# docker pull httpd Using default tag: latest latest: Pulling from library/httpd dad67da3f26b: Already exists d0a755bf09a1: Pull complete 4f4fb700ef54: Pull complete be5c5a616c3a: Pull complete d1042d58e186: Pull complete c06cec1379c2: Pull complete Digest: sha256:f6557a77ee2f16c50a5ccbb2564a3fd56087da311bf69a160d43f73b23d3af2d Status: Downloaded newer image for httpd:latest docker.io/library/httpd:latest查找镜像可以从 Docker Hub 官网上搜索我们想找的镜像如图所示删除镜像镜像删除使用 docker rmi 命令,比如[root@lavm-5wutyiasaf ~]# docker rmi test/ubuntu:v2 Untagged: test/ubuntu:v2 Deleted: sha256:3e987db64805f8dc339715d3ab86fbb5292b20a6d86d54bf36aab37110581035创建镜像当我们从 docker 镜像仓库中下载的镜像已经无法满足我们的需求时,我们可以通过以下两种方式对镜像进项更改。1、 从已经创建的容器中更新镜像,并且提交这个镜像。2、使用 Dockerfile 指令来创建一个新的镜像。更新镜像更新镜像之前,我们需要使用镜像来创建一个容器:[root@lavm-5wutyiasaf ~]# docker run -i -t --name gpsubuntu ubuntu:22.04 /bin/bash root@b5725b3366a8:/# apt-get update root@b5725b3366a8:/# apt-get upgrade -y root@b5725b3366a8:/# exit完成操作之后我们可以用 docker commit 来提交容器副本:[root@lavm-5wutyiasaf ~]# docker commit -m="update ubuntu" -a="root" b5725b3366a8 root/ubuntu:v3 sha256:c6f36ed0bdfe94da595738b153ef554e544786e59645d04b054dd0fbbb96a8dc参数说明:-m:提交的描述信息-a:指定镜像作者b5725b3366a8:容器 IDroot/ubuntu:v3:指定要创建的目标镜像名构建镜像我们使用命令 docker build,从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfle 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。[root@lavm-5wutyiasaf ~]# mkdir -p /my-docker-images [root@lavm-5wutyiasaf ~]# cd /my-docker-images/ [root@lavm-5wutyiasaf my-docker-images]# ls [root@lavm-5wutyiasaf my-docker-images]# vim Dockerfile [root@lavm-5wutyiasaf my-docker-images]# cat Dockerfile FROM centos:6.7 MAINTAINER Fisher "fisher@sudops.com" RUN /bin/echo 'root:123456' | chpasswd RUN useradd sean RUN /bin/echo 'sean:123456' | chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" > /etc/default/local EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D [root@lavm-5wutyiasaf my-docker-images]#Dockerfile 参数说明:FROM centos:6.7:指定基础镜像(且必须是第一条指令)MAINTAINER Fisher:标注镜像维护者信息。RUN:RUN 指令告诉 Docker 在镜像内执行命令。EXPOSE:声明(但不强制开放)容器需要开放的端口,供运行时用-p 或--expose做映射。CMD:指定容器启动后的默认命令。使用 docker build 命令构建镜像:[root@lavm-5wutyiasaf my-docker-images]# docker build -t sean/centos:latest . [+] Building 1.4s (9/9) FINISHED docker:default => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 297B 0.0s => [internal] load metadata for docker.io/library/centos:latest 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [1/5] FROM docker.io/library/centos:latest 0.0s => [2/5] RUN /bin/echo 'root:123456' | chpasswd 0.3s => [3/5] RUN useradd sean 0.3s => [4/5] RUN /bin/echo 'sean:123456' | chpasswd 0.2s => [5/5] RUN /bin/echo -e "LANG="en_US.UTF-8"" > /etc/default/local 0.3s => exporting to image 0.1s => => exporting layers 0.1s => => writing image sha256:e9e69b3c803280a0ee538532fbbe96a89f79f7358466011659a4c4240f7a1d05 0.0s => => naming to docker.io/sean/centos:latest参数说明:-t:指定要创建的目标镜像.:Dockerfile 文件所在目录,可以指定绝对路径,也可以用.来表示当前路径设置镜像标签我们可以使用 docker tag 命令,为镜像添加一个新的标签:镜像名和标签自定义修改标签:语法:docker tag [OPTIONS] SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]参数说明:[OPTIONS] SOURCE_IMAGE[:TAG]: 你想打标签的原始镜像(可以用镜像名或镜像ID)。 TARGET_IMAGE[:TAG]: 你想赋予的新镜像名和标签。 [:TAG]:标签是可选的,不指定默认是 latest。# 使用镜像名和标签自定义修改标签 [root@lavm-5wutyiasaf ~]# docker tag sean/centos:latest seann/centos:6.7 [root@lavm-5wutyiasaf ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE sean/centos latest e9e69b3c8032 25 hours ago 232MB seann/centos 6.7 e9e69b3c8032 25 hours ago 232MB# 使用镜像ID自定义修改标签 [root@lavm-5wutyiasaf ~]# docker tag e9e69b3c8032 my/centos:6.8 [root@lavm-5wutyiasaf ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE my/centos 6.8 e9e69b3c8032 25 hours ago 232MB sean/centos latest e9e69b3c8032 25 hours ago 232MB seann/centos 6.7 e9e69b3c8032 25 hours ago 232MB
2025年07月02日
2 阅读
0 评论
0 点赞
2025-06-13
Docker容器操作
1、基本概念镜像(Image)容器的静态模板,包含了应用程序运行所需的所有依赖和文件。容器(Container)镜象是一个运行实例,具有自己的文件系统、进程、网络等,且时动态的。容器在镜像启动,并在运行时保持可变。2、常用命令命令功能实例docker run启动一个新的容器并运行命令docker run -d ubuntudocker ps列出当前正在运行的容器docker psdocker ps -a列出所有容器docker ps -a3、容器操作获取镜像如果本地没有所需要的镜像,可以使用 "docker pull" 命令从Docker Hub上下载[root@lavm-5wutyiasaf ~]# docker pull ubuntu:22.04 22.04: Pulling from library/ubuntu 89dc6ea4eae2: Pull complete Digest: sha256:01a3ee0b5e413cefaaffc6abe68c9c37879ae3cced56a8e088b1649e5b269eee Status: Downloaded newer image for ubuntu:22.04 docker.io/library/ubuntu:22.04 [root@lavm-5wutyiasaf ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 22.04 b103ac8bf22e 12 days ago 77.9MB启动容器使用ubuntu启动一个交互式容器[root@lavm-5wutyiasaf ~]# docker run -it ubuntu:22.04 /bin/bash root@3f6a11edb0e6:/# root@3f6a11edb0e6:/# 参数说明-i: 交互式操作-t:终端/bin/bash:容器启动后执行的命令后台运行使用-d参数让容器在后台运行[root@lavm-5wutyiasaf ~]# docker run -d --name test-ubuntu ubuntu:22.04 /bin/bash fcbc5cf91f3b33f2c3a05ee55d051227ed9f230834e216f9896aa7dbb57347bf进入容器有两种方式可以进入容器使用 docker attach 进入容器(不推荐)[root@lavm-5wutyiasaf ~]# docker attach 3f6a11edb0e6 root@3f6a11edb0e6:/# root@3f6a11edb0e6:/#注意:使用attach命令退出容器时,容器会停止运行。使用 docker exec 进入容器(推荐)[root@lavm-5wutyiasaf ~]# docker exec -it b76ed162fe12 /bin/bash root@b76ed162fe12:/# root@b76ed162fe12:/# 注意:使用exec命令推出容器时,容器不会停止运行,所以推荐此方法。导入和导出容器# 导出容器 [root@lavm-5wutyiasaf ~]# docker export 129077e4abb4 > ubuntu.22.04.tar [root@lavm-5wutyiasaf ~]# ls anaconda-ks.cfg install_panel.sh original-ks.cfg ubuntu.22.04.tar # 导入容器 [root@lavm-5wutyiasaf ~]# docker import ubuntu.22.04.tar test/ubuntu:v1 sha256:906851c5bf30575863fe4f249da96512eb71a3975c03922fba3baa44530ab884 [root@lavm-5wutyiasaf ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test/ubuntu v1 906851c5bf30 5 seconds ago 77.9MB # 或者也可以这么导入 [root@lavm-5wutyiasaf ~]# cat ubuntu.22.04.tar | docker import - test/ubuntu:v2 sha256:3e987db64805f8dc339715d3ab86fbb5292b20a6d86d54bf36aab37110581035 [root@lavm-5wutyiasaf ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test/ubuntu v2 3e987db64805 7 seconds ago 77.9MB test/ubuntu v1 906851c5bf30 About a minute ago 77.9MB ubuntu 22.04 b103ac8bf22e 12 days ago 77.9MB运行web应用以下示例展示如何运行一个Web应用# 拉取镜像 [root@lavm-5wutyiasaf ~]# docker pull nginx:latest latest: Pulling from library/nginx dad67da3f26b: Pull complete 3b00567da964: Pull complete 56b81cfa547d: Pull complete 1bc5dc8b475d: Pull complete 979e6233a40a: Pull complete d2a7ba8dbfee: Pull complete 32e44235e1d5: Pull complete Digest: sha256:6784fb0834aa7dbbe12e3d7471e69c290df3e6ba810dc38b34ae33d3c1c05f7d Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest # 运行容器 [root@lavm-5wutyiasaf ~]# docker run -d -p 8080:8080 nginx:latest 6f8cf788e20cb223c286fd73bb794c590a112ffcbf485e6320ba8159b00ac0dc [root@lavm-5wutyiasaf ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6f8cf788e20c nginx:latest "/docker-entrypoint.…" 9 seconds ago Up 7 seconds 80/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp laughing_rubin参数说明-P:随机映射端口。-p 8080:8080:指定端口映射。将容器的8080端口映射到主机的8080端口。验证是否可以正常访问[root@lavm-5wutyiasaf ~]# curl http://localhost:8080 curl: (56) Recv failure: Connection reset by peer # 这里提示报错细想一下是因为什么?排错nginx的默认端口是80,而我却把它的8080端口映射出来了。好,有了思路我们现在来解决,有两种方式:1、把刚才创建的容器删掉重建,重新映射80端口,这里不细讲。2、进入容器把nginx的默认端口80给他修改为8080,再重启容器里的nginx即可(这里重启的是容器里的nginx,可不是nginx这个容器哈)。# 顺便复习下怎么进入容器 [root@lavm-5wutyiasaf ~]# docker exec -it 6f8cf788e20c /bin/bash root@6f8cf788e20c:/# # 找到nginx的配置文件 root@6f8cf788e20c:/# cd /etc/nginx/conf.d/ root@6f8cf788e20c:/etc/nginx/conf.d# ls default.conf # 修改nginx的默认端口,容器里没有vi的命令,所有我们用sed来替换。注意listen和80中间有多少个空格,替换的时候看清楚。 root@6f8cf788e20c:/etc/nginx/conf.d# cat default.conf |grep listen listen 80; listen [::]:80; # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 root@6f8cf788e20c:/etc/nginx/conf.d# sed -i 's/listen 80;/listen 8080;/' default.conf root@6f8cf788e20c:/etc/nginx/conf.d# cat default.conf |grep listen listen 8080; listen [::]:80; # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # 上面看到了端口已经修改完成,现在重启nginx服务 root@6f8cf788e20c:/etc/nginx/conf.d# nginx -t # 自检配置文件是否ok nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful root@6f8cf788e20c:/etc/nginx/conf.d# nginx -s reload # 重启nginx 2025/06/13 09:59:33 [notice] 127#127: signal process started # 验证nginx是否可正常访问 [root@lavm-5wutyiasaf ~]# curl http://localhost:8080 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>4、常见问题权限问题不足的问题执行docker命令时出现权限不足错误Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock解决方法1:使用sudo再docker命令前加上sudo提权。解决方法2:将用户添加到用户组sudo groupadd docker # 添加 docker 用户组 sudo gpasswd -a $USER docker # 将当前用户加入到 docker 用户组 newgrp docker # 更新用户组 docker ps # 测试 docker 命令
2025年06月13日
2 阅读
0 评论
0 点赞
1
2