首页 > 其他分享 >Docker:基础

Docker:基础

时间:2024-06-07 18:00:00浏览次数:15  
标签:容器 name 基础 ID tag 镜像 Docker docker

Docker:基础

Docker中涉及的基本概念

镜像(images):由一系列文件组成。是一个静态的概念。  
容器(container):一个封闭的独立的运行环境。是一个动态的概念。  
镜像和容器的区别可以类比为系统安装中的ISO文件和操作系统的区别。
ISO文件是一个静态的东西,我们可以通过ISO去安装一个操作系统,一个运行的操作系统可以理解为是一个容器。

Docker的安装

curl -sSL https://get.daocloud.io/docker | sh

此方法需要安装好curl

Docker常用命令

拉取镜像

docker pull name:tag

查看本地镜像

docker images

查看本地容器

查看正在运行的容器

docker ps

查看所有创建过但没有被删除的容器

docker ps -a

删除一个镜像

docker rmi (name:tag 或 镜像ID)

删除一个容器

docker rm 容器ID

启动一个容器

方法1:以交互方式启动于前台

docker run -it name:tag

常用参数:

--name 为容器指定一个名字

-p 为容器指定容器内部对本机的端口映射

-v 为容器指定容器内部对本机的路径映射

例:

docker run -d -p 80:80 -v /data/dist/:/usr/share/nginx/html nginx:latest

此时可以通过Ctrl+P+Q使容器置于后台运行
如果想要使容器再次返回前台,使用命令

docker attach 容器ID

方法2:以守护进程的方式在后台运行

docker run -it -d name:tag

进入某个容器

docker exec -it 容器ID /bin/bash

将某个容器保存成镜像

docker commit 容器ID name:tag

停止一个容器

docker stop 容器ID

重启已被停止的某个容器

docker start 容器ID

重启一个正在运行的的容器

docker restart 容器ID

将宿主机中的文件传入容器内

docker cp /home/file.txt 容器ID:/home/

修改镜像名称

docker tag name:tag new_name:new_tag

查看容器日志

docker logs 容器ID

打包镜像

docker save -o image.tar name:tag

加载打包好的镜像

docker load -i image.tar

将某个容器的文件系统打包

该命令仅适用于当一个镜像经过多次commit后删除了一部分旧文件但镜像大小没有缩小需要压缩镜像大小的情况

docker export -o image.tar 容器ID

从文件系统归档文件创建镜像

docker import image.tar name:tag

DockerFile的使用

DockerFile说明

DockerFile:是镜像的描述文件,描述了我们的镜像是怎么一步步构成的
使用build命令可以轻松的通过编写好的DockerFile来构建我们自己的docker镜像

例:使用/home/project目录下的DockerFile文件来构建镜像

docker build -t name:tag /home/project/

DockerFile中常见的关键字

  • FROM: 所制作镜像的基础镜像
  • MAINTAINER: 定义作者
  • ADD: 拷贝文件并解压
  • COPY: 仅拷贝
  • SHELL: 指定shell
  • RUN: 运行shell命令
  • ENV: 定义环境变量
  • CMD: 在启动容器的时候,执行的命令
  • WORKDIR: 进入容器之后的落脚点
  • EXPOSE: 容器对外保留的端口
  • ENTRYPOINT: 在启动容器的时候,执行的命令

DockerFile示例

# 依赖的基础镜像
FROM openjdk:8-jdk-alpine

# 镜像的维护者和邮箱地址
MAINTAINER hweiyu<[email protected]>

# 容器构建过程中,执行命令并创建新的镜像层
# 注意:多个 RUN 命令时,最好通过 && 进行合并操作,要不然,在 docker 构建时,每个 RUN 会生成一层,造成容器臃肿变大
RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories && \
   echo "http://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories && \
   apk update && \
   apk add --no-cache gcc libc-dev make openssl-dev pcre-dev zlib-dev linux-headers curl && \

# 切换到工作目录,同cd命令:cd /usr/local/myapp
WORKDIR /usr/local/myapp

# 将宿主目录中的文件拷贝到镜像中
# ADD 不仅能复制宿主主机中的文件,还能是URL指向的文件。而且如果指向的文件是tar压缩包,在复制到容器后,会进行自动解压
# ADD ./spring-boot-demo.jar app.jar
# COPY 仅能复制宿主主机中的文件
COPY ./spring-boot-demo.jar app.jar

# 定义系统环境变量
ENV profile prod
ENV timezone Asia/Shanghai

# 容器启动时,需要运行的命令,shell格式:
# ENTRYPOINT java -jar -Dspring.profiles.active=$profile -Duser.timezone=$timezone app.jar
CMD java -jar -Dspring.profiles.active=$profile -Duser.timezone=$timezone app.jar

# 对外暴露的端口号
EXPOSE 80 443

标签:容器,name,基础,ID,tag,镜像,Docker,docker
From: https://www.cnblogs.com/jackwolfey/p/18237649

相关文章

  • Mysql基础进阶速成2
    看着篇文章之前先看我的前一章:MySQL基础进阶速成1函数:每个字段使用一个函数:select+函数(字段名)+from+表名upper:将字符串中的字母大写lower:将字符串中的字符小写max:得到最大值min:得到最小值count:计数avg:平均数length:获取字符串长度........selectupper(name)fro......
  • Java基础 (6) Java语言三大特性:封装、继承与多态
    目录一、封装1.面向对象开发原则2.什么是封装性?3.封装的实现(1)定义(2)权限修饰符(3)具体修饰的结构4.封装性的体现与应用4.1成员变量/属性私有化(1)定义(2)具体操作(3)成员变量封装的好处4.2私有化方法(1)定义(2)具体操作(3)私有化方法的好处二、继承1.继承的定义2.继承的......
  • 计算机网络基础
    什么是计算机网络计算机网络是指两台或更多的计算机组成的网络,在同一个网络中,任意两台计算机都可以直接通信,因为所有计算机都需要遵循同一种网络协议。若计算机各自通讯协议不统一,则无法进行通讯网络编程中两个主要问题如何准确定位网络中的一台或多台主机找到主机之后如何进......
  • 09.0手工制作docker镜像-单服务ssh
    手动将容器保存为镜像-单服务ssh本页测试内容,将centos6.9镜像安装ssh服务并提交新的镜像并可使用。dockercommit容器id或者容器的名字新的镜像名字[:版本号可选]dockercommittestcentos6.9-ssh:v11)基于容器制作镜像,首先创建一个容器dockerrun-itcentos:6.9......
  • 零基础非科班也能掌握的C语言知识18 自定义类型
    自定义类型1.结构体1.1结构的声明1.2结构体变量的创建和初始化1.2.1普通声明1.2.2嵌套声明1.2.3不完全声明(匿名结构体)1.3结构成员访问操作符1.3.1结构体成员的直接访问1.3.2结构体成员的间接访问1.4结构体的自引用1.5结构体内存对齐1.5.1对齐规则1.5.2为什么存在内......
  • 09.1手工制作docker镜像-多服务ssh+nginx
    手工制作docker镜像-多服务ssh+nginx一个容器多个服务基于centos6.9系统添加yum源与epel源安装nginx、ssh服务yuminstallnginxopenssh-server-y因镜像系统为纯系统,没有root密码,所以需要配置密码echo123456|passwd--stdinroot注:因配置yum源存在坑,详见cento......
  • Docker 下载redis
    docker拉取redis镜像dockerpullredis:对应的版本号(不写默认为最新版) 查看镜像是否拉取成功dockerimages 创建redis配置文件启动前需要先创建reids的外部挂载的配置文件(/opt/docker/redis/conf/redis.conf)(因为redis本身容器只存在/etc/redis目录,本身就不创建redis......
  • 基础篇04——多表查询
    多表关系一对多多对多多对多是通过中间表实现的--创建学生表createtablestudent(idintauto_incrementprimarykeycomment'ID',namevarchar(10)comment'姓名',novarchar(3)comment'学号')comment'学生表';insertintost......
  • uniapp零基础到项目实战( 附送250套精选项目源码),全网最全保姆式教程
    今天开始带着大家一起零基础学习uniapp,在下面的课程中我们就简称uniapp为uni吧。我这里从零基础开始教大家,后面可以带大家简单的做一个实战项目。所以不用担心自己没有基础,跟着认真学习就行了的。一,认识uniapp1-1,uniapp的好处我们学习uniapp之前先要认识uniapp的好处看下......
  • 鸿蒙HarmonyOS实战-ArkTS语言基础类库(通知)
    ......