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
相关推荐
zhd15306915625ff14 分钟前
化工厂主要涉及的自动化备件有哪些?
运维·自动化·化工厂
Jason-河山15 分钟前
利用API返回值实现商品信息自动化更新:技术与实践
运维·自动化
wowocpp1 小时前
查看 linux ubuntu 分区 和 挂载 情况 lsblk
linux·运维·ubuntu
_.Switch5 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
2401_850410835 小时前
文件系统和日志管理
linux·运维·服务器
JokerSZ.5 小时前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
芯盾时代5 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
心灵彼岸-诗和远方6 小时前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops
一只哒布刘6 小时前
NFS服务器
运维·服务器
南猿北者7 小时前
docker容器
docker·容器