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中查找

-----------------------------------------------------------------------------------------------
例子:创建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 log 容器id
  1. 打包docker镜像
docker build -t 镜像名:tag  dir	#镜像名只能全小写。dir指jar包与Dockerfile所在的文件夹路径
  1. 查看容器信息
docker inspect 容器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目录如下:
docker + docker compose + docker hub(harbor)快速入门_第1张图片

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中创建仓库
    docker + docker compose + docker hub(harbor)快速入门_第2张图片
  2. 使用tag命令为images重新命名。新的命名一定要对应创建docker hub创建的仓库名
docker tag transactiontest:1.0 1904006196/transactiontest:1.0
  1. 推送镜像
docker push 1904006196/transactiontest:1.0

推送成功
docker + docker compose + docker hub(harbor)快速入门_第3张图片

你可能感兴趣的:(docker,容器)