首页 > 其他分享 >docker从0到0.5

docker从0到0.5

时间:2023-03-04 11:34:38浏览次数:32  
标签:容器 image 0.5 本地 镜像 docker Dockerfile

docker从0到0.5

什么是docker

下面三样组成了docker的体系:

  • Dockerfile(配置文件):声明构建镜像时需要安装的依赖和要copy到镜像中的源码文件;类比Makefile
  • image(镜像):保存环境状态;正如anaconda的虚拟环境,不同的是anaconda中的环境是动态的,可以随时进行修改,而镜像是静态的,像个照片,只按Dockerfile的要求构建了需要的依赖
  • container(容器):运行image的内容,不同的container类比不同的进程,a不会干扰b的执行

它们之间的执行流程:

image-20230304100010214

docker和虚拟机有什么不同

docker 虚拟机
原理 提供docker引擎,所有容器共用一个内核,而又通过引擎在不同的操作系统中独立运行 模拟操作系统,每个虚拟机都有各自的完整内核
优势 更便于在不同环境测试脚本,比虚拟机轻量 具有完整的操作系统,可以对系统配置进行操作修改和练习

从Dockerfile到容器

Dockerfile->image

.是相对路径,这里说明是在Dockerfile指定的工作目录、根目录下进行构建

docker build .	// docker引擎查找Dockerfile并构建镜像

[-t],意为tag,可以在构建时直接命名镜像

docker build -t bisa/test:v1.0 .	

image

查看所有镜像

docker images	

会出现类似下面的显示:

image-20230304102400369

自定义镜像的名称

docker tag [IMAGE_ID] [REPOSITORY]:[TAG]
  • REPOSITORY:镜像的名字。如果想要把镜像上传到镜像仓库自己的账户里,通常用user/image_name的形式命名,user是账户名
  • TAG:版本号。如果不进行标注,则会默认为lateset,就像上图的hello-world一样

比如我想把hello-world重命名为hi-docker,tag为v1.0,并传到bisa的镜像仓库里:

docker tag feb bisa/hi-docker:v1.0	// 重命名
docker login						// 在本机上登录docker的账户(输入账户名和密码)
docker push bisa/hi-docker:v1.0		// 上传到镜像仓库

镜像的ID在镜像不多的时候可以只写前几位,只要能识别出是它就行

删除镜像(remove image:rmi)

当镜像相同时ID也会相同,可以用镜像名字指定要删除的镜像;下文中出现的所有名字都可以在id不冲突时用id代替

docker rmi -f bisa/hi-docker:v1.0

image->container

docker run [RESPOSITORY]
  • [-d],detached mode:使容器在后台运行,不占用当前命令行窗口

container

查看容器运行情况

docker ps		// 查看容器运行情况
docker ps -a	// 查看所有容器运行情况

给容器命名

否则随机给名字

docker run --name 容器名字 镜像名字

同步本地和容器

想把容器中的源码和本地同步,可以进行把本地的文件夹和容器中的文件夹进行绑定;注意这里的路径都要绝对路径

而有些文件是不能进行绑定的:本地的module文件会直接覆盖掉容器中的,而本地的文件没了,容器的文件也就没了

docker run -v 本地工作目录1:容器的工作目录1 镜像名字	// 绑定本地文件夹1和容器工作文件夹1
docker run -v 本地工作目录1:容器的工作目录1:ro -v 容器工作目录2 镜像名字	// 绑定本地文件夹1和容器工作文件夹1,但不同步容器工作目录2的内容,同时容器中的修改不可以影响本地
  • [-v],volume
  • [:ro],read_only

当重启容器的服务后,则可以看到绑定的变化

进入容器并进行交互

docker exec -it 容器名字 /bin/bash
  • exec,execute:类似docker run
  • [-i],interactive:交互
  • [-t],pseudo-TTY:伪终端
  • /bin/bash:执行一个新的bash

退出容器

exit

删除容器

docker rm -fv 容器名
  • [-f],force:强制删除,无论是否容器正在运行
  • [-v]:把对应的绑定也删除

端口号的对应问题

容器使用的端口号可能和本地所用的端口号不同,所以需要做端口映射

在Dockerfile中EXPOSS 端口号只是一个说明、给人看的,实际确定服务使用的端口还是由源码设置的

docker run -p 主机端口:容器端口 镜像名

docker_compose

用来做容器管理的,以免每次容器启动都要写一长串命令

创建docker-compose.yml,用于声明容器的配置。类似hexo搭博客的yml配置文件

启动容器

docker-compose up -d --build
  • [--build],会在yml修改时,按照镜像重建容器;不然还会使用原本容器的缓存

删除容器

docker-compose down -v

标签:容器,image,0.5,本地,镜像,docker,Dockerfile
From: https://www.cnblogs.com/bisa/p/17177952.html

相关文章

  • Docker容器间通信
    近期在搞Wordpress建站,把数据库和wordpress都用docker搭建,特此记录组网1.首先创建一个networkdockernetworkcreatenetwork_db让wordpress容器与mysql容器加入到......
  • docker+jenkins搭建allure-commadline
    安装allure命令行:1、下载将allure-commandline-2.20.1.tgz将安装包cp到Jenkins挂载目录下将文件下载下来:https://repo.maven.apache.org/maven2/io/qameta/allure/al......
  • Minio--docker部署
    拉取镜像dockerpullminio/minio启动容器创建文件夹bindataconfig启动脚本dockerrun-p9000:9000-p9001:9001\--nameminio-d\......
  • Docker CLI docker buildx build 常用命令
    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。Doc......
  • Docker配置mysql
    1.宿主机创建对应目录mkdir-p/data/dockers/mysqlcd/data/dockers/mysql#创建数据目录mkdirdata#创建配置目录mkdirconfig#创建日志目录mkdirlog2.创建......
  • docker-compose任务编排
    一、docker-compose介绍使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。下面介绍Docker官方产品,DockerCompose。......
  • 配置 Docker 使用 GPU
    准备工作首先你需要准备一台拥有GPU的实例,在这里我将使用阿里云的竞价实例来做演示,因为它对于短期使用GPU更加划算。注意,本篇文章将教你手动进行GPU驱动的配置,所以在购......
  • 【Dockerfile】nvm-git-node-centos7镜像
    #依赖centos环境FROMcentos:7#安装vim、git和nvm环境RUNyuminstall-ywget\&&mv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.rep......
  • Dockercompose conda 切换环境
    FROMcontinuumio/miniconda3:4.11.0#要创建的conda环境名ARGconda_env=XXXXX#将conda环境bin加入PATHENVPATH/opt/conda/bin:$PATH#一个RUN是一个shell环境,......
  • docker学习笔记1(在线安装及离线安装)
    Centos7安装docker引擎官方安装文档https://docs.docker.com/engine/install/centos/#install-using-the-repositoryDocker分两个大版本,一个是CE,一个是EE。CE为社区版,......