Windows-Docker学习笔记(一)

Windows-Docker:

docker下载:Windows版本:

QQ截图20240906123118

一,配置docker:

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

QQ截图20240905192235

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

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

1
2
3
4
5
6
7
8
# 查看docker版本
docker -v
# 查看docker信息
docker info
# 查看 docker-compose版本
compose version
# 运行docker基础镜像
docker run hello-world

image

二,docker的使用:

docker基础命令及用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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中的命令执行完成->覆盖基础镜像

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

dokcerfile的编写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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构建镜像:

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

image

image

docker-compose.yml文件的使用:

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

docker的镜像运行:

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

image

image

docker容器的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 <用户名> <容器> <命令> 在容器中以<某用户>身份运行指定命令