安装部署
一、查询版本信息
|----------------|----------------|
| 命令 | 说明 |
| 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