黑马程序员Docker快速入门到项目部署笔记

视频来源:

01.Docker课程介绍_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1HP4118797?p=1

Docker官网:

docker build | Docker Docsicon-default.png?t=N7T8https://docs.docker.com/reference/cli/docker/image/build/

一、Docker的安装和配置 

1.卸载旧版Docker

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

2.配置yum源

(1)安装yum工具

yum install -y yum-utils

(2) 配置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.获取镜像加速器

容器镜像服务 (aliyun.com)icon-default.png?t=N7T8https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

 二、Docker部署Mysql

注意:如果已经安装了mysql需要执行下面的命令:

systemctl stop mysqld

systemctl disable mysqld

1.安装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的官方镜像。

三、Docker操作

3.1入门实例:

docker pull nginx

docker images

docker save -o nginx.tar nginx:latest

docker images

docker load -i nginx:latest
docker ps

docker start nginx

docker ps

docker stop nginx

docker ps -a

docker start nginx

docker logs nginx

docker logs -f nginx



docker exec -it nginx bash

ls -l

exit

docker exec -it mysql bash

docker exec -it mysql mysql -uroot -p123

exit 

docker stop mysql

docker rm mysql

docker start mysql 

docker rm mysql -f

3.2设置命令别名

(1)

# 修改/root/.bashrc文件
vi /root/.bashrc
内容如下:
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
alias dis='docker images'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

(2) 别名命令生效

source /root/.bashrc

3.3 Docker数据卷

docker ps

docker rm -f nginx

docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx

docker volume ls

docker volume inspect html

cd /var/lib/docker/volumes/html/_data

ll

 

 四、本地目录的挂载

# 1.删除原来的MySQL容器
docker rm -f mysql

# 2.进入root目录
cd ~

# 3.创建并运行新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

# 4.查看root目录,可以发现~/mysql/data目录已经自动创建好了
ls -l mysql
# 结果:
总用量 4
drwxr-xr-x. 2 root    root   20 5月  19 15:11 conf
drwxr-xr-x. 7 polkitd root 4096 5月  19 15:11 data
drwxr-xr-x. 2 root    root   23 5月  19 15:11 init

# 查看data目录,会发现里面有大量数据库数据,说明数据库完成了初始化
ls -l data

# 5.查看MySQL容器内数据
# 5.1.进入MySQL
docker exec -it mysql mysql -uroot -p123
# 5.2.查看编码表
show variables like "%char%";
# 5.3.结果,发现编码是utf8mb4没有问题
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | utf8mb4                        |
| character_set_connection | utf8mb4                        |
| character_set_database   | utf8mb4                        |
| character_set_filesystem | binary                         |
| character_set_results    | utf8mb4                        |
| character_set_server     | utf8mb4                        |
| character_set_system     | utf8mb3                        |
| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+

# 6.查看数据
# 6.1.查看数据库
show databases;
# 结果,hmall是黑马商城数据库
+--------------------+
| Database           |
+--------------------+
| hmall              |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
# 6.2.切换到hmall数据库
use hmall;
# 6.3.查看表
show tables;
# 结果:
+-----------------+
| Tables_in_hmall |
+-----------------+
| address         |
| cart            |
| item            |
| order           |
| order_detail    |
| order_logistics |
| pay_order       |
| user            |
+-----------------+
# 6.4.查看address表数据
+----+---------+----------+--------+----------+-------------+---------------+-----------+------------+-------+
| id | user_id | province | city   | town     | mobile      | street        | contact   | is_default | notes |
+----+---------+----------+--------+----------+-------------+---------------+-----------+------------+-------+
| 59 |       1 | 北京     | 北京   | 朝阳区    | 13900112222 | 金燕龙办公楼   | 李佳诚    | 0          | NULL  |
| 60 |       1 | 北京     | 北京   | 朝阳区    | 13700221122 | 修正大厦       | 李佳红    | 0          | NULL  |
| 61 |       1 | 上海     | 上海   | 浦东新区  | 13301212233 | 航头镇航头路   | 李佳星    | 1          | NULL  |
| 63 |       1 | 广东     | 佛山   | 永春      | 13301212233 | 永春武馆       | 李晓龙    | 0          | NULL  |
+----+---------+----------+--------+----------+-------------+---------------+-----------+------------+-------+
4 rows in set (0.00 sec)

五、Dockerfile语法

六、容器网络互连

显示网络接口的命令

ip addr

docker network create heima

docker network connect heima mysql

七、部署Java应用

对项目的父工程进行package后

将打包好的tar文件和Dockerfile放入/etc/docker中

输入命令

docker build -t hmall .

命令 docker build -t hmall . 是用于构建一个名为 hmall 的 Docker 镜像。这个命令会查找当前目录下的 Dockerfile 文件,并根据该文件中的指令来构建镜像。构建完成后,这个镜像会被打上 hmall 的标签,这样你就可以使用这个标签来运行容器或者进行其他操作。

在执行这个命令之前,请确保当前目录中有一个 Dockerfile 文件,并且文件中包含了构建镜像所需的全部指令。

创建容器

docker run -d --name hm -p 8080:8080 --network heima hmall
docker start nginx

docker start mysql

docker start hm
docker logs -f hm

八、部署前端

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

九、DockerCompose

上传dockerCompose文件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

nginx.conf也要将代理的路径从hm改为hmall

 

 

docker rm -f mysql nginx hm

docker compose up -d

docker compose down

docker network ls

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 12:14:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 12:14:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 12:14:03       82 阅读
  4. Python语言-面向对象

    2024-04-23 12:14:03       91 阅读

热门阅读

  1. oracle之--动态sql(execute immediate ‘ ‘)

    2024-04-23 12:14:03       28 阅读
  2. MySQL数据库-备份

    2024-04-23 12:14:03       37 阅读
  3. 单例模式(设计模式)

    2024-04-23 12:14:03       27 阅读
  4. Python 监控程序的内存占用量

    2024-04-23 12:14:03       34 阅读
  5. 哪家券商有快速通道?

    2024-04-23 12:14:03       35 阅读