Docker 快速入门

一、            Docker 概念与安装

1.    Docker是什么:

  • 使用最广泛的爱看i元容器引擎
  • 一种操作系统级的虚拟化技术
  • 依赖于linux内核特性:Namespace(资源隔离)和cgroups(资源限制)
  • 一个简单的应用程序打包工具
  • Docker client:        客户端命令
  • Host:                     安装docker的虚拟机,用于创建容器
  • Docker registry: 镜像

2.    Docker 基本组成:

  • Docker client:        客户端命令
  • Host:                     安装docker的虚拟机,用于创建容器
  • Docker registry: 镜像

3.    版本与支持的平台:

  • Docker版本:

    社区版(Commuity Edition,CE)

     企业版(Enterprise Edition,EE)

  • 支持平台:

     Linux (centos、debian、fedora、oracle linux、RHEL、SUSE、和Ubuntu)

     Mac

    Windows

官方文档: https://docs.docker.com/

阿里云源:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

注:安装docker 先关闭防火墙和selinux

4.    Docker 安装

  • 二进制安装:

         https://download.docker.com/linux/static/stable/x86_64/

  解压:

  tar xzvf /path/to/<FILE>.tar.gz

  复制到bin下:

  cp docker/* /usr/bin/

  • yum安装:

  https://docs.docker.com/engine/install/centos

   卸载之前旧的版本

yum remove docker 
                  docker-client 
                  docker-client-latest 
                  docker-common 
                  docker-latest 
                  docker-latest-logrotate 
                  docker-logrotate 
                  docker-engine

 添加新yum源

yum install -y yum-utils
yum-config-manager 
    --add-repo 
    https://download.docker.com/linux/centos/docker-ce.repo(可以替换为阿里源)

   安装docker-ce

                 yum install docker-ce

                   systemctl  start docker

                   systemctl  enable docker

   查看docker 可用的版本

        yum list docker-ce --showduplicates | sort -r

二、            镜像管理

1.    镜像是什么

  • 一个分层存储的文件,不是一个单一的文件
  • 一个软件的环境
  • 一个镜像可以创建N个容器
  • 一种标准化的交付
  • 一个不包含Linux内核而又精简的Linux操作系统

2.    配置加速器

Docker Hub室友Docker公司负载维护的公共镜像仓库,包含大量的容器镜像,Docker工具默认从这个公共镜像下载镜像。地址:https://hub.docker.com

3.    配置镜像加速器:

vi /etc/docker/daemon.json

{

 “registru-mirrors”: [“https://b9pmyelo.mirror.aliyuncs.com”]

}

systemctl  daemon-reload

systemctl  restart  docker

常见管理命令

指令

描述

ls

列出镜像

build

构建镜像来自Dockerfile

inspect

显示一个或多个镜像详细信息

pull

从镜像仓库拉取镜像

push

推送一个镜像到镜像仓库

rmi或rm

删除一个或多个镜像

prune

移除没有被标记或者没有被任何容器引用的镜像

tag

创建一个引用源镜像标记目标镜像

save

保存一个或多个镜像到一个tar归档文件

load

加载一个来自tar归档或标准输入

history

查看镜像的历史

--help

Docker 命令帮助

4.    Docker工作目录

默认路径/var/lib/docker

 

root@k8s-master:/var/lib/docker# tree -L 1 /var/lib/docker

/var/lib/docker

├── builder

├── buildkit

├── containers         #存储容器得目录

├── image        #存储镜像得元数据信息等

├── network           #存储网络

├── overlay2          #根据存储驱动名字,存方镜像得目录

├── plugins       #插件相关

├── runtimes

├── swarm

├── tmp

├── trust

└── volumes               #存储数据卷

修改工作目录方法:

方法一:新建或者编辑 /etc/docker/daemon.json 

{

    "data-root": "/data/docker"

}

方法二:编辑文件 /usr/lib/systemd/system/docker.service 

[Service]
。。。。。。
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=/data/docker
ExecReload=/bin/kill -s HUP $MAINPID

。。。

。。。

重启docker(不管方法几都要重启)

 systemctl daemon-reload 

 systemctl restart docker 

注意:目前网上大多数配置参数是  --graph ,其实这是老版本中的使用方法,新版本已经抛弃,改用了 --data-root ,具体可以通过命令 dockerd --help 查看使用的参数。

三、            容器管理

1.    创建容器常用的命令

docker run  【选项】

-d                         后台允许

-it                        分配一个伪终端的运行

例: -d 和-it区别,因不加-it centos是启动不了的,因没有进程运行所以退出,加-it是给centos容器启动一个伪终端,又进程运行所有可以运行

docker  run  -d  centos  退出

docker  run  -d  -it centos  启动

-e                        设置环境变量

-p                      指定一个端口映射容器的端口

-P                         自动分配一个宿主机的端口映射容器端

-v                      挂载目录,实现数据持久化

--mount (新方式)

--name               指定容器名字

-h                        指定容器主机名

--ip                     指定容器id,只能用于自定义网络

--network 连接容器的一个网络

--restart            容器退出时重启策略,默认时no可选值:always,on-failure

                            Always:会无限尝试重启退出的容器(无论以什么退出码退出)。手动停止容器后,容器策略不再生效。除非重启docker daemon

                            on-failure:重启因出错停止的容器(非0退出码)。可以通过指定max-retries来限定docker daemon的最大尝试重启次数

                            on: 不自动重启(默认模式)

unless-stopped:       与always类似,区别在于手动停止容器后,就算重启docker daemon,容器策略也不再生效。

资源限制:

-m,-memory                                          容器可以使用的最大内存量

--memory-swap                                    允许交换到磁盘的内存量

--memory-swappiness=<0-100>      容器使用SWAP分区交换的百分比(0-100,默认为-1)

--oom-kill-disable                                 禁止OOM killer

--cpus                                                      可以使用的CPU数量

--cpuset-cpus                                     限制容器使用特定的CPU核心,如:0-3,0,1

--cpu-shares                                          CPU共享(相对权重)

例:限制容器最多使用500M内存,1颗cpu

docker run  -itd  -p 8080:8080  -m=”500m”  --cpus=”1”  java

2.    常用管理命令

docker  container 【选项】

选项

描述

ls

列车容器

inspect

查看一个或多个容器详细信息

commit

创建一个新镜像来自一个容器

exec

在运行容器中执行命令

cp

拷贝文件/文件夹到一个容器

logs

获取容器的日志

port

列出容器的端口映射

top

查看容器运行的进程

stats

显示容器资源使用统计

stop/start/restart

停止/启动/重启命令

rm

删除容器

ps

列出容器-a参数列出所有容器包含退出的,-q列出容器id

prune

移除已停止的容器

stats 参数 –no-stream 只显示一次信息例

docker  stats  web  --no-stream

3.    容器数据持久化

Docker 提工三种方式将数据从宿主机挂载到容器:

volume:docker 管理宿主机文件系统的一部分(/var/lib/docker/volumes)保存数据的最佳方式。volume本质和bind mount的操作方式一样,只不过在volume这种方式中,宿主机目录是由docker进行管理的,然后再挂载到容器中,不会覆盖容器中的对应目录文件,是共享的。

bind mounts: 将宿主机上的任意为止的文件或者目录挂载到容器,会覆盖容器中的对应目录文件。推荐

tmpfs mount:是将宿主机的内存挂载到容器中

1.    volumes 示例:

创建数据卷

docker volume  create  nginx-vol

docker  volume  ls

docker volume  inspect  nginx-vol

使用数据卷

docker run  -d  --name=nginx-test  --mont  src=nginx-vol,dst=/usr/share/nginx/html  nginx

docker run  -d –name=nginx-test  -v nginx-vol:/usr/share/nginx/html  nginx

2.    bind  mounts示例(最常用)

挂载宿主机目录到容器

方法1:

docker run -d --name=nginx-test –mount type=bind,src=/app/wwwroot,dst=/usr/share/nginx/html  nginx

方法2:

docker run -d --name=nginx-test  -v /app/wwwroot:/usr/share/nginx/html nginx

3.    容器网络

veth pair: 成对出现的一种虚拟网络设备,数据从一端进,从另一端出,用于解决网络命名空间之间的隔离。

docker0: 网桥是一个二层网络设备,通过网桥可以将lingx支持的不通端口连接起来,并实现类型交换机那样的多对多的通信。

 

Docker使用iptables实现网络通讯

 

四、            Dockerfile 构建镜像

Docker通Dockerfile自动构建镜像,Dockerfile是一个包含用于组建镜像的文本文件,有一条条的指令组成。

 

五、            Harbor镜像仓库搭建与使用

Harbor是由vmware公司开源的容器镜像仓库。事实上harbor是在docker registry 上进行了相应企业级扩展,从而获得了更加广泛应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制,AD/LDAP集成以及审计日志等,足以满足基本企业需求。

官方:https://goharbor.io

Github: https://github.com/goharbor/harbor

服务器硬件配置:

最低要求: CPU核/内存4G/硬盘40GB

推荐: CPU4核/内存8G/硬盘160GB

软件:

         Docerk CE 1.7.06版本+

Docker Compose 1.18版本+

Harbor 安装有2中方式:

         在线安装:从Docker Hub下载相关镜像,因此安装软件包非常小

         离线安装:安装包包含部署的相关镜像,因此安装包比较大

1.    安装

采用离线安装:下载镜像

 

下载离线包:wget https://github.com/goharbor/harbor/releases/download/v2.1.3/harbor-offline-installer-v2.1.3.tgz

先安装docker和docker compose

https://github.com/docker/compose/releases

2.    部署harbor

解压

tar  xf harbor-offline-installer-v2.1.3.tgz

进入解压目录

cd harbor

cp harbor.yml.tmpl  harbor.yml

修改配置

vi harbor.yml

hostname:xxxx #指定访问的域名

htts:  #先注释https相关配置

安装:

./prepare

./install.sh

harbor 默认登录账号

admin/Harbor12345

3.    harbor基本使用

配置http镜像仓库可信任

Vim /etc/docker/daemon.json

{

   “insecure-registries”: [“域名或ip”]

}

打标签

docker tag  centos:7  xxxx/library/centos:7

上传

docker  push xxxx/library/centos:7

下载

docker pull xxxx/library/centos:7

原文地址:https://www.cnblogs.com/houchaoying/p/14365566.html