Docker基本使用

一、安装

参考黑马程序员的讲义

‍‌​‌​‌​⁠‬​⁠​​​‍​‬​​‌​‌‌​​‍​​​‌​​‍‍‍‌​​安装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
bash 复制代码
# 设置容器开机自启
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
bash 复制代码
# 首先创建容器并指定数据卷,注意通过 -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

挂载示例

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

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
相关推荐
航Hang*7 小时前
Windows Server 配置与管理——第3章:文件系统管理
运维·服务器·windows·vmware
lifewange7 小时前
Linux ps 进程查看命令详解
linux·运维·服务器
功德+n8 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
小敬爱吃饭8 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
杨云龙UP8 小时前
从0到1快速学会Linux操作系统(基础),这一篇就够了!
linux·运维·服务器·学习·ubuntu·centos·ssh
HXQ_晴天8 小时前
Ubuntu 设置中文输入法
linux·运维·ubuntu
Dovis(誓平步青云)8 小时前
《Linux 信号入门:搞懂 “进程通信的紧急电话” 到底怎么用(初篇)》
linux·运维·服务器
0vvv09 小时前
删除wsl环境下的Ubuntu系统
linux·运维·ubuntu
木子欢儿9 小时前
Docker Hub 镜像发布指南
java·spring cloud·docker·容器·eureka