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
相关推荐
Hellc00715 分钟前
使用 Docker 部署 RabbitMQ 并实现数据持久化
docker·rabbitmq·ruby
梦游钓鱼1 小时前
在window终端创建docker容器的问题
运维·docker·容器
孤寂大仙v1 小时前
【Linux笔记】理解文件系统(上)
linux·运维·笔记
沉默的八哥1 小时前
K8S高可用Web应用部署方案
运维
winyh51 小时前
Vite 打包后Nginx部署配置
运维·nginx
钢板兽2 小时前
Java后端高频面经——JVM、Linux、Git、Docker
java·linux·jvm·git·后端·docker·面试
运维小贺3 小时前
Nginx常用的模块
运维·nginx·正则表达式
努力学习的小廉3 小时前
深入了解Linux —— 调试程序
linux·运维·服务器
努力学习的小廉3 小时前
深入了解Linux —— git三板斧
linux·运维·git
AI学IT3 小时前
(安全防御)旁挂组网双机热备负载分担实验
运维·服务器·网络