热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【docker】教程常用命令基础使用

1.概念1.1Docker镜像-DockerImages容器运行时的只读模板,操作系统软件运行环境用户程序classUser{privateStringuser

1. 概念


1.1 Docker镜像 - Docker Images

容器运行时的只读模板,操作系统 + 软件运行环境 + 用户程序
class User {private String username;private Integer age;
}

1.2 Docker 容器 - Docker Containers

容器包含了某个应用运行所需要的全部环境User user = new User();

1.3 Docker 仓库 - Docker Registeries

用来保存镜像,有公有和私有仓库,比如Maven的中央仓库和本地私服
![配置国内镜像仓库](https://blog.csdn.net/zzy1078689276/article/details/77371782)

1.4 Tips

Docker Images : Java Class
Docker Containers : Java Object
通过类创建对象,通过镜像创建容器

2. 常见命令

1.搜索镜像 : docker search rabbitmq:management
2.查看系统镜像 : docker images
3.拉取镜像 : docker pull rabbitmq:managementrabbitmq:management是具体镜像名称(格式 REPOSITORY:TAG)REPOSITORY : 表示镜像的仓库源TAG : 镜像的标签
4.运行一个容器 : docker run -d -p 5672:5672 -p 15672:15672 --name beebee_mq rabbitmq:managementdocker run -d -p 6379:6379 --name "xd_redis" 4e8db158f18ddocker run -it beebee-apidocker run -d -p 8088:8088 -itv /software/docker/hadoop1/:/tmp --name hadoop1 id/namedocker run : 运行一个容器-i : 以交互模式运行容器,通常与 -t 同时使用-t : 为容器重新分配一个伪输入终端,通常与 -i 同时使用-v : 给容器挂载存储卷,挂载到容器的某个目录-d : 后台运行-p : 端口映射rabbitmq:management(格式 REPOSITORY:TAG),如果不指定tag,默认使用最新的4e8db158f18d : IMAGE-ID--name : 容器名称
5.查看当前运行的容器 : docker ps
6.检查容器内部信息 : docker inspect id/name
7.删除镜像 : docker rmi 镜像名称-f : 强制删除
8.删除某个容器 : docker rm id/name(容器必须是停止状态)
9.停止某个容器 : docker stop id/name
10.启动某个容器 : docker start id/name
11.查看启动日志 : docker logs -f id/name
12.在容器里面进行操作 : docker exec -it nginx /bin/bash
13.构建镜像 : docker build -t eureka-server .
14.查看所有的容器 : docker ps -a
15.复制Linux到docker-文件 : docker cp nginx.conf my-nginx:/etc/nginx/nginx.conf
16.复制docker到Linux-文件夹 : docker cp my-nginx:/etc/nginx /etc/

3. 高级命令

1.查看所有的容器 : docker ps -a
2.进入docker容器 : docker exec -it web-nginx /bin/bash , docker attach web-nginx
3.停止守护式容器 : docker stop web-nginx , docker kill web-nginx
4.查看容器详情 : docker inspect id/name
5.查看容器端口映射 : docker port web-nginx
6.容器IP地址 : docker inspect id/name --> NetworkSettings --> IPAddress
7.查看docker存储位置和驱动 : docker info
8.停止所有的容器 : docker stop $(docker ps -a -q)
9.删除所有未运行的容器 : docker rm $(docker ps -a -q)
10.删除所有未打tag的镜像 : docker rmi $(docker images | grep "^" | awk "{print $3}")
11.删除所有镜像 : docker rmi $(docker images -q)
12.docker networkdocker network create : 创建docker network connectdocker network ls : 列出docker network rm : 删除docker network disconnectdocker network inspect

4. 启动nginx

1. 启动-映射web文件夹 : docker run -dit -p 80:80 -p 443:443 -v /usr/share/nginx/html:/usr/share/nginx/html —name ng 42b4762643dc
2. 复制docker中nginx配置到Linux : docker cp ng:/etc/nginx /etc
3. 停止docker : docker stop ng
4. 重启docker : docker start ng
5. 启动-映射配置文件夹 : docker run -dit -p 80:80 -p 443:443 -v /usr/share/nginx/html:/usr/share/nginx/html -v /etc/nginx:/etc/nginx —name ng 42b4762643dc

5. 将项目打包为Docker镜像


5.1 添加pom依赖

<properties><docker.image.prefix>beebeedocker.image.prefix>
properties>
<build><finalName>docker-demofinalName><plugins><plugin><groupId>org.springframework.bootgroupId><artifactId>spring-boot-maven-pluginartifactId>plugin><plugin><groupId>com.spotifygroupId><artifactId>dockerfile-maven-pluginartifactId><version>1.3.6version><configuration><repository>${docker.image.prefix}/${project.artifactId}repository><buildArgs><JAR_FILE>target/${project.build.finalName}.jarJAR_FILE>buildArgs>configuration>plugin>plugins>
build>

5.2 根目录&#xff0c;新建Dockerfile

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

5.3 构建镜像

mvn install -DskipTests dockerfile:build

5.4 推送镜像到仓库

登录仓库 : docker login --username&#61;anson.zhifu&#64;gmail.com registry.cn-beijing.aliyuncs.com
镜像打标签 : docker tag [ImageId] registry.cn-beijing.aliyuncs.com/beebee/51taqu:[镜像版本号]
推送镜像 : docker push registry.cn-beijing.aliyuncs.com/beebee/51taqu:[镜像版本号]
拉取镜像 : docker pull registry.cn-beijing.aliyuncs.com/beebee/51taqu:[镜像版本号]
阿里云仓库 : https://cr.console.aliyun.com

6.Dockerfile

1-FORM&#xff1a;基于什么镜像&#xff0c;FROM 或FROM :
2-MAINTAINER&#xff1a;维护者信息&#xff0c;MAINTAINER
3-RUN&#xff1a;在基础镜像上执行&#xff0c;搭建环境&#xff0c;RUN 或 RUN ["executable", "param1", "param2"]
4-CMD&#xff1a;启动容器时执行的命令&#xff0c;只能有一条• CMD ["executable","param1","param2"] 使用 exec 执行&#xff0c;推荐方式&#xff1b;• CMD command param1 param2 在 /bin/sh 中执行&#xff0c;提供给需要交互的应用&#xff1b;• CMD ["param1","param2"] 提供给 ENTRYPOINT 的默认参数&#xff1b;
5-EXPOSE:容器暴露的端口号&#xff0c;EXPOSE [...]
6-ENV&#xff1a;指定环境变量&#xff0c;会被后续的RUN指令使用&#xff0c;并在容器运行时保持
7-ADD&#xff1a;就是复制文件到容器中&#xff0c;ADD &#xff0c;&#xff1a;可以是一个本地文件&#xff0c;可以是URL&#xff0c;tar文件会自动解压
8-COPY&#xff1a;单纯的复制本地文件到容器中&#xff0c;COPY
9-ENTRYPOINT&#xff1a;容器启动后执行的命令&#xff0c;并且不可被 docker run 提供的参数覆盖&#xff0c;只能有一条命令• ENTRYPOINT ["executable", "param1", "param2"]• ENTRYPOINT command param1 param2&#xff08;shell中执行&#xff09;。
10-VOLUME&#xff1a;创建一个可以从本地主机或其他容器挂载的挂载点&#xff0c;一般用来存放数据库和需要保持的数据等&#xff0c;VOLUME ["/data"]
11-USER&#xff1a;容器运行时的用户名&#xff0c;USER daemon
12-WORKDIR&#xff1a;切换目录&#xff0c;为后续的 RUN、CMD、ENTRYPOINT 指令配置工作目录
13-ONBUILD&#xff1a;配置当所创建的镜像作为其它新创建镜像的基础镜像时&#xff0c;所执行的操作指令&#xff0c;ONBUILD [INSTRUCTION]

# 1 基础镜像
FROM centos:centos6# 2 维护者
MAINTAINER anson.zhang# 3 安装基本命令
RUN yum -y update
RUN yum -y groupinstall "Security Tools"
RUN yum -y groupinstall "Debugging Tools"
RUN yum -y groupinstall "Compatibility libraries"
RUN yum -y groupinstall "Development tools"
RUN yum -y groupinstall "Smart card support"
RUN yum -y groupinstall "Base"
RUN yum -y install openssh-clients
RUN yum -y install openssh-server
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime# 4 安装jdk
COPY jdk-8u144-linux-x64.tar.gz /usr/local/
WORKDIR /usr/local/
RUN tar -xvf ./jdk-8u144-linux-x64.tar.gz
RUN mv ./jdk1.8.0_144 jdk# 4 安装hadoop
COPY hadoop-2.6.1.tar.gz /usr/local/
RUN tar -xvf ./hadoop-2.6.1.tar.gz
RUN mv ./hadoop-2.6.1 hadoop# 5 设置jdk环境变量
ENV PATH /usr/local/jdk/bin:/usr/local/hadoop/bin:$PATH# 6 设置挂载点&#xff0c;或共享卷
VOLUME ["/usr/local/data"]# 7 使用root登录Linux
# USER root# 8 暴露端口
EXPOSE 22 80 8080 8090 # 9 启动时执行的命令
# CMD ["/bin/bash"]# 映射文件夹&#xff0c;设置静态ip&#xff0c;映射端口&#xff0c;系统时间
# docker run --name hadoop1 --net myIp --ip 172.17.2.1 -itv /software/docker/hadoop1/:/usr/local centos:centos6 /bin/bash

7. 项目构建部署流程

1. mvn clean compile install -DskipTests
2. docker build -t ...
3. docker images
4. docker tag ...
5. docker push ...
6. docker pull ...
7. docker images
8. docker ps
9. docker stop ...
10. docker rm ...
11. docker run ...

8. 常见问题


8.1 浏览器访问不了docker内的接口

1.docker启动时&#xff0c;docker容器端口要和Java应用端口一致
2.访问时&#xff0c;要用http://localhost&#xff0c;http://127.0.0.1&#xff0c;http://59.110.238.225&#xff0c;https://58taqu.com&#xff0c;不要用http://192.168.1.48
3.排查 : 查看日志&#xff0c;curl&#xff0c;端口开放&#xff0c;防火墙

8.2 配置中心访问出错

所有的微服务中添加以下配置
eureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/instance:instance-id: ${spring.cloud.client.ip-address}:${server.port}prefer-ip-address: true

8.3 注意事项

1.application.yml中的经常变动的变量不要写死&#xff0c;比如用${mysql.address}动态取值&#xff0c;启动命令docker run -it user-service:latest --mysql.address&#61;192.168.1.7
2.写完Dockerfile后&#xff0c;写build.sh&#xff0c;方便以后构建&#xff0c;mvn ... 和 docker build ... 和 docker push ...

8.4 错误

1. 这个错误用此命令&#xff1a;systemctl restart docker


推荐阅读
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
  • Spring框架入门指南:专为新手打造的详细学习笔记
    Spring框架是Java Web开发中广泛应用的轻量级应用框架,以其卓越的功能和出色的性能赢得了广大开发者的青睐。本文为初学者提供了详尽的学习指南,涵盖基础概念、核心组件及实际应用案例,帮助新手快速掌握Spring框架的核心技术与实践技巧。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 通过整合JavaFX与Swing,我们成功地将现有的Swing应用程序组件进行了现代化改造。此次升级不仅提升了用户界面的美观性和交互性,还确保了与原有Swing应用程序的无缝集成,为开发高质量的Java桌面应用提供了坚实的基础。 ... [详细]
  • Java服务问题快速定位与解决策略全面指南 ... [详细]
  • jQuery Flot 数据可视化插件:高效绘制图表的专业工具
    jQuery Flot 是一款高效的数据可视化插件,专为绘制各种图表而设计。该工具支持丰富的图表类型和自定义选项,适用于多种应用场景。用户可以通过其官方网站获取示例代码和下载资源,以便快速上手和使用。 ... [详细]
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
  • 本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法
    结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法 ... [详细]
  • 本文介绍了使用 Python 编程语言高效抓取微博文本和动态网页图像数据的方法。通过详细的示例代码,展示了如何利用爬虫技术获取微博内容和动态图片,为数据采集和分析提供了实用的技术支持。对于对网络数据抓取感兴趣的读者,本文具有较高的参考价值。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 在处理高并发场景时,确保业务逻辑的正确性是关键。本文深入探讨了Java原生锁机制的多种细粒度实现方法,旨在通过使用数据的时间戳、ID等关键字段进行锁定,以最小化对系统性能的影响。文章详细分析了不同锁策略的优缺点,并提供了实际应用中的最佳实践,帮助开发者在高并发环境下高效地实现锁机制。 ... [详细]
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
author-avatar
漂流小叶子2502896817
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有