一、Docker基本操作

1、镜像操作

拉取镜像:

docker pull nginx

查看拉取到的镜像:

docker images

保存镜像:

docker save -o [保存的目标文件名称] [镜像名称]

使用docker save导出镜像到磁盘

docker save -o nginx.tar nginx:latest

使用docker load加载镜像

先删除本地的nginx镜像:

docker rmi nginx:latest

然后运行命令,加载本地文件:

docker load -i nginx.tar

2、容器操作

1、运行 暂停 恢复 停止 启动 删除

  • docker run:创建并运行一个容器,处于运行状态 - docker pause:让一个运行的容器暂停 - docker unpause:让一个容器从暂停状态恢复运行 - docker stop:停止一个运行的容器 - docker start:让一个停止的容器再次运行 - docker rm:删除一个容器

    2、进入容器命令

  • docker exec :进入容器内部,执行一个命令

  • -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
  • mn :要进入的容器的名称
  • bash:进入容器后执行的命令,bash是一个linux终端交互命令

docker exec -it mn bash

3、查看容器日志:

docker logs -f 添加 -f 参数可以持续查看日志

4、查看容器状态:

docker ps docker ps -a 查看所有容器,包括已经停止的

3、数据卷(容器数据管理)

1、基本语法:

docker volume [COMMAND]

docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

  • create 创建一个volume
  • inspect 显示一个或多个volume的信息
  • ls 列出所有的volume
  • prune 删除未使用的volume
  • rm 删除一个或多个指定的volume

① 创建数据卷

docker volume create html

② 查看所有数据

docker volume ls

③ 查看数据卷详细信息卷

docker volume inspect html

2、挂载数据卷:

① 创建容器并挂载数据卷到容器内的HTML目录
docker run —name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx
这里的-v就是挂载数据卷的命令:

  • -v html:/root/html :把html数据卷挂载到容器内的/root/html这个目录中

② 进入html数据卷所在位置,并修改HTML内容
# 查看html数据卷的位置 docker volume inspect html # 进入该目录 cd /var/lib/docker/volumes/html/_data # 修改文件 vi index.html

3、容器挂载宿主机目录上

  • 带数据卷模式:宿主机目录 —> 数据卷 —-> 容器内目录
  • 直接挂载模式:宿主机目录 —-> 容器内目录

目录挂载与数据卷挂载的语法是类似的:

  • -v [宿主机目录]:[容器内目录]
  • -v [宿主机文件]:[容器内文件]

例子:挂载mysql
① 挂载/tmp/mysql/data到mysql容器内数据存储目录

② 设置MySQL密码

docker run —restart=always -p 3306:3306 —name mysql -v /tmp/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.25

docker run的命令中通过 -v 参数挂载文件或目录到容器中:

  • -v volume名称:容器内目录
  • -v 宿主机文件:容器内文
  • -v 宿主机目录:容器内目录

数据卷挂载与目录直接挂载的

  • 数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找
  • 目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看

    4、docker安装一些软件

    1、mysql

    —restart=always : 随着docker重启而重启
    -v /root/docker/mysql/data:/var/lib/mysql : 挂载mysql容器的数据到宿主机的/root/docker/mysql目录
    -e MYSQL_ROOT_PASSWORD=root : 设置密码为root
    docker run —restart=always -p 3307:3306 —name mysql -v /root/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.37

    2、redis

    —appendonly yes :持久化
    docker run —restart=always —name redis -d -p 6379:6379 redis:6.2.5 redis-server —appendonly yes —requirepass “Thq@@20000623”

    3、m1安装nacos

    docker pull zhusaidong/nacos-server-m1:2.0.3 docker run —name nacos-standalone -e MODE=standalone -e JVM_XMS=512m -e JVM_XMX=512m -e JVM_XMN=256m -p 8848:8848 -d zhusaidong/nacos-server-m1:2.0.3

    4、安装RabbitMQ

    docker run \ -e RABBITMQ_DEFAULT_USER=itcast \ -e RABBITMQ_DEFAULT_PASS=123321 \ -v mq-plugins:/plugins \ —name mq \ —hostname mq \ -p 15672:15672 \ -p 5672:5672 \ -d \ rabbitmq
    接着进入容器内启动管理面板
    docker ps docker exec -it 镜像ID /bin/bash rabbitmq-plugins enable rabbitmq_management

    镜像仓库-简易版本

    Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。

搭建方式比较简单,命令如下:

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 可以查看当前私有镜像服务中包含的镜像

镜像仓库-图形化版本

使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:

vi docker-compose.yaml

内容如下:

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=MyRegistry - REGISTRY_URL=http://registry:5000 depends_on: - registry

接着输入命令

docker-compose up -d

然后访问端口http://YOURIP:8080
配置docker信任地址
我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:

  1. # 打开要修改的文件 vi /etc/docker/daemon.json # 添加内容: "insecure-registries":["http://111.73.46.209:8080/"] "insecure-registries":["http://192.168.200.130:5000"] # 重加载 systemctl daemon-reload # 重启docker systemctl restart docker