Docker教程

声明:该教程为精简教程,如果想要深入理解建议仔细研读官方文档


1.Docker概述

  • 使用 Docker 可以通过 容器(container) 来创建、部署和运行应用
  • Docker 基础部分可以分为:
    • image:镜像
    • container:容器,是应用实例的载体,是某个镜像的“实例”。例如 一个wordpress容器,有自己的php环境、wordpress项目、工作目录、网络配置、bash等
      • 容器间是相互隔离的
      • 容器是无状态
      • 容器是一种更加轻量级的虚拟机
  • Docker 层次:
    container * n > services * n > stack

2.安装

2.1 Docker for Centos

引入yum的repo:

$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
$ sudo yum-config-manager \
  --add-repo \
  https://download.docker.com/linux/centos/docker-ce.repo

安装
$ sudo yum install docker-ce

2.2 Docker for Mac

Download from Docker Store

2.3 Docker for Win10

Download from Docker Store

2.4 其余

查看 https://docs.docker.com/

3.Docker Image

3.1 仓库

Registry 仓库中保存着image,Docker
Hub
是 Docker 官方的仓库,可以通过仓库下载和上传image。

3.2 常用命令

$ docker pull <registry>/<image>:<version>
通过以上命令可以获取image
$ docker image ls
以上命令将打印出本地的image
$ docker tag <imageName> <registry>/<image>:<version>
该命令将创建一个名为 <registry>/<image> 且 Tag 为<version> 的镜像指向原来的镜像
$ docker push <imageName>
将上传镜像,imageName 如果是 registry / image 形式,将上传到响应的仓库

3.3 创建image

$ docker build .
以上命令,将会把本目录下的文件传给build,并默认以目录下 Dockerfile 来构建镜像。
查看Dockerfile参考
$ docker build -t <TagName> .
可以同时创建一个tag

4.Docker Container

4.1 创建

$ docker run -d <imageName>
以上命令将创通过image创建一个容器,系统会自动分配一个 containerId 给容器
以下是常用参数:

--name <containerName>
-p <host port>:<container port>  // 将主机的端口和容器的端口绑定
-v <volume>:<container path> // 将容器的某个目录放在volume或者某个主机目录下,这样就可以永久保存container的数据,详细请看volume
-e VAR1=12312312 // 配置环境参数
--rm // 运行结束后自动删除

4.2 查看

$ docker container ls
或者
$ docker ps
以上命令将打印出正在运行的容器的信息
$ docker container ls -a
打印所有的容器
$ docker container inpsect <containerId>
查看某个容器运行的详细信息

4.3 删除和保存

$ docker container stop <containerId>
$ docker container rm <containerId>

停止容器后可以删除容器
$ docker container prune
会删除所有停止的容器
$ docker commit <containerId> <imageName>
可以将容器保存为镜像

4.4 调用容器处理命令

$ docker exec -it <containerId> bash
将开启一个可以交互的 shell,类似于 ssh 的效果

5.Docker Volume

5.1 概述

Volume 数据卷,可以使容器数据持久化,即能够保存容器的状态。比如 mysql 容器,可以将保存的数据库的信息放在数据卷中,这样新建的一个 mysql 容器就可以使用之前的数据了。

数据持久化的方式有三种类型:

  • volume : 由 Docker 创建和管理,并且在 Docker 重启后也不会丢失,这是主要的方式。通过以下方式绑定
    $ docker run -v <volume>:<container path> ...
  • bind : 将主机目录挂载在容器的目录中,这样容器的某些数据会保存在主机中。
    $ docker run -v <host path>:<container path> ...
  • tmpfs: 不常用,保存在内存中

5.2 创建

$ docker volume create <volumename>
创建一个volume
$docker volume create --driver <drivername> <volumename>
创建一个使用某种驱动(默认是 local )的 volume,通过设置驱动可以配置某个 volume 供多个主机共享使用

例如:

$ docker volume create --driver vieux/sshfs \
  -o sshcmd=test@node2:/home/test \
  -o password=testpassword \
  sshvolume

然后可以通过以下方式绑定到容器

$ docker run -d \
  --name sshfs-container \
  --volume-driver vieux/sshfs \
  --mount src=sshvolume,target=/app,volume-opt=sshcmd=test@node2:/home/test,volume-opt=password=testpassword \
  <image>

5.3 管理

$ docker volume ls
打印 volume 信息
$ docker volume prune
删除停止使用的 volume
$ docker volume inspect <volume>
查看 volume 的详细信息

6.Docker Swarm

6.1 概述

Swarm 集群,表示 多台主机的集合。通过 swarm 我们可以快速部署和管理集群
Swarm 中有 manager 和 worker 两种角色,其中 worker 只能执行操作或者选择退出 swarm

6.2 创建与退出

$ docker swarm init
以上命令会初始化本机为一个 manager 节点,并且会返回一个 token
$ docker swarm join-token (manager|worker)
然后根据提示操作,即可加入某个集群并且成为相应的角色

$ docker swarm join \
    --token <token> \
    <managerip>

通过 token 可以成为某个集群的 worker
$ docker swarm leave
退出某个集群

7.Docker Stack和Docker Service

7.1 概述

  • Docker Service 是有多个副本的容器的集合
  • Docker Stack 是多个 Serivce 以及其相应环境(volume和网络等)的集合,必须在 swarm 中才能使用

7.2 通过Docker Stack部署集群

$ docker stack deploy -c <filename> <stackname>
通过一个yml格式的配置文件,既可以在一个 swarm 中快速部署应用
Stack.yml 配置文件参考

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值