一、安装

参考黑马程序员的讲义

‍‌​‌​‌​⁠‬​⁠​​​‍​‬​​‌​‌‌​​‍​​​‌​​‍‍‍‌​​安装Docker - 飞书云文档

二、原理

去docker的镜像仓库中下载镜像到本地镜像,通过本地镜像复制到容器中,每个容器都是独立的。

三、docker run

其中-e的环境变量去docker hub官网中查对应镜像的介绍中,environment的一项中有写

四、docker常见命令

Docker Docs

命令

说明

文档地址

docker pull

拉取镜像

docker pull

docker push

推送镜像到DockerRegistry

docker push

docker images

查看本地镜像

docker images

docker rmi

删除本地镜像

docker rmi

docker run

创建并运行容器(不能重复创建)

docker run

docker stop

停止指定容器

docker stop

docker start

启动指定容器

docker start

docker restart

重新启动容器

docker restart

docker rm

删除指定容器

docs.docker.com

docker ps

查看容器

docker ps

docker logs

查看容器运行日志

docker logs

docker exec

进入容器

docker exec

docker save

保存镜像到本地压缩文件

docker save

docker load

加载本地压缩文件到镜像

docker load

docker inspect

查看容器详细信息

docker inspect

# 设置容器开机自启
docker update --restart=always [容器名/容器id]

# Docker开机自启
systemctl enable docker

五、设置命令别名

当我们有的命令太长了,我们可以考虑使用这个方式

修改/root/.bashrc文件

记得保存后要source该文件

六、数据卷

1.体系结构

 ​​‍​‬​‍​‌‌​⁠​‌​​‬​‬​⁠‌⁠​​‌​‌⁠​​‍​​​​‌​‌‬​​​day02-Docker - 飞书云文档

数据卷类似Vue的挂在,容器和宿主机的文件是同步增删的。

2.常用命令

命令

说明

文档地址

docker volume create

创建数据卷

docker volume create

docker volume ls

查看所有数据卷

docs.docker.com

docker volume rm

删除指定数据卷

docs.docker.com

docker volume inspect

查看某个数据卷的详情

docs.docker.com

docker volume prune

清除数据卷

docker volume prune

# 首先创建容器并指定数据卷,注意通过 -v 参数来指定数据卷
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx

# 查看数据卷
docker volume ls

# 查看数据卷详情
docker volume inspect html

# 进入容器内部
docker exec -it nginx bash

挂载示例

容器要挂载哪些目录,你看你常用哪些,就在官方文档查哪些的路径,挂就完了

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

七、自制镜像

1.体系结构

我们要从0部署一个Java应用,大概流程是这样:

  • 准备一个linux服务(CentOS或者Ubuntu均可)

  • 安装并配置JDK

  • 上传Jar包

  • 运行jar包

那因此,我们打包镜像也是分成这么几步:

  • 准备Linux运行环境(java项目并不需要完整的操作系统,仅仅是基础运行环境即可)

  • 安装并配置JDK

  • 拷贝jar包

  • 配置启动脚本

2.dockerfile镜像打包常用命令

指令

说明

示例

FROM

指定基础镜像

FROM centos:6

ENV

设置环境变量,可在后面指令使用

ENV key value

COPY

拷贝本地文件到镜像的指定目录

COPY ./xx.jar /tmp/app.jar

RUN

执行Linux的shell命令,一般是安装过程的命令

RUN yum install gcc

EXPOSE

指定容器运行时监听的端口,是给镜像使用者看的

EXPOSE 8080

ENTRYPOINT

镜像中应用的启动命令,容器运行时调用

ENTRYPOINT java -jar xx.jar

通常打包Linux和jdk这种每个项目都要做的功能都有别人为我们整合好的Layer

八、网络

容器的网络IP其实是一个虚拟的IP,其值并不固定与某一个容器绑定,如果我们在开发时写死某个IP,而在部署时很可能MySQL容器的IP会发生变化,连接会失败。
所以我们需要自定义一个网络,直接根据容器名进行访问而不是ip,容器名不会变

命令

说明

文档地址

docker network create

创建一个网络

docker network create

docker network ls

查看所有网络

docs.docker.com

docker network rm

删除指定网络

docs.docker.com

docker network prune

清除未使用的网络

docs.docker.com

docker network connect

使指定容器连接加入某网络

docs.docker.com

docker network disconnect

使指定容器连接离开某网络

docker network disconnect

docker network inspect

查看网络详细信息

docker network inspect

更多推荐