Docker简要教程

1. 镜像

1.查看本地镜像:docker images

2.修改镜像

sudo docker commit -m "备注信息" -a "作者信息" 容器ID 仓库名和Tag信息

3.创建镜像(使用Dockerfile)

Dockerfile包含了基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,使用#来注释。

  • FROM 指令告诉 Docker 使用哪个镜像作为基础
  • 接着是维护者的信息
  • RUN开头的指令会在创建中运行,比如安装一个软件包,在这里使用 apt-get 来安装了一些软件
  • ADD 命令复制本地文件到镜像;
  • 用 EXPOSE 命令来向外部开放端口;
  • 用 CMD 命令来描述容器启动后运行的程序等

构建命令:docker build -t="tag信息" .

  • “.”表示当前目录下寻找Dockerfile文件,注意一个镜像不能超过 127 层
  • tag信息可以包含两部分信息,即:REPOSITORY:Tag。可以通知指定REPOSITORY的名称和Tag信息,中间使用冒号分隔。若不指定,默认为REPOSITORY的名字,Tag默认使用latest.

4.存出和载入镜像

sudo docker save -o ubuntu_14.04.tar ubuntu:14.04//导出镜像
sudo docker load < ubuntu_14.04.tar//载入镜像

5.删除镜像

docker rmi 镜像ID或名字:Tag信息

2. 容器

1、启动容器

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。

  • 新建并启动
    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    示例:docker run ubuntu:latest /bin/echo "HelloDocker"//打印HelloDocker
    docker run -it ubuntu:latest /bin/bash //使用交互模式启动一个容器
    sudo docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"//以守护模式运行
    注意:docker -P(大写)会随机映射可用端口到容器,docker -p(小写) 5000:5000 映射指定端口。 可使用docker port <container> 查看容器端口映射

  • 启动关闭的容器
    docker start 容器名字/容器ID

2.关闭容器

docker stop 容器名字/容器ID

3.进入容器

docker attach 容器名字/容器ID

4.导出/导入容器

  • 导出:docker export 7691a814370e > ubuntu.tar
  • 导入为镜像:docker import http://example.com/exampleimage.tgz example/imagerepo 或者 cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0

5.删除镜像

docker rm 容器名字/容器ID

3.docker registry

docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库.

1.安装docker registry

首先拉取registry镜像,docker pull registry.官网的速度一般会比较慢,国内有几个docker镜像网站,一个是阿里云(参看http://help.aliyun.com/knowledge_detail.htm?knowledgeId=5974865),一个是dockerpool(地址:http://dockerpool.com/downloads

比如我们使用dockerpool来下载registry镜像, docker pull dl.dockerpool.com:5000/registry. 当我们在执行下载不是官网的镜像,可能会遇到证书错误。此时需要在docker的配置文件添加对应仓库地址的配置。

Ubuntu 系统的配置文件是 /etc/default/docker,Centos 系统的配置文件放在 /etc/sysconfig/docker。 打开配置文件,添加或修改如下配置:
DOCKER_OPTS="--insecure-registry dl.dockerpool.com:5000"//添加仓库地址,
如果是阿里云,则添加:--insecure-registry registry.mirrors.aliyuncs.com

2.启动registry,sudo docker run -d -p 5000:5000 registry, 在5000端口启动registry监听服务。

启动参数项有如下:

$ sudo docker run \
         -e STORAGE_PATH=/registry \
         -p 5000:5000 \
         registry

默认情况,Storage_path 为/tmp/registry,我们可以通过-v将其映射到宿主机上。如:sudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry

3.在私有仓库管理镜像

  • 上传镜像: 首先使用docker tag命令,将镜像正确的命名,命名格式为:docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG].
    比如:sudo docker tag ba58 127.0.0.1:5000/mysql 然后使用docker push命令推送镜像到仓库。

  • 搜索镜像:curl http://127.0.0.1:5000/v1/search 如果看到

    {
     "num_results": 1, 
     "query": "", 
     "results": [
           {"description": "", 
            "name": "library/mysql"
            }]
     }

    类似这样的结果,就表示镜像上传成功

  • 下载镜像: docker pull 127.0.0.1:5000/mysql

4.数据镜像

可以使用-v来映射宿主机的目录到docker容器中,也可以使用–volumes-from 挂载映射了宿主机的容器来映射,如: docker run -d --volumes-from dbdata --name db1 training/postgres

5.容器互联

  • 第一种方式:通过暴露端口给宿主机,然后通过宿主机的ip和端口映射来访问其他容器。
  • 第二种方式:使用–link进行容器之间安全互联,如:docker run --link mysql:db -it ubuntu:latest //这里将mysql容器映射给新启动的容器,在容器中使用的名字为:db . 在新容器可以通过db这个主机名或者db主机名对应的ip(ping db)进行访问。

6.Dockerfile

  • FROM : : 基础镜像信息

  • MAINTAINER : 维护者信息

  • RUN 或 RUN [“executable”, “param1”, “param2”] : 前者将在 shell 终端中运行命令,即 /bin/sh -c;后者则使用 exec 执行。指定使用其它终端可以通过第二种方式实现,例如 RUN [“/bin/bash”, “-c”, “echo hello”]。 每条 RUN 指令将在当前镜像基础上执行指定命令,并提交为新的镜像。当命令较长时可以使用 \ 来换行。

  • CMD : 支持三种格式
    CMD [“executable”,”param1”,”param2”] 使用 exec 执行,推荐方式;
    CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用;
    CMD [“param1”,”param2”] 提供给 ENTRYPOINT 的默认参数;
    指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条命令,只有最后一条会被执行。 如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令.

  • EXPOSE […] : 告诉docker容器暴露的端口

  • ENV : 设置环境变量

  • ADD : 复制文件,可以复制本地、url路径文件以及tar文件(自动解压)

  • COPY :复制文件,仅支持本地文件

  • ENTRYPOINT [“executable”, “param1”, “param2”] 或 ENTRYPOINT command param1 param2(shell中执行),ENTRYPOINT只能有一条生效,如果有多条,最后一条生效。配置容器启动后执行的命令,不会被容器启动的命令参数覆盖。

  • VOLUME [“/data”] : 创建一个可以从本地主机或其他容器挂载的挂载点,也可使用-v来挂载,比如docker run -v /data //docker会自动分配一个宿主机目录与容器中的/data映射,具体映射路径可以使用 docker inspect -f {{.Volumes}} 查看,返回示例:map[/data:/var/lib/docker/vfs/dir/9cc775458c9b1d350bff27e025087788862a4a7dffe6254f89948ac741df7a01],表示宿主机的/var/lib/docker/vfs/dir/9cc775458c9b1d350bff27e025087788862a4a7dffe6254f89948ac741df7a01目录与容器中的/data映射。 -v参数也可以指定映射的目录,比如:docker run -v /tmp/data:/data <image> 表示映射宿主机的/tmp/data到容器的/data. inspect 的结果为:map[/data:/tmp/data]

_注意:_docker初始化完成才会将宿主机的目录挂载到容器的目录,因此原有的docker容器目录下的文件会被宿主机的目录覆盖(如果宿主机的目录为空,则会清空docker容器的该目录),如果是挂载类似配置文件目录等启动需要的文件时,应该在docker初始化后,通过命令拷贝到docker容器目录。

  • USER : 指定运行容器时的用户名或 UID
  • WORKDIR /path/to/workdir : 指定RUN、CMD、ENTRYPOINT命令配置工作目录,可有多个WORKDIR,如:

    WORKDIR /a
    WORKDIR b
    WORKDIR c
    RUN pwd

    则最终的工作目录为:/a/b/c

  • ONBUILD [INSTRUCTION] : 表示当前创建的镜像做为其他新镜像的基础镜像时,新镜像构造的时候会自动执行ONBUILD的指令。

4.一些命令

删除所有的已停止的容器: docker rm $(docker ps -f status=exited -q)
关闭所有运行的容器: docker stop $(docker ps -f status=up -q)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Docker for Mac 是一款在 macOS 系统上运行的 Docker 容器化平台。它提供了简洁、易用的界面,用于方便开发人员在本地环境中构建、管理和运行容器。 在使用 Docker for Mac 之前,首先需要确保 macOS 系统版本为10.10.3或更高,并通过官方网站下载并安装 Docker Desktop。安装完成后,需要启动 Docker Desktop,并登录或注册Docker Hub账号,以便进行镜像的管理和使用。 在使用 Docker for Mac 时,可以通过 Docker Desktop 的界面进行容器镜像的搜索、下载和管理。可以选择一个镜像,点击“Pull”按钮进行下载。下载完成后,可以在本地使用命令行界面来管理和运行容器。通过使用命令行,可以通过 docker build 命令构建包含自定义应用程序的镜像,也可以使用 docker run 命令运行容器。 对于初学者来说,可以参考官方网站上的教程和文档,学习更多关于 Docker 的概念和用法。官方网站提供了丰富的教程和例子,帮助用户了解如何使用 Docker 容器化应用程序。 此外,可以参考一些社区资源,如 Docker 社区论坛和博客,以获得更多的技术支持和实践经验分享。 总之,使用 Docker for Mac 可以让开发人员更方便地进行本地容器化开发和测试工作。通过学习和掌握 Docker 的基本概念和用法,可以更好地利用 Docker 技术来加速应用程序开发和部署过程。 ### 回答2: Docker是一种轻量级的容器化技术,可以帮助开发者更高效地构建、打包和部署应用程序。在Mac上使用Docker,你可以通过以下步骤来安装和使用Docker。 首先,你需要下载和安装Docker Desktop for Mac。你可以在Docker官方网站上找到Docker Desktop的安装程序,下载并按照指示进行安装。 安装完成后,你可以在“应用程序”文件夹中找到Docker Desktop,并启动它。一旦启动,Docker将在你的Mac上运行。 接下来,你可以通过Docker的命令行工具来管理和操作Docker容器。打开终端应用程序,并运行"docker --version"命令来确认Docker是否成功安装。 在使用Docker之前,你需要了解一些基本概念,如镜像、容器和仓库。Docker镜像是一个轻量级的、可独立运行的软件包,其中包含了运行特定应用程序所需的所有文件和依赖。Docker容器是基于镜像创建的一个运行实例,通过容器你可以运行、停止和管理应用程序。Docker仓库则是存储和分享Docker镜像的地方,你可以在仓库中查找并下载你需要的镜像。 你可以通过"docker pull"命令从Docker仓库中下载镜像。例如,如果你需要下载一个运行MySQL的镜像,你可以运行"docker pull mysql"命令。 一旦你下载了镜像,你可以使用"docker run"命令来创建并运行一个容器。例如,你可以运行"docker run -d -p 3306:3306 --name my-mysql mysql"命令来创建一个名为"my-mysql"的容器,并将容器的3306端口映射到主机的3306端口。 通过这些基本的命令和概念,你可以开始使用Docker来构建、打包和部署你的应用程序。当你不再需要一个容器时,你可以使用"docker stop"命令停止它,并使用"docker rm"命令删除它。 总结来说,Docker是一种强大的容器化技术,它可以帮助开发者更快速、更方便地构建、打包和部署应用程序。在Mac上使用Docker,你只需要简单的安装和几个基本的命令,就可以开始使用它了。但是要注意,Docker在Mac上运行时可能会消耗一些系统资源,所以在使用之前请确保你的Mac具备足够的性能和资源。 ### 回答3: Docker是一种开源的容器化平台,可以在Mac上部署和管理轻量级的应用程序。下面是一份简要Docker Mac教程。 第一步是下载和安装Docker应用程序。你可以从Docker官方网站上下载最新版本的Docker Desktop for Mac。安装完成后,通过点击启动Docker应用程序来启动Docker引擎。 一旦Docker引擎启动成功,你可以在终端中输入"Docker version"来验证Docker是否成功安装。接下来,你可以使用"Docker run"命令来运行容器。例如,你可以输入"Docker run -it ubuntu"来运行一个基于Ubuntu的容器。 当容器启动后,你可以使用"docker ps"命令来查看正在运行的容器。如果你想停止某个容器,可以使用"docker stop "命令,并输入容器的ID或名称来停止容器的运行。 你也可以使用"Docker images"命令来查看本地已经下载的镜像。如果你想下载新的镜像,你可以使用"Docker pull "命令,并输入镜像的名称来下载。 另外,你可以使用"Docker build"命令来构建新的镜像。首先,你需要在一个空目录下创建一个名为"Dockerfile"的文件,该文件定义了如何构建镜像。然后,你可以在终端中使用"Docker build -t myimage ."命令来构建镜像,并将其命名为"myimage"。 最后,你还可以使用"Docker compose"命令来管理多个容器的部署。通过创建一个名为"docker-compose.yml"的文件并定义各个容器的配置,可以轻松地启动、停止和扩展多个容器。 上述内容是Docker Mac教程的一个简要概述,希望可以帮助你开始使用Docker在Mac上进行容器化应用程序的开发和部署。如果你想深入了解更多关于Docker的知识,你可以参考官方文档或在线教程

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值