Windows-Docker学习笔记(一)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本文介绍了Windows环境下Docker的安装与使用方法。首先通过链接下载Windows版本的Docker,然后按步骤配置:启用Windows功能、设置默认WSL版本为2,并检查Docker及其组件是否正常工作。接着详细列出了Docker的基础命令及其用法,包括搜索、下载镜像、管理容器等。同时介绍了Dockerfile的编写方法及其构建过程,以及docker-compose.yml文件的用途。最后提供了运行和管理容器的具体示例。

Windows-Docker:

docker下载:Windows版本:

一,配置docker:

1,控制面板->程序和功能->启用或关闭Windows功能,

2,重启电脑后,在终端执行`wsl --set-default-version 2`

3,查看docker,docker-compose版本并查看docker功能是否正常

# 查看docker版本
docker -v
# 查看docker信息
docker info
# 查看 docker-compose版本
compose version
# 运行docker基础镜像
docker run hello-world

二,docker的使用:

docker基础命令及用法:

docker search <镜像id>/<name>             在仓库中搜索镜像
docker pull <id>/<name>                   在仓库中下载镜像
docker images                             展示所有镜像
dockers ps (-a)                           展示正在运行的容器(展示所有容器)
docker stop <容器id或name>                 停止容器
docker kill <容器id>                      强制停止容器
docker start <容器id或name >               启动已停止的容器
docker inspect <容器id>                   查看容器的所有信息
docker container logs <容器id>            查看容器日志
docker top <容器id>                       查看容器里的进程
docker exec -it <容器id> /bin/bash        进入容器
exit                                      退出容器
docker rm <容器id或name>                   删除已停止的容器
docker rm -f <容器id>                     删除正在运行的容器
docker exec -it <容器ID> sh               进入容器
docker cp <文件名> <容器id>:<容器目标路径> 将目标文件COPY到目标容器的指定目录下,同名覆盖
docker history <镜像名:版本号>              # 查看指定镜像的变更历史(构建过程)

Dcokerfile文件的使用:

dockerfile可以认为是一种用来定义和构建docker镜像的自动化脚本,通过对dockerfile的参数及指令的编写,docker可以按照dockerfile的内容,按照从上到下的顺序运行命令来自动构建镜像

dockerfile工作流程:

pull基础镜像->运行一个容器->执行一条命令并对容器进行修改->提交一个新镜像层->用新提交的镜像曾来运行一个新容器->执行一条命令并对容器进行修改->重复->直至dockerfile中的命令执行完成->覆盖基础镜像

FROM         # 基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER   # 镜像维护者的姓名混合邮箱地址
RUN          # 容器构建时需要运行的命令
EXPOSE       # 当前容器对外保留出的端口
WORKDIR      # 指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
ENV          # 用来在构建镜像过程中设置环境变量
ADD          # 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY         # 类似ADD,拷贝文件和目录到镜像中!
VOLUME       # 容器数据卷,用于数据保存和持久化工作
CMD          # 指定一个容器启动时要运行的命令,dockerFile中可以有多个CMD指令,但只有最后一个生效!
ENTRYPOINT   # 指定一个容器启动时要运行的命令!和CMD一样
ONBUILD      # 当构建一个被继承的DockerFile时运行命令,父镜像在被子镜像继承后,父镜像的ONBUILD被触发

dokcerfile的编写:

FROM ubuntu:20.24                                     # 使用一个基础镜像
MAINTAINER touzi <touzi@123.com>                      # 镜像创建者的姓名及邮箱
ENV DEBIAN_FRONTEND=noninteractive                    # 环境变量以自动配置时区
ENV TZ=Etc/UTC
RUN apt-get update && \
    apt-get install -y apache2 mysql-server php libapache2-mod-php php-mysql policycoreutils-python-utils && \                            # 安装 Apache、MySQL 和 PHP
    apt-get clean                                     # 清除缓存
COPY index.php /var/www/html/                         # 将当前目录下的`指定`文件复制到目标目录下
# COPY . /var/www/html/                               # 将当前目录下的`全部`文件复制到目标目录下
ENV MYSQL_ROOT_PASSWORD=root                          # 初始化mysql的root的密码
RUN echo '#!/bin/bash\n\
service mysql start\n\
mysql < /docker-entrypoint-initdb.d/init.sql\n\
apachectl -D FOREGROUND' > /usr/local/bin/start.sh && \
    chmod +x /usr/local/bin/start.sh                  # 创建一个sh脚本来启动 Apache 和 MySQL
COPY init.sql /docker-entrypoint-initdb.d/init.sql    # 将init.sql脚本复制到容器指定目录下,从而进行数据库的初始化
EXPOSE 80                                             # 开放80端口
CMD ["/usr/local/bin/start.sh"]                       # 设置容器启动时执行的命令

dockerfile构建镜像:

docker build (-f <指定dockerfile文件>) -t <输出镜像名:版本号> .
#注意最后的`点`,这个代表当前目录的意思

docker-compose.yml文件的使用:

Docker compose是一种基于python的编排服务,它可以让用户很容易的用一个配置文件来轻松创建一个多容器的应用并安装应用的所有依赖,解决了容器与容器直接如何管理编排的问题

docker的镜像运行:

docker run -d(后台运行容器) -p 8080(主机访问容器端口):80(容器开放端口) --name <命名容器> <要使用的镜像名>

之后便能在docker中的contiainers中找到刚刚创建的容器

docker容器的使用

docker container ls                   列出正在运行的容器
docker ps                             列出正在运行的容器
docker container ls -a                列出所有的容器
docker ps -a                          列出所有的容器
docker container start                启动容器
docker start                          启动容器
docker container stop                 停止容器
docker stop                           停止容器
docker container restart              重启容器
docker restart                        重启容器
docker container rm                   删除容器
docker rm                             删除容器
docker container logs                 打印容器的标准输出
docker logs                           打印容器的标准输出
docker exec -it <容器> /bin/bash      进入容器交互界面
docker exec <容器> <命令>             在容器内运行指定命令
docker exec -u <用户名> <容器> <命令>  在容器中以<某用户>身份运行指定命令
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
Kubernetes Ubuntu Linux
docker学习笔记
docker学习笔记
59 0
|
2月前
|
安全 网络安全 开发者
Docker学习笔记(一):Docker命令总结
本文介绍了Docker的基本概念、优点以及常用命令。Docker是一个开源的应用容器引擎,它通过容器打包应用程序及其依赖项,实现快速部署和迁移。主要优点包括轻量级、可移植性、易于管理、安全性和开源性。文章还区分了镜像和容器的概念,并提供了构建镜像、查看容器、运行容器、停止和删除容器等常用Docker命令的示例。
163 0
|
2月前
|
Windows
重装系统学习笔记(一):Windows10重装步骤(正版)
这篇博客文章详细介绍了如何使用微软官方工具重装Windows 10系统,包括下载安装工具、准备U盘、设置BIOS以及系统安装的步骤。
59 0
重装系统学习笔记(一):Windows10重装步骤(正版)
|
4月前
|
前端开发 jenkins 持续交付
jenkins学习笔记之二十:docker in docker运行pipeline
jenkins学习笔记之二十:docker in docker运行pipeline
|
4月前
|
jenkins Java 持续交付
jenkins学习笔记之十九:Docker安装jenkins master及动、静态配置slave
jenkins学习笔记之十九:Docker安装jenkins master及动、静态配置slave
|
7月前
|
安全 Linux Docker
Ubantu docker学习笔记(六)容器数据卷
Ubantu docker学习笔记(六)容器数据卷
Ubantu docker学习笔记(六)容器数据卷
|
7月前
|
Kubernetes 调度 Docker
Ubantu docker学习笔记(十一)k8s基本操作
Ubantu docker学习笔记(十一)k8s基本操作
|
7月前
|
Prometheus 监控 Cloud Native
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
|
7月前
|
存储 应用服务中间件 nginx
Ubantu docker学习笔记(八)私有仓库
Ubantu docker学习笔记(八)私有仓库
|
7月前
|
网络协议 Docker 容器
Ubantu docker学习笔记(七)容器网络
Ubantu docker学习笔记(七)容器网络