docker实战演练

一.docker简介

二.docker部署

1.解压并安装所需要的软件

复制代码
[root@docker-node1 ~]# ls
anaconda-ks.cfg        docker.tar.gz    mario.tar.gz
busybox-latest.tar.gz  game2048.tar.gz  nginx-latest.tar.gz
[root@docker-node1 ~]# tar zxf docker.tar.gz 
[root@docker-node1 ~]# ls
anaconda-ks.cfg
busybox-latest.tar.gz
containerd.io-1.7.20-3.1.el9.x86_64.rpm
docker-buildx-plugin-0.16.2-1.el9.x86_64.rpm
docker-ce-27.1.2-1.el9.x86_64.rpm
docker-ce-cli-27.1.2-1.el9.x86_64.rpm
docker-ce-rootless-extras-27.1.2-1.el9.x86_64.rpm
docker-compose-plugin-2.29.1-1.el9.x86_64.rpm
docker.tar.gz
game2048.tar.gz
mario.tar.gz
nginx-latest.tar.gz
[root@docker-node1 ~]# yum install *.rpm -y

2.启动服务并从归档文件中加载镜像

复制代码
[root@docker-node1 ~]# systemctl enable --now docker
[root@docker-node1 ~]# docker load -i game2048.tar.gz 
[root@docker-node1 ~]# docker load -i mario.tar.gz 
[root@docker-node1 ~]# docker load -i nginx-latest.tar.gz 
[root@docker-node1 ~]# docker load -i busybox-latest.tar.gz 

3.测试:

复制代码
[root@docker-node1 ~]# docker run -d --rm --name game1 -p 80:80 timinglee/game2048:latest 
复制代码
[root@docker-node1 ~]# docker rm -f game1 
[root@docker-node1 ~]# docker run -d --rm --name game2 -p 80:8080 timinglee/mario:latest 

三.docker的基本操作

<1>.docker镜像管理

1.搜索镜像

复制代码
[root@Docker-node1 ~]# docker search nginx

2.拉取镜像

复制代码
[root@Docker-node1 ~]# docker pull busybox

3.查看镜像信息

复制代码
[root@Docker-node1 ~]# docker image inspect nginx:1.26-alpine

4.导出镜像
-o :指定导出镜像的位置; 可以同时导出多个镜像到一个文件中; 指定 .tar.gz 可以导出并压缩。

复制代码
[root@Docker-node1 ~]# docker image save nginx:latest -o nginx-latest.tar.gz
[root@Docker-node1 ~]# docker save `docker images | awk 'NR>1{print $1":"$2}'` -o images.tar.gz

5.删除镜像

复制代码
[root@Docker-node1 ~]# docker rmi nginx:latest
[root@Docker-node1 ~]# docker rmi `docker images | awk 'NR>1{print $1":"$2}'`

<2>.容器的常用操作

|-----------|------------------------------------|
| -d | 后台运行 |
| -i | 交互式运行 |
| -t | 打开一个终端 |
| --name | 指定容器名称 |
| -p | 端口映射 -p 80:8080 把容器8080端口映射到本机80端口 |
| --rm | 容器停止自动删除容器 |
| --network | 指定容器使用的网络 |

1.启动容器

复制代码
[root@Docker-node1 ~]# docker run -d --name mario -p 80:8080 timinglee/mario

进入到容器中,按<ctrl>+<d>退出并停止容器,按<ctrl>+<pq>退出但不停止容器

复制代码
[root@Docker-node1 ~]# docker run -it --name centos7 centos:7

重新进入容器

复制代码
[root@docker ~]# docker attach centos7

在容器中执行命令

复制代码
[root@docker ~]# docker exec -it test ifconfig

2.查看容器运行信息

复制代码
[root@Docker-node1 ~]# docker ps              #查看当前运行容器
[root@Docker-node1 ~]# docker ps -a           #查看所有容器
[root@Docker-node1 ~]# docker inspect busybox #查看容器运行的详细信息

3.停止和运行容器
容器内的第一个进程必须一直处于运行的状态,否则这个容器,就会处于退出状态!

复制代码
[root@Docker-node1 ~]# docker stop busybox  #停止容器
[root@Docker-node1 ~]# docker kill busybox  #杀死容器,可以使用信号
[root@Docker-node1 ~]# docker start busybox #开启停止的容器

4.删除容器

复制代码
[root@Docker-node1 ~]# docker rm centos7         #删除停止的容器
[root@Docker-node1 ~]# docker rm -f busybox      #删除运行的容器
[root@Docker-node1 ~]# docker container prune -f #删除所有停止的容器

5.容器内容提交
默认情况下,容器被删除后,在容器中的所有操作都会被清理,包括要保存的文件,如果想永久保存,那么我们需要把动作提交,提交后会生成新的镜像,当我们在运行新镜像后即可看到我们提交的内容。此方法不利于企业审计,所以不推荐使用,在企业中我们多用 Dockerfile 来构建镜像。

6.系统中的文件和容器中的文件传输

7.查询容器内部日志

复制代码
[root@Docker-node1 ~]# docker logs web
相关推荐
dys_Codemonkey2 小时前
如何在树莓派上用 VS Code 优雅直连内部的 Ubuntu 子系统/容器用来访问容器内的文件和代码?
linux·运维·ubuntu·树莓派
张道宁3 小时前
Windows 环境下 Docker 部署 YOLOv8 并集成 Spring Boot 完整指南
windows·yolo·docker
上海合宙LuatOS4 小时前
LuatOS核心库API——【 string】字符串操作
运维·服务器·物联网·junit·硬件工程·信息与通信·嵌入式实时数据库
徐子元竟然被占了!!4 小时前
Linux的cat
linux·运维·服务器
带娃的IT创业者4 小时前
WeClaw 离线消息队列实战:异步任务队列如何保证在服务器宕机时不丢失任何一条 AI 回复?
运维·服务器·人工智能·python·websocket·fastapi·实时通信
kc胡聪聪4 小时前
nginx的性能优化与监控
运维·nginx·性能优化
丈剑走天涯5 小时前
kubernetes java app 部署使用harbor私服 问题集合
java·容器·kubernetes
上海合宙LuatOS5 小时前
LuatOS核心库API——【sys】LuatOS运行框架
运维·服务器·物联网·硬件工程·lua·软件工程·信息与通信
运维行者_5 小时前
网络监控方案从零开始 -- 企业级完整指南
大数据·运维·服务器·网络·数据库·人工智能·自动化
IMPYLH6 小时前
Linux 的 b2sum 命令
linux·运维·服务器·bash