首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

【Docker】入门教程

  • 25-04-25 03:01
  • 2038
  • 5813
blog.csdn.net

目录

一、Docker的安装

二、Docker的命令

Docker命令实验

1.下载镜像

2.启动容器

3.修改页面

4.保存镜像

5.分享社区

三、Docker存储

1.目录挂载

2.卷映射

四、Docker网络

1.容器间相互访问

2.Redis主从同步集群

3.启动MySQL

五、Docker Compose

 1.命令式安装

2.compose.yaml


参考视频:

https://www.bilibili.com/video/BV14WtLeDEit

一、Docker的安装

使用本机虚拟机或云平台

国内常见云平台:阿里云、腾讯云、华为云、青云......

使用CentOS 7.9

  1. # 移除旧版本docker
  2. sudo yum remove docker \
  3. docker-client \
  4. docker-client-latest \
  5. docker-common \
  6. docker-latest \
  7. docker-latest-logrotate \
  8. docker-logrotate \
  9. docker-engine
  10. # 配置docker yum源。
  11. sudo yum install -y yum-utils
  12. sudo yum-config-manager \
  13. --add-repo \
  14. http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  15. # 安装 最新 docker
  16. sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  17. # 启动& 开机启动docker; enable + start 二合一
  18. systemctl enable docker --now
  19. # 配置加速
  20. sudo mkdir -p /etc/docker
  21. sudo tee /etc/docker/daemon.json <<-'EOF'
  22. {
  23. "registry-mirrors": [
  24. "https://mirror.ccs.tencentyun.com",
  25. "https://docker.m.daocloud.io"
  26. ]
  27. }
  28. EOF
  29. sudo systemctl daemon-reload
  30. sudo systemctl restart docker

二、Docker的命令

  1. #查看运行中的容器
  2. docker ps
  3. #查看所有容器
  4. docker ps -a
  5. #搜索镜像
  6. docker search nginx
  7. #下载镜像
  8. docker pull nginx
  9. #下载指定版本镜像
  10. docker pull nginx:1.26.0
  11. #查看所有镜像
  12. docker images
  13. #删除指定id的镜像
  14. docker rmi e784f4560448
  15. #运行一个新容器
  16. docker run nginx
  17. #停止容器
  18. docker stop keen_blackwell
  19. #启动容器
  20. docker start 592
  21. #重启容器
  22. docker restart 592
  23. #查看容器资源占用情况
  24. docker stats 592
  25. #查看容器日志
  26. docker logs 592
  27. #删除指定容器
  28. docker rm 592
  29. #强制删除指定容器
  30. docker rm -f 592
  31. # 后台启动容器
  32. docker run -d --name mynginx nginx
  33. # 后台启动并暴露端口
  34. docker run -d --name mynginx -p 80:80 nginx
  35. # 进入容器内部
  36. docker exec -it mynginx /bin/bash
  37. # 提交容器变化打成一个新的镜像
  38. docker commit -m "update index.html" mynginx mynginx:v1.0
  39. # 保存镜像为指定文件
  40. docker save -o mynginx.tar mynginx:v1.0
  41. # 删除多个镜像
  42. docker rmi bde7d154a67f 94543a6c1aef e784f4560448
  43. # 加载镜像
  44. docker load -i mynginx.tar
  45. # 登录 docker hub
  46. docker login
  47. # 重新给镜像打标签
  48. docker tag mynginx:v1.0 leifengyang/mynginx:v1.0
  49. # 推送镜像
  50. docker push leifengyang/mynginx:v1.0

Docker命令实验

接下来尝试做一个简单实验来熟悉docker命令!

实验要求如下:

启动一个nginx,并将它的首页改为自己的页面,发布出去,让所有人都能使用。

实验步骤:

下载镜像——> 启动容器——> 修改页面——> 保存镜像——> 分享社区

1.下载镜像

查看有没有这个镜像

 下载镜像

查看是否下载成功 

2.启动容器

启动nginx容器

但是这样启动会让会话的输入窗口阻塞,无法再在当前会话窗口中输入命令,那有没有更好的启动方式呢?有的兄弟,有的。

以下命令启动,可以实现后台启动,并给启动的容器自定义容器名,同时将容器内部的端口与宿主机的端口建立映射关系(宿主机外部的网络可以通过宿主机的端口访问到容器内部的应用程序):

3.修改页面

先进入容器内部

修改页面内容

原页面如下:

修改后的页面如下:

4.保存镜像

将修改好后的镜像进行“提交”操作

将镜像进行“保存”操作,如保存成一个文件

如果你拿到别人给的镜像tar包,该如何加载该镜像呢?——使用“加载”操作

5.分享社区

这一步需要登录dockerHub的账号并进行推送,在此不做演示。

三、Docker存储

掌握目录挂载、数据卷,让容器数据不再丢失。

1.目录挂载

在上面的实验中,有一个要求是修改nginx的首页页面,上面的做法是使用“docker exec”命令进入容器内部进行修改,但是这种做法还是过于麻烦。而且,如果该容器暴毙,再重新启动一个新的容器,那么之前那个容器运行的数据也就丢失了。

可以使用“-v”命令来将容器的部分文件挂载到外部,这样修改外部的文件就相当于修改容器内部的文件的了。

2.卷映射

使用“目录挂载”的方式,挂载的文件或目录是空的,需要自己添加内容,这样的方式不适合挂载配置文件。因为配置文件我希望它先继承原先的配置文件,我再进行部分修改。如果要实现这样的需求,就可以通过“卷映射”来实现。

这是“目录挂载”和“卷映射”命令的区别,目录挂载的位置要以“/”开头,而卷映射不需要。

这是卷映射中卷的默认存放地址。

四、Docker网络

1.容器间相互访问

docker在创建容器后,都会默认让容器加入docker0网络,并为每个容器分配唯一ip,使用容器ip+容器端口可以相互访问,注意ip由于各种原因可能会变化。

但是这样的话,如果要互相访问,还需要特地去查一下目的容器的ip,略显麻烦,能不能使用域名的方式呢?这样就不需要去查询ip了,域名可以直接使用容器名。

有的,这样的方法就是创建自定义网络(如上图创建了一个自定义网络叫mynet),在创建容器的命令中加入设置容器网络的部分命令即可,这样容器名就是稳定域名。

2.Redis主从同步集群

  1. #自定义网络
  2. docker network create mynet
  3. #主节点
  4. docker run -d -p 6379:6379 \
  5. -v /app/rd1:/bitnami/redis/data \
  6. -e REDIS_REPLICATION_MODE=master \
  7. -e REDIS_PASSWORD=123456 \
  8. --network mynet --name redis01 \
  9. bitnami/redis
  10. #从节点
  11. docker run -d -p 6380:6379 \
  12. -v /app/rd2:/bitnami/redis/data \
  13. -e REDIS_REPLICATION_MODE=slave \
  14. -e REDIS_MASTER_HOST=redis01 \
  15. -e REDIS_MASTER_PORT_NUMBER=6379 \
  16. -e REDIS_MASTER_PASSWORD=123456 \
  17. -e REDIS_PASSWORD=123456 \
  18. --network mynet --name redis02 \
  19. bitnami/redis
3.启动MySQL
  1. docker run -d -p 3306:3306 \
  2. -v /app/myconf:/etc/mysql/conf.d \
  3. -v /app/mydata:/var/lib/mysql \
  4. -e MYSQL_ROOT_PASSWORD=123456 \
  5. mysql:8.0.37-debian

五、Docker Compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具,通过一个 YAML 文件来配置应用程序的服务、网络和卷,然后使用单个命令即可创建和启动所有服务。

 1.命令式安装
  1. #创建网络
  2. docker network create blog
  3. #启动mysql
  4. docker run -d -p 3306:3306 \
  5. -e MYSQL_ROOT_PASSWORD=123456 \
  6. -e MYSQL_DATABASE=wordpress \
  7. -v mysql-data:/var/lib/mysql \
  8. -v /app/myconf:/etc/mysql/conf.d \
  9. --restart always --name mysql \
  10. --network blog \
  11. mysql:8.0
  12. #启动wordpress
  13. docker run -d -p 8080:80 \
  14. -e WORDPRESS_DB_HOST=mysql \
  15. -e WORDPRESS_DB_USER=root \
  16. -e WORDPRESS_DB_PASSWORD=123456 \
  17. -e WORDPRESS_DB_NAME=wordpress \
  18. -v wordpress:/var/www/html \
  19. --restart always --name wordpress-app \
  20. --network blog \
  21. wordpress:latest
2.compose.yaml
  1. name: myblog
  2. services:
  3. mysql:
  4. container_name: mysql
  5. image: mysql:8.0
  6. ports:
  7. - "3306:3306"
  8. environment:
  9. - MYSQL_ROOT_PASSWORD=123456
  10. - MYSQL_DATABASE=wordpress
  11. volumes:
  12. - mysql-data:/var/lib/mysql
  13. - /app/myconf:/etc/mysql/conf.d
  14. restart: always
  15. networks:
  16. - blog
  17. wordpress:
  18. image: wordpress
  19. ports:
  20. - "8080:80"
  21. environment:
  22. WORDPRESS_DB_HOST: mysql
  23. WORDPRESS_DB_USER: root
  24. WORDPRESS_DB_PASSWORD: 123456
  25. WORDPRESS_DB_NAME: wordpress
  26. volumes:
  27. - wordpress:/var/www/html
  28. restart: always
  29. networks:
  30. - blog
  31. depends_on:
  32. - mysql
  33. volumes:
  34. mysql-data:
  35. wordpress:
  36. networks:
  37. blog:

增量更新:

修改 Docker Compose 文件。重新启动应用。只会触发修改项的重新启动。

数据不删:

默认就算down了容器,所有挂载的卷不会被移除。比较安全。

注:本文转载自blog.csdn.net的白衫~的文章"https://blog.csdn.net/m0_75276797/article/details/145094495"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

115
云原生
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top