Docker基础命令

1、安装Docker:

  1. 安装Docker官方 yum源:

    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  2. 安装Docker

    yum install -y docker-ce
    
  3. 设置Docker开机自启动:

    systemctl enable docker
    
  4. 启动Docker服务:

    systemctl start docker
    
  5. 验证Docker是否安装成功:

    docker version
    
  6. 修改Docker镜像仓库:

    # vim /etc/docker/daemon.json
    {
      "registry-mirrors": ["https://d3mf5ikh.mirror.aliyuncs.com/"]
    }
    
  7. 查看Docker的详细信息:

    docker info
    

2、镜像操作:

  1. 下载镜像:

    docker pull [image_name]
    
  2. 查看本地已下载的镜像:

    docker images
    
  3. 删除镜像:

    docker rmi [image_id]
    docker rmi [image_id]:tags         # 删除指定版本号的镜像
    

3、容器操作:

  1. 启动容器:

    docker run --name [container_name] -d -p [宿主机port:容器port] -v [宿主机磁盘目录:容器目录] [image_name]
    # 示例如下:
    docker run --name nginx -d -p 8080:80 -v /data:/usr/share/nginx/html nginx
    # -p : 表示端口映射,将容器中的端口映射到宿主机上的指定端口。
    # -v :  表示目录挂载,将容器内的指定目录挂载到宿主机指定目录下。
    # --link: 表示此容器需要连接另一个容器。
    
  2. 查看已启动的容器:

    docker ps -al
    
  3. 停止容器:

    docker stop [container_id]
    
  4. 删除容器:

    docker rm [container_id]         # 需要先stop容器
    docker rm -f [container_id]      # 强制直接删除容器
    
  5. 进入容器内部:

    docker exec -it [container_id] /bin/bash
    # i : 表示标注你输入
    # t : 表示开启一个Terminal终端
    
  6. 查看容器详细信息:

    docker inspect [container_id]
    

4、网络操作:

  1. 显示已创建的所有网络:

    docker network  ls
    
  2. 不指定网络驱动时默认创建的bridge网络:

    docker network create [network_name]
    
  3. 查看指定网络的内部信息:

    docker network inspect [network_name]
    
  4. 删除指定网络:

    docker network rm [network_name]
    

5、Dockerfile编写:

  1. Dockerfile编写规则说明:

    # 基础镜像,如果本地没有,会从远程仓库拉取,尽量使用官方的image作为base image
    FROM centos
    # 镜像的制作人
    MAINTAINER "zjg_num01@163.com"
    # 一条RUN就是一个分层,对于复杂的RUN命令。避免无用的分层,多条命令用&&符连接并用反斜线换行,合成一条命令
    RUN yum update && install -y vim 
        Python-dev
    # 类似于linux的cd命令,改变工作目录,没有目录会自动创建,尽量使用绝对路径,不要用 Run cd 增加分层   
    WORKDIR /root
    # 将本地文件添加到镜像根目录并自动解压
    ADD test.tar.gz /
    # 将本地文件拷贝到镜像根目录,等同于上述ADD效果,没有解压功能
    COPY hello /
    
    # ADD与COPY的区别,优先使用COPY命令,ADD除了COPY功能还有解压功能
    
    # 容器对外需要暴露的端口号
    EXPOSE 80
    
    # 定义环境变量
    ENV MYSQL_VERSION 5.6
    
  2. 编写一个简单的Dockerfile示例:

    FROM nginx:1.17.6
    ENV LANG en_US.UTF-8
    ADD index.html /usr/share/nginx/html
    EXPOSE 80
    EXPOSE 443
    
  3. 通过Dockerfile构建Docker镜像:

    docker build -t nginx:0.0.1 .
    # -f : 可以指定要使用的Dockerfile路径.
    # -m : 可以设置内存最大值.
    # -t : 可以指定镜像名称及版本.
    # .  : 指定构建镜像的上下文路径,docker build 会将这个路径下所有的文件都打包上传给Docker引擎
    
  4. 启动镜像:

    docker run -d -p 8080:80 nginx:0.0.1
    

6、DockerHub:

  1. 登录DockerHub

    # 注册DockerHub后,登录DockerHub ,注意登录时的username是注册的Docker ID
    docker login
    
  2. 标记本地镜像:

    # 标记本地镜像,将本地镜像打tag,也可以理解为重命名
    docker tag [source_images_name]:[source_image_tag] [registryhost]/[image_name]:[image_tag]
    # source_images_name: 表示原始镜像名称.
    # source_image_tag: 表示原始镜像版本,可选参数.
    # registryhost:表示仓库名称,可选参数.
    # image_name:表示仓库内的镜像名称.
    # image_tag: 表示仓库内的镜像版本,可选参数.
    
  3. 推送镜像到DockerHub

    docker push [registryhost]/[image_name]:[image_tag]
    
  4. DockerHub中下载镜像:

    docker pull [registryhost]/[image_name]:[image_tag]
    

7、DockerCompose部署Spring Boot应用:

  1. 安装DockerCompose

    • 下载docker-compose二进制执行文件:

      sudo curl -L https://github.com/docker/compose/releases/download/1.29.1/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
      
    • 配置docker-compose二进制文件可执行权限:

      sudo chmod +x /usr/local/bin/docker-compose
      
    • 测试docker-compose是否安装成功:

      docker-compose version
      
  2. 编译Spring Boot

    cd pig/                                      # 进入应用根目录下
    mvn clean package -Dmaven.test.skip=true     # 通过maven编译打包
    
  3. 编写Spring Boot应用的Dockerfile

    FROM java:8
    WORKDIR /gateway-service
    # 相对于父模块的docker-compose文件的相对路径,而不是相对于Dockerfile的相对路径
    ADD ./gateway-service/target/gateway-service.jar ./   
    # 相对于Dockerfile的相对路径
    # ADD target/gateway-service.jar ./   
    EXPOSE 9999
    RUN java -jar gateway-servcice.jar
    
  4. 编写Spring Boot应用docker-compose.yaml

    version: "3"
    services:
      # gateway-sertvice
      gateway-service:
        build:
          context: ./
          dockerfile: ./gateway-service/Dockerfile
        environment:
          - JAVA_OPTS=-Xmx512M -Dspring.profiles.active=dev
        image: microservice/gateway-service:v1.0
        container_name: gateway-service
        hostname: gateway
        restart: always
        ports:
          - "9090:9090"
        volumes:
          - /usr/lcoal/dev/microservice/logs:/home/portal/web/logs/
    
  5. 通过docker-compose构建镜像:

    docker-compose build .
    # 说明:
    #    既然可以通过docker build可以直接操作Dockerfile文件构建镜像,为什么还要通过docker-compose build?
    #    docker-compose.yaml中可以实现模块下多个微服务的镜像构建,通过指定每个微服务Dockerfile位置即可
    #    Dockerfile用于模块下单个微服务的镜像构建
    
  6. 通过docker-compose启动容器:

    docker-compose up -d
    
  7. 通过docker-compose查看容器日志:

    docker-compose logs -f 
    
  8. 通过docker-compose停止容器:

    docker-compose stop        # 只停止容器工作,可以通过docker-compose start 再次启动
    docker-compose down        # 停止容器、删除镜像、删除网络及挂载
    
原文地址:https://www.cnblogs.com/xiaoshuzhagen/p/14711645.html