Docker

本文详细介绍了Docker的核心概念,包括镜像、容器和仓库。讲解了Docker的安装,如何获取、使用、管理和删除镜像,以及创建、交互、删除容器的方法。此外,还介绍了如何搭建私有仓库和推送镜像。Docker通过轻量级容器技术实现了应用组件的高效部署和运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux虚拟化容器技术,有效的由单个操作系统管理资源细化为独立的组中,更高效的平衡有冲突的资源间使用需求,docker2013年基于go实现的开源项目,进一步优化了容器使用的体验。每个容器内运行应用,不同容器间相互隔离,容器间可以建立通信机制。通过管理应用组件的封装、分发、部署、运行达到组件“一次封装,到处运行”的目的。这里的应用组件可以是一个web应用、mysql服务等,最常见的LAMP(linux+apache+mysql+php)一次部署,其他n台新的服务器上启动需要的容器即可。

Docker核心*镜像容器仓库

跟maven一样,通过镜像映射到(公有或私有)仓库,找到对应的容器(包含各应用运行实例)。

每个仓库寂静中存放某一类镜像(n各镜像文件,通过不同tag区分版本),最大的公开仓库:docker hub

用户创建了自己的镜像之后,就可以使用push命令将它上传至仓库,下次在另一台机器使用该镜像时,从仓库pull下来就可以了。(管理同git)

Docker的安装

mac直接通过brew cask install docker命令即可下载安装完毕

镜像

获取镜像

docker pull name[:tag] //不写tag默认选择latest标签最新版本下载

docker pull ubuntu :15.10 下载15.10版本的ubuntu操作系统

docker pull registry.hub.docker.com/ubuntu:15.10 即从默认的注册服务器registry.hub.docker.com中的ubuntu仓库下载指定版本的ubuntu系统

也可以指定其他的注册服务器

下载镜像到本地后,可随时使用,例如使用该镜像创建一个容器,运行bash脚本

使用镜像

docker run ubuntu:15.10 /bin/echo "Hello world"

查看镜像信息

docker images

搜索镜像

docker search mysql 搜索远端仓库中的共享mysql及镜像

删除镜像

docker rmi imageId 通过id执行rmi时直接删除相关tag及对应镜像文件

docker rmi tagName 通过标签名删除时,只删除指定tag标签而不删除镜像文件,当只剩下镜像时就是彻底删除镜像。

一般删除镜像前,要先删除景象中存在的所有容器,通过docker ps -a 查看本基金上所有存在的容器;docker rm 容器ID 进行删除

创建镜像 三种方式:

基于已有镜像:docker commit -a "author name" -m "comment" 容器id -p 提交时暂停容器运行

eg 启动一个镜像,并在其中创建一个test文件,然后提交该镜像;创建成功后返回镜像id

基于本地存在的模板

eg本地已存在ubuntu模板压缩包,直接执行 cat ubuntu....tar.gz|docker import -ubuntu:15.10

基于Dockerfile创建

1.编写Dockerfile文件

dockerfile由一行命令组成,一般涵盖4部分信息:基础镜像信息、维护者信息、镜像操作指令、容器启动时指令

# This dockerfile uses the ubuntu image
        # VERSION 2 - EDITION 1
        # Author: docker_user
        # Command format: Instruction [arguments / command] ..
@@@
        # 第一行必须指定基于的基础镜像
        FROM ubuntu
@@@
        # 维护者信息
        MAINTAINER docker_user docker_user@email.com
@@@
        # 镜像的操作指令
        RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/
        apt/sources.list
RUN apt-get update && apt-get install -y nginx
        RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
@@@
        # 容器启动时执行指令
        CMD /usr/sbin/nginx

2.docker build [option] 路径 来创建镜像

docker build -t max_repo/ max_image /tmp/docker_builder -t指定镜像标签信息为max_repo;指定dockerfile所在路径为/tmp/docker_builder

读取指定目录下的dockerfile文件,并将文件内容发送给docker服务端,由服务端来创建镜像。

导出镜像到本地

docker save -o ubuntu_15.10.tar ubuntu:15.10

上传镜像

docker push name[:tag]

用户在dockerhub逛网注册后,即可上传自制的镜像。可以先添加新标签,然后push上传镜像

为本地及镜像添加新标签 docker tag tagname

容器

容器是镜像的一个运行实例,不同的是容器带有额外的一个或一组应用运行其中。

创建容器

docker create -it ubuntu:latest

docker start

另外可直接执行docker run ubuntu 可直接创建并启动容器 eg docker run ubuntu:15.10 /bin/echo "Hello world"

交互式终端

docker run -t -i ubuntu:15.10 -t分配一个伪终端,-i容器输入保持打开;可直接运行命令;ctrl+d或键入exit退出容器(退出则意味容器终止运行)

docker start/restart/stop containerName

删除容器

docker rm -f -l -v 容器id(前3位即可) -f 强制删除,运行中也删除;-link 删除容器连接,但保留容器;-v删除容器挂在的数据卷

导入导出容器

docker export 即将已经创建的容器导出到一个文件

docker export containerID>test_run.tar

cat test2.tar |docker import - test/test:v1.0

仓库

搭建私有仓库

docker run -d -p 5000:5000 registry 自动下载并启动一个registry容器,监听端口5000,创建本地私有仓库服务,默认在/tmp/registry下

push镜像到指定仓库

docker push ip:端口/imageName

 

除上三块操作,还有对docker容器进行数据管理、网络配置、容器间通信配置等相关操作。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值