docker常用命令

0. Docker常用命令:

sudo ...                                          以超级管理员权限运行
su root                     切换到root用户    Password:vagrant
ls                                                   查看当前目录下的文件及目录
ls /                                                参数'/'是根目录的意思,表示显示根目录下的文件及目录
whoami                    显示当前登录用户
sudo systemctl start docker          启动docker
docker images                              查看docker镜像
sudo systemctl enable docker      设置docker虚拟机开机自动启动  
docker ps                 命令用来展示所有运行中的容器
docker ps -a             命令是用来展示所有所有的容器,包括未运行的容器      

docker rm mysql                           删除容器     
docker start mysql                        启动mysql
docker restart mysql                     重启mysql
docker update mysql --restart=always   开机自动启动mysql服务
docker update redis --restart=always     开机自动启动redis服务
systemctl enable redis                   redis开机自启
docker exec -it mysql /bin/bash   进入docker的mysql容器内部的命令
docker exec -it redis redis-cli        进入redis客户端命令

通过容器名查看容器ip地址:

  eg: 查看mysql容器启动的mysql服务的ip地址命令:

  docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql

  当然也可以通过容器id启动:

  docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' a1b2c3d4e5f6docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' some-mysqldocker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' some-mysqldocker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' some-mysql
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' a1b2c3d4e5f6       

 

1. Docker的安装和配置(centos下)

  1) 卸载旧版Docker:

    yum remove docker \
        docker-client \
        docker-client-latest \
        docker-common \
        docker-latest \
        docker-latest-logrotate \
        docker-logrotate \
        docker-engine

  2) 配置yum源:

    ① 安装yum工具:yum install -y yum-utils

    ② 配置Docker的yum源:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

  3)安装Docker:

    yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

  4) 启动和校验:

    # 启动Docker
      systemctl start docker
    # 停止Docker
      systemctl stop docker
    # 重启
      systemctl restart docker
    # 设置开机自启
      systemctl enable docker
    # 执行docker ps命令,如果不报错,说明安装启动成功
      docker ps

  5) 配置镜像加速器:

    ① 获取镜像加速器::登录自己的阿里云账号,找到容器镜像服务里的镜像加速器,就可以看到加速器地址了。

    ② 配置加速器:根据页面里的操作文档配置docker镜像加速器。

    sudo mkdir -p /etc/docker

    sudo tee /etc/docker/daemon.json <<-'EOF'

    {

      "registry-mirrors": ["https://olwe2ik2.mirror.aliyuncs.com"] 

    }

    EOF

    sudo systemctl daemon-reload

    sudo systemctl restart docker

 

2. docker 安装mysql:

  docker run -d \
    --name mysql \
    -p 3306:3306 \
    -e TZ=Asia/Shanghai \
    -e MYSQL_ROOT_PASSWORD=123 \
    mysql

解读:
    docker run: 这是Docker用于运行容器的基本命令。
    -d: 表示以守护进程模式运行容器,即在后台运行。
    --name mysql: 指定容器的名称,这里命名为mysql。
    -p 3306:3306: 将宿主机的3306端口映射到容器内的3306端口,这样就可以通过宿主机的3306端口访问MySQL服务。
    -e TZ=Asia/Shanghai: 设置环境变量,将容器内的时区设置为亚洲/上海时区。
    -e MYSQL_ROOT_PASSWORD=123: 设置环境变量,初始化MySQL的root用户密码为123。
    mysql: 要运行的Docker镜像的名称,这里是MySQL的官方镜像。

3. docker 列出容器相关信息:docker ps

4. 进入容器内部:eg:docker exec -it nginx bash
5.docker hub官网:hub.docker.com
6. ① docker创建mysql容器并挂载数据库

  参考博客:https://blog.csdn.net/qq_69183322/article/details/138058020

     基于宿主机目录实现MySQL数据目录、配置文件、初始化脚本的挂载(查阅官方镜像文档)

  docker run -d \
    --name mysql \
    -p 3306:3306 \
    -e TZ=Asia/Shanghai \
    -e MYSQL_ROOT_PASSWORD=123 \
    -v ./mysql/data:/var/lib/mysql \
    -v ./mysql/conf:/etc/mysql/conf.d \
    -v ./mysql/init:/docker-entrypoint-initdb.d \
    mysql

 ② docker 创建nginx容器并挂载前端html文件和nginx配置文件:

  docker run -d \
      --name nginx \
      -p 18080:18080 \
      -p 18081:18081 \
      -v /root/nginx/html:/usr/share/nginx/html \
      -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \
      --network heima \
      nginx

   其中:① 两个-p是因为有两个前端项目,nginx配置文件里配置了两个前端端口,html文件里是两个前端项目,② -v /root/nginx/nginx.conf 挂载的是配置文件不是目录 ③ --network heima 是连接到heima网桥。

 7. Dockerfile 构建镜像命令:

  eg:

  # 基础镜像
  FROM openjdk:11.0-jre-buster
  # 设定时区
  ENV TZ=Asia/Shanghai
  RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
  # 拷贝jar包
  COPY docker-demo.jar /app.jar
  # 入口
  ENTRYPOINT ["java", "-jar", "/app.jar"]

 8. docker 容器连接自己创建的网桥:

 eg: mysql容器连接 testwangqiao 网桥:

  docker network connect testwangqiao mysql

         查看容器详情:docker inspect mysql

 9. DockerCompose:

   使用dockercompose部署容器前先删除mysql、nginx、hm容器:

   docker rm -f mysql nginx hm

   按照docker-compose.yml文件构建并部署容器和网桥:
   docker compose up -d

   停止和删除容器:
   docker compose down

   查看网桥
   docker network ls

10.DockerComplse 根据docker-compose.yml文件实现对docker容器集群的快速编排:

  docker-compose.yml文件示例:

version: "3.8"
services:
  mysql:
    image: mysql
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123
    volumes:
      - "./mysql/conf:/etc/mysql/conf.d"
      - "./mysql/data:/var/lib/mysql"
      - "./mysql/init:/docker-entrypoint-initdb.d"
    networks:
      - hm-net
  hmall:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: hmall
    ports:
      - "8080:8080"
    networks:
      - hm-net
    depends_on:
      - mysql
  nginx:
    image: nginx
    container_name: nginx
    ports:
      - "18080:18080"
      - "18081:18081"
    volumes:
      - "./nginx/nginx.conf:/etc/nginx/nginx.conf"
      - "./nginx/html:/usr/share/nginx/html"
    depends_on:
      - hmall
    networks:
      - hm-net
networks:
  hm-net:
    name: hmall 

 

>11. docker 配置了阿里镜像下载镜像时还是报错:Error response from daemon: Get “https://registry-1.docker.io/v2/“: net/http: request canceled

分析:1. 没有成功配置国内镜像源

           2. 需要配置DNS

解决:1.配置镜像源:

    修改docker的daemon.json文件为以下内容:

    sudo vim /etc/docker/daemon.json

    {
         "max-concurrent-downloads": 10,
         "max-concurrent-uploads": 5,
         "default-shm-size": "1G",
         "debug": true,
         "experimental": false,
         "registry-mirrors":[
                   "https://x9r52uz5.mirror.aliyuncs.com",
                   "https://dockerhub.icu",
                   "https://docker.chenby.cn",
                   "https://docker.1panel.live",
                   "https://docker.awsl9527.cn",
                   "https://docker.anyhub.us.kg",
                   "https://dhub.kubesre.xyz"
            ]
    }

    2.配置DNS:

    sudo vim /etc/resolv.conf

             

     上面两个东西配置好后重启即可:

     systemctl daemon-reload

     systemctl restart docker

 >12 docker 安装nacos

  转自:https://blog.csdn.net/ilvjiale/article/details/129417768

  安装之前你需要准备一个mysql,当前安装方式是将数据持久化到数据库中的,这里的部署是单机模式

  1、Docker 拉取镜像 (这是拉取最新的nacos版本,如果需要拉取别的版本可以加:版本号(如:docker pull nacos/nacos-server:v2.2.0))
  docker pull nacos/nacos-server

  2、挂载目录 (这一步是添加映射文件夹,将宿主机的文件映射到nacos容器中)
  mkdir -p /mydata/nacos/logs/                      #新建logs目录
  mkdir -p /mydata/nacos/conf/                        #新建conf目录

  3.启动nacos并复制文件到宿主机,关闭容器
  启动容器
  docker run -p 8848:8848 --name nacos -d nacos/nacos-server

  复制文件
  docker cp nacos:/home/nacos/logs/ /mydata/nacos/
  docker cp nacos:/home/nacos/conf/ /mydata/nacos/

  关闭容器
  docker rm -f nacos

  这一步启动nacos是为了将nacos里面的文件拷贝出到挂载目录中,这样我们就可以直接修改挂载目录中文件来映射到容器里面去了。

  4、mysql中创建nacos所需的表
  mysql中新建一个库,名字可自定义,这里就用nacos-config
  从github中找到创建表的文件,在nacos-config库中执行,创建所需的表
  5、再次启动nacos
  docker run -d
  --name nacos                                                             
  -p 8848:8848  -p 9848:9848 -p 9849:9849
  --privileged=true
  -e JVM_XMS=256m
  -e JVM_XMX=256m
  -e MODE=standalone
  -v /mydata/nacos/logs/:/home/nacos/logs
  -v /mydata/nacos/conf/:/home/nacos/conf/
  --restart=always
  nacos/nacos-server
  

  或者:
  docker run -d --name nacos -p 8848:8848  -p 9848:9848 -p 9849:9849 --privileged=true -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone -v /mydata/nacos/logs/:/home/nacos/logs -v /mydata/nacos/conf/:/home/nacos/conf/ --restart=always nacos/nacos-server

语句讲解
    docker run -d : 启动容器 -d是后台启动并返回容器id的意思
    –name nacos :为容器指定一个名称
    -p 8848:8848 -p 9848:9848 -p 9849:9849 : 指定端口映射,注意这里的p不能大写,大写是随机端口映射
    –privileged=true : 扩大容器内的权限,将容器内的权限变为root权限,不加的话就是普通用户权限,可能会出现cannot open directory
    -e JVM_XMS=256m : 为jvm启动时分配的内存
    -e JVM_XMX=256m : 为jvm运行过程中分配的最大内存
    -e MODE=standalone : 使用 standalone模式(单机模式),MODE值有cluster(集群)模式/standalone模式两种,MODE必须大写
    -v /mydata/nacos/logs/:/home/nacos/logs : 将容器的/home/nacos/logs目录挂载到 /mydata/nacos/logs
    -v /mydata/nacos/conf/:/home/nacos/conf/: 将容器的/home/nacos/conf目录挂载到 /mydata/nacos/conf
    –restart=always :重启docker时,自动启动相关容器

  注意事项
    1.需要在防火墙开放相关端口,如果你是云服务器,开放安全组,下面提供相关语句
    ## 开放端口8848 9848 9849
    firewall-cmd --zone=public --add-port=8848/tcp --permanent
    firewall-cmd --zone=public --add-port=9848/tcp --permanent
    firewall-cmd --zone=public --add-port=9849/tcp --permanent

    ## 重启防火墙
    firewall-cmd --reload

    ## 查看所有开启的端口
    firewall-cmd --zone=public --list-ports

    这里有点小问题,重启完防火墙之后,需要重启docker
    ## 重启docker
    systemctl restart docker

    2.这里最容易犯错的就是挂载目录对应不上,可以看下自己语句中的-v 后面的目录是否映射正确,博主第一次安装的时候logs里面还有一个logs文件夹,conf里面还有个conf文件夹,导致出错

  6、修改配置文件
  主要修改的是application.properties文件:
  ## 在宿主机中修改application.properties文件
  vim /mydata/nacos/conf/application.properties

  文件修改的地方(修改为你对应的mysql)

  spring.datasource.platform=mysql
  db.num=1
  db.url.0=jdbc:mysql://localhost:3306/nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
  db.user=root
  db.password=root

  ---------------------------------------------------------------------------

  eg:

  #*************** Config Module Related Configurations ***************#
  ### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
  #spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:}
  spring.sql.init.platform=${SPRING_DATASOURCE_PLATFORM:mysql}
  nacos.cmdb.dumpTaskInterval=3600
  nacos.cmdb.eventTaskInterval=10
  nacos.cmdb.labelTaskInterval=300
  nacos.cmdb.loadDataAtStart=false
  db.num=1
  db.url.0=jdbc:mysql://192.1.3.166:3306/ry_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
  db.user.0=root
  db.password.0=jw_PIS1234

  ---------------------------------------------------------------------------
  因为我们在第三步已经复制了logs和conf到了我们的宿主机里面,那么我们可以直接修改application.properties文件映射到容器里,可以通过下面的语句来查看

  ## 进入到nacos容器里
  docker exec -it nacos /bin/bash

  ## 查看application.properties文件
  cat /home/nacos/conf/application.properties

  ## 退出容器
  exit

  如果文件没有修改成功的话,说明挂载目录映射的不对,仔细查看一下,可以通过下面的方法来查看是否正确

  docker inspect --format="{{json .Mounts}}" nacos

  

   7.访问页面:http://ip:8848/nacos/index.html

>13. docker配置镜像加速器:

① ubuntu:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://l10nt4hq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

 ② centos:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://l10nt4hq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

 

>14  导入压缩好的镜像命令:docker load -i redis.tar

 

posted @   sensen~||^_^|||&  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示