Docker-部署、镜像容器管理、commit

安装部署

一、查询版本信息

|----------------|----------------|
| 命令 | 说明 |
| docker version | 查看服务器与客户端版本 |
| docker info | 查看docker服务配置信息 |

二、安装部署

官网地址:Install Docker Engine | Docker Docs

1、卸载旧的版本

复制代码
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2、建立仓库

复制代码
# 安装Docker所需的工具包
[root@test1 ~]# sudo yum install -y yum-utils
# 建立Docker仓库
[root@test1 ~]# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3、安装Docker引擎

复制代码
[root@test1 ~]# sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4、启动Docker

复制代码
[root@test1 ~]# sudo systemctl start docker

5、验证DockerEngine安装是否成功

复制代码
[root@test1 ~]# sudo docker run hello-world
... ...
[root@test1 ~]# docker ps -a 
CONTAINER ID   IMAGE         COMMAND    CREATED              STATUS                          PORTS     NAMES
0e9edb4c528c   hello-world   "/hello"   About a minute ago   Exited (0) About a minute ago             ecstatic_johnson

镜像管理

一、概述

  • 镜像是创建容器的核心
  • 镜像使用CoW技术
  • 镜像采用分层设计
  • 镜像始终都是只读的

二、如何创建镜像

  • 首先使用CoW为镜像创建一个读写层,容器在读写层运行
  • 这种方式可以让一个镜像创建无数个容器

三、获取镜像

镜像可以从官方镜像仓库下载,也可以自己制作

从官方下载较慢,可以使用国内的镜像站加速

添加配置文件:/etc/docker/daemon.json

{

"registry-mirrors": "这里配置镜像加速器地址",

"insecure-registries":

}

1、镜像加速器

复制代码
[root@test1 ~]# mkdir -p /etc/docker
[root@test1 ~]# tee /etc/docker/daemon.json << EOF
> {
>     "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
>     "insecure-registries":[]
> }
> EOF
[root@test1 ~]# systemctl restart docker
[root@test1 ~]# docker info 
... ...
Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://docker.mirrors.ustc.edu.cn/
 Live Restore Enabled: false

四、镜像管理命令

|------------------------------|-----------------------|
| 镜像管理命令 | 说明 |
| docker images | 查看本机镜像 |
| docker pull 镜像名称:标签 | 下载镜像 |
| docker save 镜像名称:标签 -o 文件名 | 备份镜像为tar包 |
| docker load -i 备份文件名称 | 导入备份的镜像文件 |
| docker history 镜像名称:标签 | 查看镜像的制作历史 |
| docker tag 镜像ID:标签 镜像名称:新的标签 | 创建新的镜像名称和标签 |
| docker rmi 镜像名称:标签 | 删除镜像(必须先删除该镜像启动的所有容器) |

五、镜像的备份与恢复

1、指定镜像的方法

每一个镜像都对应唯一的镜像 id

镜像名称 + 标签 == 唯一

每一个镜像都有标签,默认标签 latest

我们在调用镜像的时候,如果没有指定标签也是 latest

2、备份镜像(导出镜像)

docker save 镜像名称:镜像标签 -o 文件名(tar格式)

3、恢复镜像(导入镜像)

docker load -i 备份文件名称

Docker容器管理

一、创建容器

语法格式:docker run -参数 镜像名称:镜像标签 手工指定启动命令

查看 run 的参数:docker help run

man docker run

docker run 常用参数:-i 交互式

-t 分配终端

-d 后台运行

--name 容器名字

--rm 容器结束后自动删除

转入后台快捷键 ctrl p+q

二、容器管理命令

|----------------------------------|-------------------------|
| 容器管理命令 | 说明 |
| docker run -it(d) 镜像名称:镜像标签 | 创建容器 |
| docker ps -a | 查看运行容器的信息 所有容器 |
| docker inspect 镜像名称|容器名称 | 查询 镜像|容器 的详细信息 |
| docker start|stop|restart 容器id | 启动、停止、重启容器 |
| docker exec -it 容器id 命令 | 在容器内执行命令 |
| docker cp 路径1 路径2 | 拷贝文件:路径格式(本机路径、容器ID/路径) |
| docker rm 容器ID | 删除容器 |
| docker logs 容器ID | 查看容器日志 |

镜像与服务

一、自定义镜像

  • 镜像采用分层设计
  • 创建读写层
  • 修改配置
  • 重新打包

使用现有镜像启动容器,在该容器基础上修改

使用commit制作新镜像

复制代码
# 使用基础镜像创建一个容器
[root@test1 ~]# docker run -itd --name linux rockylinux:8.5
# 删除容器内的Yum配置文件
[root@test1 ~]# docker exec -it linux rm -rf /etc/yum.repos.d
# 拷贝宿主机的Yum配置文件到容器内
[root@test1 ~]# docker cp /etc/yum.repos.d linux:/etc/
# 在容器内安装工具软件包
[root@test1 ~]# docker exec -it linux dnf install -y net-tools vim-enhanced tree bash-completion iproute procps-ng psmisc
# 清理缓存文件
[root@test1 ~]# docker exec -it linux yum clean all
# 停止容器
[root@test1 ~]# docker stop linux 
# 把容器制作成镜像
[root@test1 ~]# docker commit linux linux:latest
# 查看新制作的镜像
[root@test1 ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
linux         latest    71662af1927a   52 seconds ago   249MB
# 删除制作镜像的容器
[root@test1 ~]# docker rm  linux

容器内部署应用

部署apache服务

复制代码
# 删除所有容器
[root@test1 ~]# docker rm -f $(docker ps -aq)
# 创建一个名为 myweb 的容器
[root@test1 ~]# docker run -it --rm --name myweb linux:latest
# 在容器内安装部署 apache
[root@43945bfa50c8 /]# dnf install -y httpd
[root@43945bfa50c8 /]# echo "Hello World ." >/var/www/html/index.html
[root@43945bfa50c8 /]# cat /usr/lib/systemd/system/httpd.service
[root@43945bfa50c8 /]# /usr/sbin/httpd -DFOREGROUND
# 在另一个终端完成访问验证

为apache添加解析php文件支持

复制代码
# ctrl + c 终止 httpd 服务运行
[root@43945bfa50c8 /]# dnf install -y php
[root@43945bfa50c8 /]# vim /etc/httpd/conf.modules.d/00-mpm.conf
11: LoadModule mpm_prefork_module ... ... # 去掉注释 
17: # LoadModule mpm_event_module ... ... # 注释配置 
[root@43945bfa50c8 /]# /usr/sbin/httpd -DFOREGROUND
# 服务不要关闭,在其他终端完成测试

验证配置

复制代码
[root@test1 ~]# docker cp info.php myweb:/var/www/html/info.php
[root@test1 ~]# curl http://172.17.0.2/info.php
相关推荐
桌面运维家1 小时前
旧电脑跑不动课程软件,VDI云桌面怎样接着用?
运维·服务器·虚拟化·pve·vdi·云桌面
zhang133830890751 小时前
传统机械三杯式风速传感器易磨损冻堵?CG-88金属超声波风速风向传感器给出免运维方案
运维·服务器·网络·人工智能·自动化
知已难寻2 小时前
第 2 篇 · 云的地基:服务器、存储、网络三大基础设施
运维·服务器·网络·云原生·云计算·负载均衡·1024程序员节
2601_949847754 小时前
bcrypt.js 跨端三方库仓颉适配全流程
linux·运维·ubuntu
m0_639906944 小时前
Linux 操作系统入门:目录结构、服务排查常用命令、Shell 脚本基础
linux·运维·后端
今天重构了吗4 小时前
Linux 上 rm -rf 删错了能找回吗
运维·服务器
KaiwuDB5 小时前
KaiwuDB 分布式集群扩缩容,从原理到完整操作踩坑总结
运维·数据库·分布式
codezzzsleep5 小时前
学术汇报 PPT 自动化生成实战指南
运维·自动化·powerpoint
古法老登瞎折腾5 小时前
大数据智能运维实战(九):让 AI 查日志——找到异常,也保留上下文
java·大数据·运维·人工智能·spring ai·mcp
讯捷蓝达6 小时前
IBM V3500存储 双控故障、数据怎么恢复?
运维