Docker基础教程

本文介绍了Docker的基本概念,包括其作为容器平台的作用,与虚拟机的区别,以及镜像和容器的使用。涵盖了Dockerfile的编写、数据卷操作、自定义镜像和DockerCompose的部署工具。
摘要由CSDN通过智能技术生成

Docker教学

1.什么是Docker

你可以把Docker看作一个容器,就像是一个可以装载软件和代码的集装箱。通过使用Docker,你可以将应用程序及其所有依赖项打包到一个独立的容器中,而不必担心它们会与其他应用程序或系统环境发生冲突。

使用Docker,你可以快速地在不同的计算机上部署应用程序,而不必担心配置和依赖问题。这意味着你可以在你的电脑上开发一个应用程序,并将其相同的运行环境在其他人的电脑或服务器上轻松地运行起来,而不需要重新配置和安装依赖项。

另外,Docker还使得应用程序的交付更加简单和可靠。你可以将应用程序和其依赖项打包到一个容器中,并将其发布到云端或其他服务器上,其他人只需要运行这个容器,就能够轻松地使用你的应用程序。

总之,Docker可以帮助开发者更轻松地构建、打包和运行应用程序,提供了一种简单、可靠的应用程序交付方式。它的优势在于提供了一致的运行环境,并且可以在不同的计算机上进行部署,极大地简化了开发和部署的过程。

2.Docker和虚拟机差别

虚拟机(virtual machine)是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在 Windows 系统里面运行 Ubuntu 系统,这样就可以运行任意的Ubuntu应用了。

Docker仅仅是封装函数库,并没有模拟完整的操作系统,如图:

image-20210731145914960

对比来看:

image-20210731152243765

3.镜像和容器概念

镜像:Docker将应用程序及其所需的依赖,函数库,环境,配置等打包在一起,称为镜像

容器:镜像中的应用运行的进程就是容器,容器有隔离作用

4.Docker镜像基本操作

4.1 获取,查看,删除镜像

docker pull

从服务端拉取

docker images

查看镜像

docker rmi

删除镜像

4.2 推送,保存,加载镜像

docker push

推送镜像到服务

docker save

保存镜像为压缩包

docker load

加载压缩包为镜像

4.3 docker启动

systemctl start docker

启动命令

4.4 docker拉取实践

拉取nginx

docker pull nginx

image-20231223174801081

拉取成功

docker images查看本地镜像

image-20231223174833659

5. docker容器基本操作

5.1 常用命令

docker run

运行容器

docker pause/unpause

暂停 /结束暂停

docker stop/start

停止/开始

docker ps

查看所有运行的容器,还有状态

docker exec

进入容器执行命令

docker rm

删除容器

5.2 举例:启动Nginx容器

启动陌生容器之前,去dockerhub官网查一下

创建并运行nginx容器的命令:

docker run --name containerName -p 80:80 -d nginx
  • docker run :创建并运行一个容器
  • –name : 给容器起一个名字,比如叫做mn
  • -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
  • -d:后台运行容器
  • nginx:镜像名称,例如nginx

6. Docker数据卷

相当于让容器使用宿主机某个文件目录,这样就可以随时修改容器的内容,比如nginx里的静态资源

一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。

6.1 操作命令

数据卷操作的基本语法如下:

docker volume [COMMAND]

docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

  • create 创建一个volume
  • inspect 显示一个或多个volume的信息
  • ls 列出所有的volume
  • prune 删除未使用的volume
  • rm 删除一个或多个指定的volume

6.2 挂载数据卷

我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器内目录,命令格式如下:

docker run \
  --name mn \
  -v html:/root/html \
  -p 8080:80
  nginx \

这里的-v就是挂载数据卷的命令:

  • -v html:/root/htm :把html数据卷挂载到容器内的/root/html这个目录中

挂载后,容器内的相应目录会同步到自己设置的宿主机上的数据卷

挂载时,如果冒号左的数据卷(宿主机上的)不存在,则自动创建

7.自定义镜像

7.1 Dockerfile常用指令

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。

image-20210731180321133

7.2 举例利用docker构建java项目

Dockerfilel例子

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local

# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar

# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8

# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

利用dockerfile构建镜像

docker build -t javaweb:1.0 .

在dockerfile同目录下执行

8.DockerCompose

8.1 何为DockerCompose

Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!

8.2 Compose举例

Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。格式如下:

version: "3.8"
 services:
  mysql:
    image: mysql:5.7.25
    environment:
     MYSQL_ROOT_PASSWORD: 123 
    volumes:
     - "/tmp/mysql/data:/var/lib/mysql"
     - "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
  web:
    build: .
    ports:
     - "8090:8090"

上面的Compose文件就描述一个项目,其中包含两个容器:

  • mysql:一个基于mysql:5.7.25镜像构建的容器,并且挂载了两个目录
  • web:一个基于docker build临时构建的镜像容器,映射端口时8090
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值