Docker基础用法

Docker Architecture(docker体系结构)

  • Docker daemon 守护进程
    • containers:容器
    • images:镜像
  • Docker client
  • Docker registries 镜像仓库
Docker Images
  • Docker镜像含有启动容器所需要的文件系统及其内容,因此其用于创建并启动docker容器
  • 采用分层构建机制,最底层为bootfs,其之为rootfs
    • bootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完成后会被卸载以节约内存资源。
    • rootfs:位于bootfs上,表现为docker容器的根文件系统。docker中rootfs由内核挂载为“只读”模式,而后通过“联合挂载”技术额外挂载一个“可写”层。
安装docker
  • 依赖环境

    • 64 bits CPU
    • Linux Kernel 3.10+
  • Docker Daemon

    • systemctl start docker.service
  • Docker Client

    • docker [OPTIONS] COMMAND [arg…]
1
2
3
4
5
6
7
8
1.下载yum源
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
2.修改baseurl地址
底行模式下:%s/https:\/\/download.docker.com\//https:\/\/mirrors.tuna.tsinghua.edu.cn\/docker-ce\//g
3.查看程序包
yum repolist
4.安装
yum install -y docker-ce
配置文件
  • docker-ce:
    • 配置文件:/etc/docker/daemon.json ,docker启动之前不存在可自行定义创建,启动之前就自动生成。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      {
      "registry-mirrors": ["https://registry.docker-cn.com"]
      }
      # 阿里云镜像
      {
      "registry-mirrors": ["https://6ucotgoh.mirror.aliyuncs.com"]
      }
      # systemctl daemon-reload
      # systemcctl start docker
容器相关命令
  • docker image pull nginx:1.14-alpine : 下载镜像
  • docker run –name web1 -d nginx:1.14-alpine :运行容器
  • docker inspect web1 :查看容器信息
  • docker container stop b1:停止容器
  • docker kill b1:强制关闭容器
  • docker rm b1:删除容器
  • docker rmi busybox:删除镜像
  • docker ps -a:查看容器状态
  • docker exec -it redis1 /bin/sh:交互式进入容器,并执行/bin/sh
  • docker logs web1:查看容器日志
  • docker inspect mysql5.7 -f { {.Mounts} } :查看容器指定key的键值
    如果不能自动补全docker命令,安装yum install -y bash-completion,然后退出当前终端重新连接。

mark

Registry(repository and index)
  • Repository
    • 由某特定的docker镜像的所有迭代版本组成的镜像仓库。
    • 一个Registry中可以存多个Repository
    • Repository可分为“顶层仓库”和“用户仓库”,用户仓库名称格式为“用户名/仓库名”
    • 每个仓库可以包含多个Tag(标签),每个标签对应一个镜像。
  • Index
    • 维护用户账户、镜像的校验以及公共命名空间的信息。
    • 相当于为Registry提供了一个完成用户认证等功能的检索接口。
Docker Hub

本地dckerfile变动发送到github,github推送到dockerhub自动构建为镜像。

  • Image Repositories:镜像仓库
  • Automated Builds:自动构建,dockerfile
  • Webhooks:触发构建
  • Oraganizations:组织,创建工作组
  • GitHub and Bitbucket Integration:整合github、bitbucket
1
2
# 下载镜像仓库指定镜像
docker pull quay.io/coreos/flannel:v0.10.0-amd64

镜像生成方式

  • Dockerfile
  • 基于容器制作
  • Docker Hub automated builds

mark

基于容器制作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1、运行一个容器
docker run --name b1 -it busybox (-it 交互式,-d 后台运行)
2、修改容器
如后台运行则可进入容器再操作
docker exec -it b1 /bin/sh
mkdir -p /data/html
vi /data/html/index.html
3、提交镜像
docker commit -p b1 (-p 暂停,防止数据有问题)
docker image ls (REPOSITORY和TAG都是none,可以在commit时打上标签)
4、给刚生成的打标签
docker tag c7d5393e1bf2 liyk/boxhttp:v0.1
再次打标签
docker tag liyk/boxhttp:v0.1 liyk/boxhttp:latest
5、运行命令打镜像
docker commit -a "Liyk <liyk@anchnet.com>" -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' -p b1 liyk/httpd:v0.2 (-a 作者信息,-c 命令,-f 前台运行,-h 文件目录,-p 制作时暂停)
阿里云docker镜像仓库
1
2
3
4
5
6
7
8
9
10
1、控制台开通镜像仓库服务(设置仓库密码)
2、创建镜像仓库,地域、命名空间(全局唯一)、仓库名称
3、选择代码源,云code、github、私有gitlab等(需要绑定对应账号,提交代码后直接同步到镜像仓库)
4、登录阿里云docker registry(用户名是阿里云账号全名,密码为开通服务时设置的密码)
docker login --username=livcshiwo registry.cn-shanghai.aliyuncs.com
5、从Registry中拉取镜像
docker pull registry.cn-shanghai.aliyuncs.com/key1024/test:[镜像版本号]
6、将镜像推送到Registry
docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/key1024/test:[镜像版本号]
docker push registry.cn-shanghai.aliyuncs.com/key1024/test:[镜像版本号]
镜像分享
  • 镜像仓库:通过push到镜像仓库,需要镜像的再pull到服务器。
  • 镜像打包:打包相关镜像,再scp到其他服务器。
    1
    2
    3
    4
    5
    6
    # 镜像打包
    docker save -o myimages.gz key1024/test:v0.1 key1024/test:v0.2
    # copy镜像
    scp myimages.gz node02:/data
    # load镜像
    docker load -i myimages.gz
-------------本文结束感谢您的阅读-------------
原创技术分享,感谢您的支持。