当前位置:   article > 正文

Docker从初学到进阶二(使用Docker命令,自定义镜像,部署微服务集群,配置自己的镜像仓库)_docker save没有镜像名和版本号

docker save没有镜像名和版本号

一:使用Docker命令

1.镜像命令

在这里插入图片描述

在这里插入图片描述
命令解析:docker --help 通过该命令可以查询到所有的docker操作命令,

在这里插入图片描述
通过docker 命令 --help可以查看某个命令的详细信息
在这里插入图片描述

案例:从DockerHub中拉取一个nginx镜像并查看

  • 步骤一:访问dockerHub的官方网址:https://hub.docker.com/

  • 步骤二:搜索nginx,根据查看到的镜像名称,拉取自己需要的镜像,通过命令:docker pull nginx
    如果pull后面不增加版本号,默认拉去最新的版本
    在这里插入图片描述

  • 步骤三:通过命令:docker images查看已安装的镜像
    -

利用docker save将nginx镜像导出磁盘,然后再通过load加载回来

  • 步骤一:利用docker xx --help命令查看docker save和docker load的语法
    -

  • 步骤二:使用docker save导出镜像到磁盘
    -

  • 步骤三:,先使用docker rmi删除nginx使用docker load加载镜像
    - 、

-

2.Docker镜像命令联系

在这里插入图片描述

2.容器命令

容器相关命令

  • docker exec 进入容器执行命令
  • docker logs 查看容器运行日志
  • docker ps 查看所有运行的容器及状态
  • docker rm 删除指定容器

在这里插入图片描述
创建运行一个Nginx容器

  • 步骤一:去docker hub查看Nginx的容器运行命令
docker run --name containerName -p 80:80 -d nginx
  • 1

在这里插入图片描述

使用该命令生成用于标识容器的唯一id

在这里插入图片描述

  • 步骤二:使用docker ps查看容器状态,在游览器上访问服务器ip+80,出现下面界面代表成功。
    在这里插入图片描述
    在这里插入图片描述
    警告:如果游览器访问失败,请注意:我的是阿里云服务器+CenOS8
    方法一:查看防火墙是否关闭
    systemctl使用

systemctl unmask firewalld #执行命令,即可实现取消服务的锁定

systemctl mask firewalld # 下次需要锁定该服务时执行

systemctl start firewalld.service #启动防火墙

systemctl stop firewalld.service #停止防火墙

systemctl reloadt firewalld.service #重载配置

systemctl restart firewalld.service #重启服务

systemctl status firewalld.service #显示服务的状态

systemctl enable firewalld.service #在开机时启用服务

systemctl disable firewalld.service #在开机时禁用服务

systemctl is-enabled firewalld.service #查看服务是否开机启动

systemctl list-unit-files|grep enabled #查看已启动的服务列表

systemctl --failed #查看启动失败的服务列表
方法二:配置服务器的安全组
进入阿里云,选择云服务器ECS
在这里插入图片描述
在这里插入图片描述

  • 步骤三:游览器访问成功后,通过docker logs nginx查看日志
    -
docker exec -it mn bash
cd /usr/share/nginx/html
sed -i 's#Welcome to nginx#传智教育欢迎您#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

在这里插入图片描述
案例:
在这里插入图片描述

docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes
  • 1

在这里插入图片描述

3.容器卷命令在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
数据卷的作用:将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全
数据卷操作:

  • docker volume create
  • docker volume ls
  • docker volume inspect
  • docker volume rm
  • docker volume prune
    在这里插入图片描述
    在这里插入图片描述

4.容器卷命令案例(创建一个MySQL容器)

  • 步骤一:拉取mysql镜像:docker pull mysql:8.0
  • 步骤二:创建目录/tmp/mysql/data,/tmp/mysql/conf,将我提供的hmy.cng文件上传到/tmp/mysql/conf
  • 步骤三:去DockerHub查阅资料,创建并运行MySQL容器,要求:
    在这里插入图片描述

在这里插入图片描述


docker run \
       --name mysql \
       -p 3306:3306 \
       -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf  \
       -v /tmp/mysql/data:/var/lib/mysql  \
       -e MYSQL_ROOT_PASSWORD=12345 \
       -d mysql:8.0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

二:使用Docker自定义镜像

1.镜像结构

在这里插入图片描述

在这里插入图片描述

2.自定义镜像

在这里插入图片描述
更新详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/builder
在这里插入图片描述

自定义镜像文件包:
链接:https://pan.baidu.com/s/128FRCwlL5NZnZ08zqLIEhQ?pwd=t8xs
提取码:t8xs
Dockerfile的内容如下:

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local

# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar

# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8

# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

将以上文件下载下来,放置到temp/cloud-demo文件夹内
运行该命令创建镜像:docker build -t javaweb:1.0 .
在这里插入图片描述
查看并基于镜像运行容器
在这里插入图片描述
访问项目测试 : 通过ip+端口+接口路径访问项目
在这里插入图片描述
简便版本:
将Dockefile文件内容改成:

# 指定基础镜像
FROM java:8-alpine

# 拷贝jdk和java项目的包
COPY ./docker-demo.jar /tmp/app.jar

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

使用该命令启动:docker build -t javaweb:2.0 .
在使用该命令运行容器:docker run --name web -p 8090:8090 -d javaweb:2.0
在这里插入图片描述
在这里插入图片描述

3.DockerCompose

作用:帮助我们快速部署分布式应用,无需一个个微服务去构建镜像和部署。

在这里插入图片描述
安装请看这里:
链接:https://pan.baidu.com/s/14llDeYp8LqmttuMv9NKdyg?pwd=7ef3
提取码:7ef3

三:部署微服务集群

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
nacos启动过于慢,建议先部署nacos,或者启动其他服务

docker-compose restart userservice gateway orderservice
  • 1

四:配置自己的镜像仓库

1.简化版镜像仓库

Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。
搭建方式比较简单,命令如下:

sh docker run -d \ --restart=always \ --name registry	\ -p 5000:5000 \ -v registry-data:/var/lib/registry \ registry
  • 1

命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。
访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像

2.带有图形化界面版本:

由于我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:

vi /etc/docker/daemon.json
  • 1

添加内容:

"insecure-registries":["http://192.168.150.101:8080"]
  • 1

在这里插入图片描述
重加载:systemctl daemon-reload
重启docker:systemctl restart docker

在tmp目录下新建registry-ui目录,新建一个docker-compose.yml文件夹,修改该文件

version: '3.0'
services:
  registry:
    image: registry
    volumes:
      - ./registry-data:/var/lib/registry
  ui:
    image: joxit/docker-registry-ui:static
    ports:
      - 8080:80
    environment:
      - REGISTRY_TITLE=传智教育私有仓库
      - REGISTRY_URL=http://registry:5000
    depends_on:
      - registry
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

使用以下命令启动:docker-compose up -d
访问:http://47.92.165.116/8080

上传镜像
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/80395
推荐阅读
相关标签
  

闽ICP备14008679号