一:使用Docker命令

1.镜像命令

docker仓库Chrome镜像 docker镜像仓库命令_docker

docker仓库Chrome镜像 docker镜像仓库命令_docker仓库Chrome镜像_02


命令解析:docker --help 通过该命令可以查询到所有的docker操作命令,

docker仓库Chrome镜像 docker镜像仓库命令_docker仓库Chrome镜像_03


通过docker 命令 --help可以查看某个命令的详细信息

docker仓库Chrome镜像 docker镜像仓库命令_容器_04

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

  • 步骤一:访问dockerHub的官方网址:https://hub.docker.com/
  • 步骤二:搜索nginx,根据查看到的镜像名称,拉取自己需要的镜像,通过命令:docker pull nginx
    如果pull后面不增加版本号,默认拉去最新的版本
  • docker仓库Chrome镜像 docker镜像仓库命令_docker_05

  • 步骤三:通过命令:docker images查看已安装的镜像
  • docker仓库Chrome镜像 docker镜像仓库命令_运维_06

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

  • 步骤一:利用docker xx --help命令查看docker save和docker load的语法
  • docker仓库Chrome镜像 docker镜像仓库命令_docker_07

  • 步骤二:使用docker save导出镜像到磁盘
  • docker仓库Chrome镜像 docker镜像仓库命令_docker仓库Chrome镜像_08

  • 步骤三:,先使用docker rmi删除nginx使用docker load加载镜像
  • docker仓库Chrome镜像 docker镜像仓库命令_mysql_09

docker仓库Chrome镜像 docker镜像仓库命令_容器_10

2.Docker镜像命令联系

docker仓库Chrome镜像 docker镜像仓库命令_容器_11

2.容器命令

容器相关命令

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

docker仓库Chrome镜像 docker镜像仓库命令_docker仓库Chrome镜像_12


创建运行一个Nginx容器

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

docker仓库Chrome镜像 docker镜像仓库命令_docker仓库Chrome镜像_13

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

docker仓库Chrome镜像 docker镜像仓库命令_docker仓库Chrome镜像_14

  • 步骤二:使用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仓库Chrome镜像 docker镜像仓库命令_mysql_15


docker仓库Chrome镜像 docker镜像仓库命令_docker_16

  • 步骤三:游览器访问成功后,通过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

docker仓库Chrome镜像 docker镜像仓库命令_mysql_17

docker仓库Chrome镜像 docker镜像仓库命令_容器_18


案例:

docker仓库Chrome镜像 docker镜像仓库命令_docker_19

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

docker仓库Chrome镜像 docker镜像仓库命令_mysql_20

3.容器卷命令

docker仓库Chrome镜像 docker镜像仓库命令_mysql_21

docker仓库Chrome镜像 docker镜像仓库命令_mysql_22


docker仓库Chrome镜像 docker镜像仓库命令_容器_23


docker仓库Chrome镜像 docker镜像仓库命令_docker_24


数据卷的作用:将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全 数据卷操作:





  • 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仓库Chrome镜像 docker镜像仓库命令_mysql_25

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

docker仓库Chrome镜像 docker镜像仓库命令_mysql_26

二:使用Docker自定义镜像

1.镜像结构

docker仓库Chrome镜像 docker镜像仓库命令_docker仓库Chrome镜像_27

docker仓库Chrome镜像 docker镜像仓库命令_mysql_28

2.自定义镜像

docker仓库Chrome镜像 docker镜像仓库命令_mysql_29


更新详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/builder

docker仓库Chrome镜像 docker镜像仓库命令_容器_30

自定义镜像文件包:
链接: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

将以上文件下载下来,放置到temp/cloud-demo文件夹内

运行该命令创建镜像:docker build -t javaweb:1.0 .

docker仓库Chrome镜像 docker镜像仓库命令_docker_31


查看并基于镜像运行容器

docker仓库Chrome镜像 docker镜像仓库命令_docker仓库Chrome镜像_32


访问项目测试 : 通过ip+端口+接口路径访问项目

docker仓库Chrome镜像 docker镜像仓库命令_mysql_33


简便版本:

将Dockefile文件内容改成:

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

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

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

使用该命令启动:docker build -t javaweb:2.0 . 在使用该命令运行容器:docker run --name web -p 8090:8090 -d javaweb:2.0

docker仓库Chrome镜像 docker镜像仓库命令_容器_34


docker仓库Chrome镜像 docker镜像仓库命令_mysql_35

3.DockerCompose

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

docker仓库Chrome镜像 docker镜像仓库命令_docker_36


安装请看这里:

链接:https://pan.baidu.com/s/14llDeYp8LqmttuMv9NKdyg?pwd=7ef3

提取码:7ef3

三:部署微服务集群

docker仓库Chrome镜像 docker镜像仓库命令_容器_37

docker仓库Chrome镜像 docker镜像仓库命令_mysql_38


docker仓库Chrome镜像 docker镜像仓库命令_mysql_39


nacos启动过于慢,建议先部署nacos,或者启动其他服务

docker-compose restart userservice gateway orderservice

四:配置自己的镜像仓库

1.简化版镜像仓库

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

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

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

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

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

vi /etc/docker/daemon.json

添加内容:

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

docker仓库Chrome镜像 docker镜像仓库命令_docker仓库Chrome镜像_40


重加载: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

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

上传镜像

docker仓库Chrome镜像 docker镜像仓库命令_docker_41


docker仓库Chrome镜像 docker镜像仓库命令_容器_42