docker + docker compose + docker hub(harbor)快速入门

1.docker

1.1 docker常用命令介绍

  1. 查看镜像列表
docker images
  1. 下载镜像
docker pull 镜像名	#若不加tag,则是下最新的,若想下指定版本,就要加上tag(版本号)

docker pull redis		#下载redis的latest版
docker pull redis:7.0	#下载redis的7.0版本
  1. 查看容器列表
docker ps
  1. 创建一个容器并运行命令
docker run [OPTIONS] 镜像名		# 若镜像不存在,则会自动下载对应版本并创建

OPTIONS说明:
-d: 后台运行容器,并返回容器ID
-e RABBITMQ_DEFAULT_USER=admin: 设置环境变量。镜像的环境变量可在docker hub中查找
--hostname my-rabbit:设置容器的hostname(类似linux的hostname)
--name some-rabbit: 为容器指定一个名称
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-v: 绑定一个数据卷,即文件的映射,格式为:主机(宿主)文件绝对路径:容器文件绝对路径。可双向映射.
	一般容器的数据都是放在/var/lib/XXX下,更详细的信息还是去docker hub中查找
--restart=always:可以自行重启容器

-----------------------------------------------------------------------------------------------
例子:创建rabbitmq容器
docker run -d \
-v /root/docker/rabbitmq-cluster/mq1/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v /root/docker/rabbitmq-cluster/mq1/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
--name mq1 \
--hostname mq1 \
-p 8071:5672 \
-p 8081:15672 \
rabbitmq:3.8.27-management

更详细的命令说明看这里:https://www.runoob.com/docker/docker-run-command.html

  1. 启动和停止容器
docker start 容器id		#启动容器
docker stop 容器id		#停止容器
docker restart 容器id	#重启容器
docker kill 容器id		#强制停止容器
  1. 进入容器内部
docker exec -it 容器id /bin/bash
  1. 查看docker日志
docker logs 容器id
  1. 打包docker镜像
docker build -t 镜像名:tag  dir	#镜像名只能全小写。dir指jar包与Dockerfile所在的文件夹路径
  1. 查看容器信息
docker inspect 容器id
  1. 更新容器配置
docker update [OPTIONS] 容器id	#[OPTIONS]是更新配置的命令
docker update --restart=always 容器id	#将容器更新为可以自行重启

1.2 docker网络模式

1.2.1 网络模式常用命令介绍

  1. 查看所有的网络模式
docker network ls
  1. 创建网络模式
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mei_net
  1. 查看网络模式详细信息
docker network inspect mei_net
  1. 将tomcat-01容器连接到mei_net网络上
docker network connect mei_net tomcat-01

1.2.2 具体介绍

详细信息看这篇博文:https://blog.csdn.net/huangjhai/article/details/120425457

1.3 dockerfile

命令介绍:

指令说明
FROM指定基础镜像
MAINTAINER镜像作者,姓名或邮箱
RUN镜像构建的时候需要运行的命令
ADD将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
WORKDIR镜像的工作目录
VOLUME挂载的目录
EXPOSE端口配置
CMD指定这个容器启动的时候要运行的命令(只有最后一个会生效)
ENTRYPOINT指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD当构建一个被继承DockerFile,这个时候就会运行ONBUILD的指令,触发指令
COPY功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
ENV构建的时候设置环境变量

案例:SpringBoot项目打包成docker镜像
1.application.yaml:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://123.456.789.0:3306/transaction_test?characterEncoding=utf8&useUnicode=false
    username: root
    password: 123456
mybatis:
  mapper-locations: classpath:mapper/*.xml
  configuration:
    map-underscore-to-camel-case: true
server:
  port: 8085

2.使用maven打包后,target目录如下:
在这里插入图片描述

3.Dockerfile:

FROM java:8
MAINTAINER meizhaowei
ADD TransactionTest-0.0.1-SNAPSHOT.jar TransactionTest.jar
EXPOSE 8085
ENTRYPOINT ["java","-jar","TransactionTest.jar"]

4.Dockerfile和TransactionTest-0.0.1-SNAPSHOT.jar放到同一文件夹下
在这里插入图片描述

5.构建命令:

docker build -t transactiontest:1.0 /mnt/tempBuild

这样就可以将java项目打包成镜像了:
在这里插入图片描述
创建容器时,最好进入自定义的网络模式,然后数据库也进入这个网络模式,这样就能访问到数据库了

2. docker compose

使用docker compose编排容器,容器编排的意思是,按照容器之间的依赖关系,能一键重启docker服务,无需我们考虑容器的启动先后顺序

1.docker-compose.yml:

version: "3"

services:
  app:
    image: transactiontest:1.0
    container_name: transactiontest
    ports:
      - "8085:8085"
    volumes:
      - /app/app:/data
    networks:
      - mei_net
    depends_on:
      - mysql

  mysql:
    image: mysql:8.0.31
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: transaction_test
    ports:
      - "3306:3306"
    volumes:
      - /mnt/docker/mysql:/var/lib/mysql
    networks:
      - mei_net

networks:
  mei_net:

2.开始构建

docker compose up -d	#-d是后台运行

3.docker hub(harbor)

harbor与docker hub的关系,其实有点类似于GitLab和GitHub的关系。我们自己打好的镜像,可以上传到harbor/docker hub中进行管理。

下面以docker hub为例,实现实现镜像推送到docker hub

  1. 登录docker hub
docker login -u 1904006196
  1. 在docker hub中创建仓库
    在这里插入图片描述
  2. 使用tag命令为images重新命名。新的命名一定要对应创建docker hub创建的仓库名
docker tag transactiontest:1.0 1904006196/transactiontest:1.0
  1. 推送镜像
docker push 1904006196/transactiontest:1.0

推送成功
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值