Docker 学习入门


目录

  • 一、Docker 简介
    • 1、什么是 Docker
    • 2、为什么要用 Docker
    • 3、Docker 基本组成
  • 二、Docker 安装
    • 1、CentOS7 安装步骤
    • 2、Docker 命令
  • 三、镜像管理
    • 1、镜像简介
    • 2、镜像管理
  • 四、容器管理
    • 1、创建容器
    • 2、容器资源限制
    • 3、容器常用命令
  • 五、管理应用程序数据
    • 1、Volume
    • 2、Bind Mounts
  • 六、容器网络
    • 1、Docker 网络模式
    • 2、容器网络访问原理
  • 七、制作镜像
    • 1、Dockerfile
    • 2、构建基础镜像
  • 八、镜像仓库
    • 1、Habor
    • 2、安装 Docker Compose
    • 3、安装 Harbor
    • 4、Harbor 简单使用
  • 九、图形化管理
    • 1、安装 Portainer
    • 2、访问 Portainer

回到顶部回到顶部https://docs.docker.com/install/。后面的学习在 Linux CentOS7 上测试。

https://docs.docker.com/install/linux/docker-ce/centos/

① 卸载旧版本

# yum remove docker docker-common docker-selinux

② 安装依赖包

# yum install -y yum-utils device-mapper-persistent-data lvm2

③ 安装 Docker 软件包源

# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

④ 安装 Docker CE

# yum install docker-ce

⑤ 启动 Docker 服务

# systemctl start docker

⑥ 设置开机启动

# systemctl enable docker

⑦ 验证安装是否成功

# docker -v
# docker info

回到顶部https://hub.docker.com/explore

如果从 Docker Hub 下载镜像非常缓慢,可以先配置镜像加速器,参考:https://www.daocloud.io/mirror

Linux下通过以下命令配置镜像站:

# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

# systemctl restart docker

① 搜索镜像 :docker search  [选项]

OFFICIAL:是否官方版本;

 ② 下载镜像 :docker pull [选项] [Docker Registry地址]<仓库名>:<标签>

Docker Registry地址:地址的格式一般是 <域名/IP>[:端口号] 。默认地址是Docker Hub。

仓库名:仓库名是两段式名称,既 <用户名>/<软件名> 。对于 Docker Hub,如果不给出用户名,则默认为 library ,也就是官方镜像。

③ 列出本地镜像 :docker images [选项]

TAG:标签版本;IMAGE ID:镜像ID;SIZE:镜像大小;

查看虚悬镜像(镜像既没有仓库名,也没有标签,显示为 ):docker images -f dangling=true

默认的 docker images 列表中只会显示顶层镜像,如果希望显示包括中间层镜像在内的所有镜像:docker images -a

只列出镜像ID:docker images -q

列出部分镜像:docker images redis 

以特定格式显示:docker images --format "{{.ID}}: {{.Repository}}"

④ 给镜像打 Tag :docker tag  [<用户名>/]<镜像名>:<标签>

镜像的唯一标识是其 ID 和摘要,而一个镜像可以有多个标签。

⑤ 删除本地镜像 :docker rmi [选项] <镜像1> [<镜像2> ...]

<镜像> 可以是镜像短 ID、镜像长 ID、镜像名或者镜像摘要。

删除镜像的时候,实际上是在要求删除某个标签的镜像。所以首先需要做的是将满足我们要求的所有镜像标签都取消,这就是我们看到的Untagged 的信息。

镜像是多层存储结构,因此在删除的时候也是从上层向基础层方向依次进行判断删除。镜像的多层结构让镜像复用变得非常容易,因此很有可能某个其它镜像正依赖于当前镜像的某一层。这种情况,不会触发删除该层的行为。直到没有任何层依赖当前层时,才会真实的删除当前层。

除了镜像依赖以外,还需要注意的是容器对镜像的依赖。如果有用这个镜像启动的容器存在(即使容器没有运行),那么同样不可以删除这个镜像。如果这些容器是不需要的,应该先将它们删除,然后再来删除镜像。

⑥ 批量删除镜像

删除所有虚悬镜像:docker rmi $(docker images -q -f dangling=true)

删除所有仓库名为  redis  的镜像:docker rmi $(docker images -q redis)

删除所有在  mysql:8.0  之前的镜像:docker rmi $(docker images -q -f before=mysql:8.0)

⑦ 导出镜像:docker save -o <镜像文件> <镜像>

可以将一个镜像完整的导出,就可以传输到其它地方去使用。

⑧ 导入镜像:docker load -i <镜像文件>

回到顶部回到顶部回到顶部回到顶部回到顶部Installation and Configuration Guide

Harbor 使用文档参考:User Guide

安装 Harbor 前,需确保硬件条件至少 2核4G内存40G的硬盘,本机需已安装 docker、docker-compose、openssl。

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

# wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.1.tgz

② 解压

# tar zxvf harbor-offline-installer-v1.9.1.tgz
# cd harbor

③ 修改配置文件

# vim harbor.yml

主要修改 hostname 为可访问的域名或IP、修改管理员密码

④ 安装

# ./prepare
# ./install.sh

Harbor 安装成功后,实际上就是通过 docker compose 启动了相关组件的容器

⑤ Harbor 生命周期管理

harbor 基于 docker compose 编排部署,因此可以使用 docker-compose 命令来管理 harbor 的生命周期。

首先切到 harbor 根目录下

停止 harbor:docker-compose stop

重启 harbor:docker-compose start

修改配置:

# #先停止 harbor
# docker-compose down -v
# #修改 harbor.yml
# vim harbor.yml
# #运行 prepare 填充配置
# ./prepare
# #启动harbor
# docker-compose up -d
User Guide

通过新建项目创建一个项目(bojiangzhou)用于测试。公开项目不需登录就可以下载镜像,私有的需要登录;上传镜像则都需要登录才能上传镜像。

 推送镜像的命令格式可以参考如下:

② 创建用户

若想上传镜像,需要用户登录,首先在用户管理创建用户:

接着在项目中添加用户成员:

③ 前置配置

上传镜像之前,首先需要将 harbor 仓库配置为 docker 授信的仓库,否则将被拒绝连接:

vim /etc/docker/daemon.json
# 配置如下内容
{
    "registry-mirrors": ["http://f1361db2.m.daocloud.io"],
    "insecure-registries": ["192.168.31.54"]
}

之后重启 docker 和 harbor:

#systemctl restart docker

# cd /docker-test/harbor
# docker-compose up -d

④ 镜像仓库登录退出

登录:docker login registry

退出:docker logout registry

⑤ 上传镜像

首先需要给镜像打 Tag:docker tag SOURCE_IMAGE[:TAG] 192.168.31.54/bojiangzhou/IMAGE[:TAG]

接着推送镜像:docker push 192.168.31.54/bojiangzhou/IMAGE[:TAG]

可以看到镜像已经推送到镜像仓库了:

下载仓库镜像:docker pull 192.168.31.54/bojiangzhou/nginx-app:1.0.0

回到顶部

九、图形化管理

Portainer 是一个开源、轻量级 Docker 管理用户页面,基于 Docker API,管理 Docker 主机。一般单机下不会使用图形管理页面,这里简单了解下就好。

1、安装 Portainer

① 创建数据卷:docker volume create portainer_volume

② 启动 Portainer 容器:docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_volume:/data portainer/portainer

2、访问 Portainer

访问 ip:9000,即可进入 Portainer 管理页面,首先需要创建一个管理用户

接着连接本机

连接本地进入后就可以进行容器、镜像等的管理了。

--------------------------------------------------------------------------------------------------------------------------------