Docker基础学习

张开发
2026/4/17 4:50:32 15 分钟阅读

分享文章

Docker基础学习
基础知识Docker是一个开源的应用容器引擎1.Docker基础介绍1.安装Docker2.架构镜像Image容器Container仓库3.镜像加速器安装升级Docker客户端推荐安装1.10.0以上版本的Docker客户端参考文档docker-ce配置镜像加速器针对Docker客户端版本大于 1.10.0 的用户您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器sudo mkdir-p/etc/docker sudo tee/etc/docker/daemon.json-EOF{registry-mirrors:[https://h8jhxygl.mirror.aliyuncs.com]}EOFsudo systemctl daemon-reload sudo systemctl restart dockerDocker命令1.启动systemctl start docker2.停止systemctl stop docker3.重启systemctl restart docker4.查看docker服务状态systemctl status docker5.开机自启动systemctl enable dockerDocker镜像命令1.查看镜像docker images docker images -q #查看所有镜像的id2.搜索镜像docker search 镜像名称3.拉取镜像docker pull 镜像名称4.删除镜像docker rmi 镜像id docker rmi docker images -q #删除全部镜像Docker容器命令1.查看容器docker ps #查看正在运行的容器 docker ps -a #查看所有容器2.创建并启动容器docker run 参数3.停止容器docker stop 容器名称4.进入容器docker exec 参数 #退出容器容器不会关闭5.启动容器docker start 容器名称6.删除容器docker rm 容器名称7.查看容器信息docker inspect 容器名称容器的数据卷1.配置数据卷docker run ... -v 宿主机目录容器目录2.两个容器挂载同一个数据卷多容器进行数据交换数据卷容器docker run -it --namec3 -v /volume3.多个数据卷载在同一个容器Docker部署应用1.mysql以下是图片中展示的 Docker 部署 MySQL 的命令与说明文字1. 前置目录准备在/root目录下创建mysql目录用于存储 MySQL 数据信息mkdir~/mysqlcd~/mysql2. 启动 MySQL 容器命令dockerrun-id\-p3307:3306\--namec_mysql\-v$PWD/conf:/etc/mysql/conf.d\-v$PWD/logs:/logs\-v$PWD/data:/var/lib/mysql\-eMYSQL_ROOT_PASSWORD123456\mysql:5.63. 参数说明-p 3307:3306将容器的3306端口映射到宿主机的3307端口。-v $PWD/conf:/etc/mysql/conf.d将主机当前目录下的conf/my.cnf挂载到容器的/etc/mysql/my.cnf配置目录。-v $PWD/logs:/logs将主机当前目录下的logs目录挂载到容器的/logs日志目录。-v $PWD/data:/var/lib/mysql将主机当前目录下的data目录挂载到容器的/var/lib/mysql数据目录。-e MYSQL_ROOT_PASSWORD123456初始化root用户的密码。以上命令和参数说明展示了如何在 Docker 中部署 MySQL 服务。2.tomcat这张图片展示的是在 Docker 环境中部署 Tomcat 服务的步骤包含目录准备、容器启动命令、参数说明和外部访问验证四个部分以下是详细分析步骤 1准备 Tomcat 数据目录# 在/root目录下创建tomcat目录用于存储tomcat数据信息mkdir~/tomcatcd~/tomcat作用在主机宿主机的用户主目录~下创建tomcat文件夹用于后续挂载 Tomcat 的 Web 应用目录如存放网页、项目文件。逻辑通过mkdir创建目录cd切换到该目录为后续的卷挂载-v做准备。步骤 2启动 Tomcat 容器dockerrun-id\-p8080:8080\-v$PWD:/usr/local/tomcat/webapps\tomcatdocker run创建并启动一个新的容器。-id组合参数-i保持标准输入STDIN打开-d让容器在后台运行守护模式。-p 8080:8080端口映射将容器的 8080 端口映射到主机的 8080 端口Tomcat 默认使用 8080 端口提供 Web 服务。-v $PWD:/usr/local/tomcat/webapps卷挂载将主机当前目录$PWD表示当前工作目录即~/tomcat挂载到容器的/usr/local/tomcat/webapps目录Tomcat 存放 Web 应用的默认目录。tomcat指定使用的 Docker 镜像Docker 会自动从 Docker Hub 拉取tomcat镜像默认最新版。步骤 3参数说明-p 8080:8080将容器的 8080 端口映射到主机的 8080 端口确保外部可通过主机的 8080 端口访问容器内的 Tomcat 服务。-v $PWD:/usr/local/tomcat/webapps将主机当前目录挂载到容器的 webapps 目录实现主机与容器的文件共享——在主机的~/tomcat目录下放入网页文件如test/a.html容器内的 Tomcat 会自动识别并提供服务。步骤 4外部访问验证在浏览器中访问http://192.168.149.135:8080/test/a.html192.168.149.135是主机 IP页面显示hello tomcat docker说明Tomcat 容器启动成功且端口映射8080:8080生效外部可访问。卷挂载-v生效主机~/tomcat目录下的test/a.html被容器识别Tomcat 正常提供该页面的服务。核心逻辑总结通过目录准备→容器启动端口映射 卷挂载→外部访问验证实现 Tomcat 服务的快速部署端口映射-p解决“外部如何访问容器服务”的问题。卷挂载-v解决“主机与容器如何共享文件”的问题如部署网页、项目。潜在优化点可选镜像版本若需指定 Tomcat 版本可在tomcat后加标签如tomcat:8.5避免默认拉取最新版带来的兼容性问题。目录结构可在主机~/tomcat下创建test目录并放入a.html确保文件路径与访问 URL 一致。通过以上步骤可快速在 Docker 中部署一个支持外部访问、且与主机共享文件的 Tomcat 服务。3.nigx这张图片展示的是在 Docker 中部署 Nginx 服务的步骤包含目录准备、配置文件编写、容器启动命令和参数说明四个部分。以下是补全后的完整内容1. 准备 Nginx 数据目录# 在/root目录下创建nginx目录用于存储nginx数据信息mkdir~/nginxcd~/nginxmkdirconfcdconf作用在主机宿主机的用户主目录~下创建nginx文件夹并在其中创建conf子目录用于存放 Nginx 的配置文件。2. 编写 Nginx 配置文件# 在~/nginx/conf/下创建nginx.conf文件粘贴下面内容vimnginx.conf补全后的nginx.conf内容如下user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main $remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }说明这是 Nginx 的基础配置文件定义了用户、工作进程数、错误日志、PID 文件、事件处理、HTTP 服务等核心配置。3. 启动 Nginx 容器dockerrun-id\-p80:80\-v$PWD/conf/nginx.conf:/etc/nginx/nginx.conf\-v$PWD/logs:/var/log/nginx\-v$PWD/html:/usr/share/nginx/html\--namec_nginx\nginxdocker run创建并启动一个新的容器。-id组合参数-i保持标准输入STDIN打开-d让容器在后台运行守护模式。-p 80:80端口映射将容器的 80 端口映射到主机的 80 端口。-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf将主机当前目录下的conf/nginx.conf挂载到容器的/etc/nginx/nginx.conf覆盖容器内的默认配置文件。-v $PWD/logs:/var/log/nginx将主机当前目录下的logs目录挂载到容器的/var/log/nginx用于存放 Nginx 的日志文件。-v $PWD/html:/usr/share/nginx/html将主机当前目录下的html目录挂载到容器的/usr/share/nginx/html用于存放静态网页文件。--namec_nginx为容器指定名称c_nginx。nginx指定使用的 Docker 镜像Docker 会自动从 Docker Hub 拉取nginx镜像默认最新版。4. 参数说明-p 80:80将容器的 80 端口映射到宿主机的 80 端口确保外部可通过主机的 80 端口访问容器内的 Nginx 服务。-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf将主机当前目录下的/conf/nginx.conf挂载到容器的/etc/nginx/nginx.conf实现自定义配置文件的替换。-v $PWD/logs:/var/log/nginx将主机当前目录下的logs目录挂载到容器的/var/log/nginx用于收集 Nginx 的日志信息。-v $PWD/html:/usr/share/nginx/html将主机当前目录下的html目录挂载到容器的/usr/share/nginx/html用于存放和访问静态网页文件。5. 验证部署启动容器后可通过浏览器访问http://主机IP若看到 Nginx 的欢迎页面说明部署成功。通过以上步骤你可以在 Docker 中成功部署一个自定义配置的 Nginx 服务并实现配置文件、日志和静态文件的持久化管理。4.redis这张图片展示了使用 Docker 部署 Redis 服务的完整流程分为四个步骤搜索镜像、拉取镜像、创建容器并设置端口映射、以及使用外部客户端连接 Redis。以下是每个步骤的详细分析1. 搜索 Redis 镜像命令dockersearch redis作用在 Docker Hub 上搜索名为redis的镜像。目的确认可用的 Redis 镜像版本和官方/社区镜像为后续拉取做准备。2. 拉取 Redis 镜像命令dockerpull redis:5.0作用从 Docker Hub 拉取指定版本5.0的 Redis 镜像。细节redis是镜像名称。5.0是镜像标签tag表示 Redis 5.0 版本。如果不指定标签默认会拉取latest最新版。3. 创建容器并设置端口映射命令dockerrun-id--namec_redis-p6379:6379 redis:5.0作用基于redis:5.0镜像创建并启动一个名为c_redis的容器并将容器的 6379 端口映射到宿主机的 6379 端口。参数解析-id组合参数-i保持标准输入STDIN打开-d让容器在后台运行守护模式。--namec_redis为容器指定名称c_redis便于后续管理和识别。-p 6379:6379端口映射将容器的 6379 端口Redis 默认端口映射到宿主机的 6379 端口确保外部可通过宿主机的 6379 端口访问 Redis 服务。redis:5.0指定使用的镜像即步骤 2 中拉取的 Redis 5.0 镜像。4. 使用外部机器连接 Redis命令./redis-cli.exe-h192.168.149.135-p6379作用使用 Redis 客户端redis-cli.exe连接到部署在外部机器上的 Redis 服务。参数解析-h 192.168.149.135指定 Redis 服务的主机 IP 地址即宿主机的 IP。-p 6379指定 Redis 服务的端口与容器映射的端口一致。前提条件宿主机的防火墙需放行 6379 端口。Redis 服务需允许外部连接默认情况下 Redis 仅允许本地连接需修改配置文件redis.conf中的bind和protected-mode等参数。DockerFile1.docker镜像如何制作1.容器转镜像2DockerFile关键字作用说明ENV环境变量设置环境变量可在后续指令或容器运行时使用。ARG构建参数仅在镜像构建时生效。如果有同名的 ENVENV 的值会覆盖 ARG 的值。VOLUME定义外部可挂载的数据卷指定容器中那些目录可以启动时挂载到文件系统中。启动容器时使用-v绑定格式VOLUME [目录]。EXPOSE暴露端口定义容器运行时监听的端口。启动容器时使用-p来绑定端口。格式EXPOSE 8080或者EXPOSE 8080/udp。WORKDIR工作目录指定容器内部的工作目录。如果没有创建则自动创建。如果路径非/开头则是上一条 WORKDIR 的相对路径。USER指定执行用户指定构建或者启动的时候用户。在 RUN CMD ENTRYPOINT 执行的时候的用户。HEALTHCHECK健康检查指定监测当前容器的健康监测的命令。基本上没用因为很多时候应用本身有健康监测机制。ONBUILD触发器当存在 ONBUILD 关键字的镜像作为基础镜像的时候当执行 FROM 完成之后会执行 ONBUILD 指令。STOPSIGNAL发送信号量到宿主机该 STOPSIGNAL 指令设置发送到容器的系统调用信号以退出。SHELL指定执行脚本的 shell指定 RUN CMD ENTRYPOINT 执行命令的时候使用的 shell。FROM指定基础镜像必须是 Dockerfile 第一条指令格式FROM 镜像名[:标签]RUN执行构建命令在镜像构建时执行命令每条 RUN 生成新镜像层支持 Shell/Exec 格式COPY复制文件/目录将宿主机文件/目录复制到镜像不支持 URL 和自动解压ADD扩展复制功能支持自动解压本地压缩包、从 URL 下载文件但行为较复杂普通复制推荐用 COPYCMD容器启动默认命令指定容器启动时默认执行的命令一个 Dockerfile 仅最后一个 CMD 生效ENTRYPOINT容器启动入口指定容器启动时执行的可执行文件/命令与 CMD 配合可实现“固定参数 可变参数”Docker服务编排一、安装 Docker Compose图片说明了 Docker Compose 已完全支持 Linux、Mac OS 和 Windows 系统但安装前需先安装 Docker。安装方式是通过下载预编译的二进制包到 Linux 系统具体步骤如下下载二进制文件使用curl命令从 GitHub 下载指定版本图中为 1.22.0的docker-compose文件并保存到/usr/local/bin/目录。curl-Lhttps://github.com/docker/compose/releases/download/1.22.0/docker-compose-uname-s-uname-m-o/usr/local/bin/docker-compose设置可执行权限使用chmod x命令赋予docker-compose可执行权限。chmodx /usr/local/bin/docker-compose验证安装通过docker-compose -version命令查看版本信息确认安装成功。二、卸载 Docker Compose由于是通过二进制包方式安装卸载只需删除对应的二进制文件即可rm/usr/local/bin/docker-compose

更多文章