Docker快速入门

注意:这里使用的是centos 7的版本

安装

  1. 移除旧版本docker

    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
    
  2. 配置docker的yum源

    sudo yum install -y yum-utils
    sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  3. 安装最新的docker

    sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  4. 配置开机启动

    # enable + start 二合一
    systemctl enable docker --now
    
  5. 配置加速(可能被ban了,我是换了其他的源)

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

docker常用命令

#查看运行中的容器
docker ps
#查看所有容器
docker ps -a
#搜索镜像
docker search nginx
#下载镜像
docker pull nginx
#下载指定版本镜像
docker pull nginx:1.26.0
#查看所有镜像
docker images
#删除指定id的镜像
docker rmi e784f4560448

#运行一个新容器
docker run nginx
#停止容器
docker stop keen_blackwell
#启动容器
docker start 592
#重启容器
docker restart 592
#查看容器资源占用情况
docker stats 592
#查看容器日志
docker logs 592
#删除指定容器
docker rm 592
#强制删除指定容器
docker rm -f 592
# 后台启动容器
docker run -d --name mynginx nginx
# 后台启动并暴露端口
docker run -d --name mynginx -p 80:80 nginx
# 进入容器内部
docker exec -it mynginx /bin/bash

# 提交容器变化打成一个新的镜像
docker commit -m "update index.html" mynginx mynginx:v1.0
# 保存镜像为指定文件
docker save -o mynginx.tar mynginx:v1.0
# 删除多个镜像
docker rmi bde7d154a67f 94543a6c1aef e784f4560448
# 加载镜像
docker load -i mynginx.tar 

# 登录 docker hub
docker login
# 重新给镜像打标签
docker tag mynginx:v1.0 leifengyang/mynginx:v1.0
# 推送镜像
docker push leifengyang/mynginx:v1.0

存储

两种方式:

1. 目录挂载:`-v /app/nghtml:/usr/share/nginx/html`
2. 卷映射:`-v ngconf:/etc/nginx`
docker run -d -p 99:80 \
-v /app/nghtml:/usr/share/nginx/html \
-v ngconf:/etc/nginx \
--name app03 \
nginx

网络

创建自定义网络,实现主机名作为稳定域名访问。

  1. Redis主从同步集群

    #自定义网络
    docker network create mynet
    #主节点
    docker run -d -p 6379:6379 \
    -v /app/rd1:/bitnami/redis/data \
    -e REDIS_REPLICATION_MODE=master \
    -e REDIS_PASSWORD=123456 \
    --network mynet --name redis01 \
    bitnami/redis
    
    #从节点
    docker run -d -p 6380:6379 \
    -v /app/rd2:/bitnami/redis/data \
    -e REDIS_REPLICATION_MODE=slave \
    -e REDIS_MASTER_HOST=redis01 \
    -e REDIS_MASTER_PORT_NUMBER=6379 \
    -e REDIS_MASTER_PASSWORD=123456 \
    -e REDIS_PASSWORD=123456 \
    --network mynet --name redis02 \
    bitnami/redis
    
  2. 启动MySQL

    docker run -d -p 3306:3306 \
    -v /app/myconf:/etc/mysql/conf.d \
    -v /app/mydata:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql:8.0.37-debian
    

Docker Compose

  1. 命令式安装

    #创建网络
    docker network create blog
    
    #启动mysql
    docker run -d -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -e MYSQL_DATABASE=wordpress \
    -v mysql-data:/var/lib/mysql \
    -v /app/myconf:/etc/mysql/conf.d \
    --restart always --name mysql \
    --network blog \
    mysql:8.0
    
    #启动wordpress
    docker run -d -p 8080:80 \
    -e WORDPRESS_DB_HOST=mysql \
    -e WORDPRESS_DB_USER=root \
    -e WORDPRESS_DB_PASSWORD=123456 \
    -e WORDPRESS_DB_NAME=wordpress \
    -v wordpress:/var/www/html \
    --restart always --name wordpress-app \
    --network blog \
    wordpress:latest
    
  2. compose.yaml

    name: myblog
    services:
      mysql:
        container_name: mysql
        image: mysql:8.0
        ports:
          - "3306:3306"
        environment:
          - MYSQL_ROOT_PASSWORD=123456
          - MYSQL_DATABASE=wordpress
        volumes:
          - mysql-data:/var/lib/mysql
          - /app/myconf:/etc/mysql/conf.d
        restart: always
        networks:
          - blog
    
      wordpress:
        image: wordpress
        ports:
          - "8080:80"
        environment:
          WORDPRESS_DB_HOST: mysql
          WORDPRESS_DB_USER: root
          WORDPRESS_DB_PASSWORD: 123456
          WORDPRESS_DB_NAME: wordpress
        volumes:
          - wordpress:/var/www/html
        restart: always
        networks:
          - blog
        depends_on:
          - mysql
    
    volumes:
      mysql-data:
      wordpress:
    
    networks:
      blog:
    
  3. 特性

    • 增量更新

    • 修改 Docker Compose 文件。重新启动应用。只会触发修改项的重新启动。

    • 数据不删

    • 默认就算down了容器,所有挂载的卷不会被移除。比较安全

Dockerfile

里面是app.jar,有需要可以下载
https://www.123pan.com/s/q1WEjv-MwyHh.html提取码:C1vM

FROM openjdk:17

LABEL author=leifengyang

COPY app.jar /app.jar

EXPOSE 8080

ENTRYPOINT ["java","-jar","/app.jar"]

注意:本篇博客内容为转载,内容均来自尚硅谷的雷丰阳老师,目的仅为自用,方便查找,如有侵权,联系必删

转载地址:https://www.yuque.com/leifengyang/sutong/au0lv3sv3eldsmn8

posted @   wuqijiu  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示