Docker入门——Docker基本使用

接上篇介绍了Docker是什么之后,本文将简单介绍一下Docker的安装,hello world实例及Dockerfile文件。

前提概念

镜像

Docker 镜像(Image)是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

Docker 镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。

容器

镜像和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。
容器可以被创建、启动、停止、删除、暂停等 。

和镜像一样,容器也是分层存储。容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。

Ubuntu安装Docker

Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,通过uname -r命令查看你当前的内核版本;
执行指令获取最新的Docker安装包:

wget -qO- https://get.docker.com/ | sh

安装之后如果使用非root用户运行docker,需执行sudo usermod -aG docker runoob 命令;

启动docker服务:

sudo service docker start

鉴于国内网络问题,为方便后续拉取镜像,可以配置加速器,使用网易的镜像地址:http://hub-mirror.c.163.com
新版 Docker 使用 /etc/docker/daemon.json,在该配置文件中加入:

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

Hello World实例

我们首先来执行下面的指令,运行一个hello world的实例;

docker run -p 8080:80 -d hello-world

其中,-p表示将80端口映射到本地8080端口执行,-d表示直接输出执行结果;
之所以能直接运行hello-world,是因为它是docker官方自带的一个示例,如果本地运行其他镜像,则可以先从仓库拉取;

docker image pull library/nginx

如果想查看目前正在运行的容器信息,执行:docker ps
如果想查看所有的容器信息,则执行:docker ps -a
如果想查看所有的镜像信息,则执行:docker images

当需要停止运行某个容器时,执行:docker stop 92673d0f574c[此为容器ID]
当一些容器不再需要时可以删除,执行:docker rm 92673d0f574c[此为容器ID]
当不再需要某个镜像时也可以删除,执行:docker rmi fce289e99eb9[此为IMG ID]

注意,当镜像被某个容器所使用后,如果容器没有被删除,那么镜像也是无法删除的;

下面是一个从搜索镜像到重新打版提交到仓库的示例:

docker search ubuntu
docker pull ubuntu
docker tag ubuntu xxx/ubuntu
docker commit -m '这是注释' xxx/ubuntu
docker login hub-mirror.c.163.com
docker push ubuntu

Dockerfile文件

Dockerfile语法

FROM 基础镜像
RUN 执行命令
ADD 添加文件,能够自动解压压缩包
COPY 拷贝文件
CMD 执行命令,容器启动时默认执行
EXPOSE 暴露端口
WORKDIR 指定运行路径
MAINTAINER 文档维护者
ENV 设定容器环境变量
ENTRYPOINT 容器入口
USER 指定用户
VOLUME 容器所挂载的卷

镜像分层

上篇文中已经讲过,Docker是分层存储的,而Dockerfile文件中每一行就会对应产生一个新的存储层。
容器之所以可以修改,是因为最新产生的存储层是可读可写的,而它下面的其他层是只读的。

镜像打包

编写一个Dockerfile文件来打包docker镜像,下面是示例:

FROM openjdk:7-alpine
MAINTAINER wtang

RUN mkdir -p /opt/dev
ADD ant.tar.gz /opt/dev
ENV ANT_HOME /opt/dev/ant
ENV PATH $ANT_HOME/bin:$PATH
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk --update add git
VOLUME /opt/dev
CMD ["sh","-c","tail -f /etc/alpine-release"]

在Dockerfile所在文件路径执行指令,构建一个名为hello-docker的镜像:

docker build -t hello-docker .

注意,Dockerfile和压缩包文件得放在同一文件目录下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值