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
相关推荐
运维&陈同学39 分钟前
【Beats01】企业级日志分析系统ELK之Metricbeat与Heartbeat 监控
运维·elk·elasticsearch·云原生·kibana·heartbeat·metricbeat
地球资源数据云41 分钟前
全国30米分辨率逐年植被覆盖度(FVC)数据集
大数据·运维·服务器·数据库·均值算法
是店小二呀1 小时前
【Linux】Linux开发利器:make与Makefile自动化构建详解
linux·运维·自动化
baihb10242 小时前
Jenkins 构建流水线
运维·jenkins
BUG 4042 小时前
LINUX--shell
linux·运维·服务器
菜鸟小白:长岛icetea2 小时前
Linux零基础速成篇一(理论+实操)
linux·运维·服务器
Java小白中的菜鸟4 小时前
centos7的磁盘扩容
linux·运维·服务器
黑客老陈5 小时前
面试经验分享 | 北京渗透测试岗位
运维·服务器·经验分享·安全·web安全·面试·职场和发展
橘子师兄5 小时前
如何在自己的云服务器上部署mysql
运维·服务器·mysql
@泽栖5 小时前
Docker 常用命令
运维·服务器·docker