当前位置: 首页 > news >正文

docker学习笔记,从入门开始!

1.配置docker yum 源

sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

2.安装docker

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2.1启动docker
sudo systemctl start docker 
2.2配置docker开机启动
systemctl enable docker
2.3配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.1ms.run","https://mirror.ccs.tencentyun.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

或者

sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.xuanyuan.me",  # 轩辕镜像(境内CDN,兰州地区推荐)"https://docker.m.daocloud.io", # 国内老牌服务商"https://docker.imgdb.de",     # 德国镜像站(全球化同步)"https://docker-0.unsee.tech"  # 亚洲节点加速站]
}
EOF
# 应用配置并重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker

或者

sudo tee /etc/docker/daemon.json <<-'EOF'
{"runtimes": {"nvidia": {"args": [],"path": "nvidia-container-runtime"}},"registry-mirrors": ["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc"]
}
EOF# 应用配置并重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker

3.下载镜像

检索:docker search 
docker search nginx /  docker search docker.1ms.run/nginx 
下载 docker pull
docker pull nginx:1.26.0
列表:docker images 查看镜像
删除:docker rmi
docker rmi nginx:latest / docker rmi 94543a6c1aef

4.启动容器

运行:docker run 
docker run nginx / docker run nginx:1.26.0
docker run -d --name mynginx nginx (-d 后台启动 --name 取别名)
docker run -d --name mynginx26 -p 88:80 nginx:1.26.0 (-p 88:80 88是暴露出去的端口,80是容器内的端口)
常见命令举例
查看:docker ps 查看存活对象  docker ps -a 查看所有对象
停止:docker stop
docker stop 226 / docker stop mystifying_clarke
启动:docker start
docker start mystifying_clarke
重启:docker restart
docker restart mystifying_clarke
状态 :docker stats
日志:docker logs
docker logs 226
进入: docker exec
docker exec -it mynginx /bin/bash  退出编辑exit
删除: docker rm 
docker rm -f 226 强制删除
docker rm 226 需要先 docker stop 226
批量删除容器
docker container prune (删除退出的容器)
docker rm -f `docker ps -q`
docker rm -f $(docker ps -q)
提交:docker commit 
docker commit -m "update inedx.html" mynginx mynginx:v1.0 (-m 备注信息 )
保存:docker save
docker save -o mynginx.tar mynginx:v1.0 (-o 打包成对应的tar包)
加载:docker load
docker load -i mynginx.tar (-i 指定加载的压缩包)
登录:docker login (容易连接不了)
改名:docker tag mynginx:v1.0 lilusheng/mynginx:v1.0
推送:docker push lilusheng/mynginx:v1.0 不能使用 

5.docker存储

目录挂载,数据卷
目录挂载:
docker run -d -p 80:80 -v /app/nghtml:/usr/share/nginx/html --name app01 nginx                       ( -v /app/nghtml:/usr/share/nginx/html)
卷映射:
docker run -d -p 99:80 -v /app/nghtml:/usr/share/nginx/html -v ngconf:/etc/nginx --name app04 nginx (-v ngconf:/etc/nginx)
卷统一位置:
/var/lib/docker/volumes/<volumn-name> eg:/var/lib/docker/volumes/ngconf/_data查看卷:docker volume ls 
创建卷 :docker volume create haha
查看卷详情:docker volume inspect ngconf

6.自定义网络

容器内访问:curl 119.45.193.239:80 (很奇怪)
docker container inspect 
curl http://172.17.0.3:80
docker为每个容器分配唯一ip,使用容器ip+容器端口可以相互访问,ip由于各种原因可能会变化
docker0默认不支持主机域名访问
//先创建网络
docker network create mynet
//查看网络
docker network ls
//创建
docker run -d -p 80:80 --name app01 --network mynet nginx
docker run -d -p 88:80 --name app02 --network mynet nginx
进入app01测试容器内访问
docker exec -it app01 bash
curl app02:80
6.1实例测试举例
redis主从同步集群
主:
docker run -d -p 6380:6379 
-v /app/rd2:/bitnami/redis/data 
-e REDIS_REPLICATION_MODE=master 
-e REDIS_PASSWORD=123456 
--network mynet 
--name redis01 bitnami/redis
从:
docker run -d -p 6380:6379 \
> -v /app/rd2:/bitnami/redis/data \
> -e REDIS_REPLICATION_MODE=slave \
> -e REDIS_MASTER_HOST=redis01 \
> -e REDIS_MASTER_PORT_NUMBER=6379 \
> -e REDIS_MASTER_PASSWORD=123456 \
> -e REDIS_PASSWORD=123456 \
> --network mynet --name redis02 bitnami/redismysql的docker启动命令:
docker run -d -p 3306:3306 \
-v /app/myconf:/etc/mysql/conf.d \
-v /app/mydata:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0.37-debian

7.docker compose

通过compose.yaml 批量的启动对应的容器
--------------------------------
compose.ymal 
顶级元素:
name 名字
services 服务
networks 网络
volumes 卷
configs 配置
secrets 密钥
完整的ymal
--------------------------------------
name: myblog
services:mysql:container_name: mysqlimage: mysql:8.0ports:- "3306:3306"environment:- MYSQL_ROOT_PASSWORD=123456- MYSQL_DATABASE=wordpressvolumes:- mysql-data:/var/lib/mysql- /app/myconf:/etc/mysql/conf.drestart: alwaysnetworks:- blogwordpress:container_name: wordpress-appimage: wordpress:latestports:- "80:80"environment:- WORDPRESS_DB_HOST=mysql- WORDPRESS_DB_USER=root- WORDPRESS_DB_PASSWORD=123456- WORDPRESS_DB_NAME=wordpressvolumes:- wordpress:/var/www/htmlrestart: alwaysnetworks:- blogdepends_on:- mysql
volumes:mysql-data:    wordpress:
networks:blog:
--------------------------------
上线:docker compose up -d  (第一次的启动)
docker compose -f compose.yaml up -d (-f compose.yaml 指定文件)
下线:docker compose down 
docker compose -f compose.yaml down
docker compose -f compose.yaml down --rmi all -v (--rmi all -v  指的是下线镜像和对应的卷)
启动:docker compose start x1 x2 x3 (指的是停止容器的启动)
停止:docker compose stop x1 x2 x3
扩容:docker compose scale x2=3 (某个容器复制三份)docker compose -f compose.yaml down --rmi all -v

8.Dockerfile 自定义镜像

基础环境
软件包
启动命令常见指令
FROM :指定镜像基础环境
RUN:运行自定义命令
CMD:容器启动命令和参数
LABEL:自定义标签
EXPOSE:指定暴露端口
ENV:环境变量
ADD:添加文件到镜像
COPY:复制文件到镜像
ENTRYPOINT:容器固定启动目录
VOLUME:数据卷 
USER:指定用户和用户组
WORKDIR:指定默认工作目录
ARG : 指定构建参数
8.1实例
1.rz 上传对应的jar包
app01.jar
2.创建Dockerfile文件
vim Dockerfile
-------------------------
FROM openjdk:8
LABEL author=lilusheng
COPY app01.jar /app01.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app01.jar"]
-------------------------3.进行镜像构建
docker build -f Dockerfile -t myjavaApp:v1.0 .生成对应的镜像myjavaApp:v1.04.启动镜像
docker run -d -p 8080:8080 myjavaApp:v1.05.进行网页验证
https:xxx:8080/books
结果:springboot is running 验证成功
http://www.dtcms.com/a/544929.html

相关文章:

  • 从 MVC 5 到 Core MVC:ASP.NET MVC 框架的 “进化之路“
  • 认识人工智能与大模型应用开发
  • 电子学会青少年机器人技术(一级)等级考试试卷-实操题(2025年9月)
  • 亲 怎么给一个网站做备份哪些专业能建网站
  • JWT 全面解析与 Spring Boot 实战教程
  • 【预览PDF】前端预览pdf
  • 【PrintPDF】PrintPDF Cargo.toml 分析
  • R/3 销售与分销
  • 唐山微网站建设价格网站建设信息发布
  • 做的最好的理财网站国内无版权图片网站
  • GXDE OS 支持在 WSL 上使用了(带桌面环境)
  • 【Linux】基础指令(2):理解Linux的指令和核心概念
  • Rust 借用分割技巧:安全解构复杂数据结构
  • 在Vue项目中平滑地引入HTML文件
  • 1688网站特点石家庄模板网站建设
  • 不练不熟,不写就忘 之 compose 之 动画之 animateDpAsState动画练习
  • HTML的布局—— DIV 与 SPAN
  • php网站搬家软件潍坊网络营销公司有哪些
  • Langchain中的消息
  • SQL是怎样执行的
  • 合肥网站建设卫来科技郑州高端建站
  • 景区网站建设策划书wordpress去掉rss订阅
  • HTTP中get请求和post请求的区别和联系
  • Rust 开发环境配置:IDE 选择与深度优化实践
  • PyTorch与TensorFlow GPU分布式训练策略详解
  • IDE热键冲突的解决
  • Docker篇1:docker-compose和docker.io区别
  • 如何将 TRAE IDE 的插件市场源切换至 VS Code 官方市场
  • 公司网站建设的请示有网站怎么做下载直链
  • 2025.10.29【服务器】|lftp 常见参数与使用方法详解(含上传下载实战)