Docker & DockerCompose & Harbor

        Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 LinuxWindows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

1. 卸载旧版本

# 如果安装了这些,请卸载它们以及相关的依赖项。
sudo yum remove docker \
                docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-engine

2. 设置存储库

# 安装yum-utils包(提供yum-config-manager 实用程序)并设置存储库。
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 国内可使用阿里云存储库
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 更新源
yum makecache fast

常见问题: yum makecache: error: argument timer: invalid choice: 'fast' (choose from 'timer')
解决方案:使用 yum makecache 即可;

3. 安装 Docker 引擎

# 安装最新版本的 Docker Engine、containerd 和 Docker Compose
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

常见问题: try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages

解决方案:sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin --allorwerasing

 4. 启动 Docker

# 启动docker
sudo systemctl start docker

# 开机启动docker
sudo systemctl enable docker

# 查看docker版本号
docker --version

5. 镜像操作

# 下载镜像 若不指定tag 默认使用latest (Using default tag: latest)
docker pull name:tag

# 以nginx为例
docker pull nginx

# 指定nginx的版本号
docker pull nginx:1.23
 
# 查看本地已经下载的镜像
docker images
 
# 删除镜像
docker rmi imageId

# 强制删除镜像
docker rmi -f imageId

6. 镜像启动

# 启动一个名为test-nginx的容器
# -d 表示后台启动  -p表示端口映射  宿主机端口: 容器内部端口
docker run --name test-nginx -d -p 8080:80 nginx

# 前台启动退出后将删除容器	
docker run --rm test-nginx -d -p 8080:80 nginx

# 批量端口映射
-p 8080-9090:8080-9090

# 主机网络映射 (安全系数低不建议使用)
docker run --rm --network host --name test-nginx nginx

7. 挂载目录

# 通过 -v /data:/usr/share/nginx/html 来指定需要挂载的目录

# /data 为宿主机的目录,
# /usr/share/nginx/html 为容器内的目录

# 将当前目录下的data目录挂载到容器内的 /usr/share/nginx/html 目录
docker run --name test-nginx2 -d -p 8081:80 -v /data:/usr/share/nginx/html nginx

8. 查看日志

# 可通过容器ID或者名称查看
docker logs -f test-nginx

9. 容器操作

# 进入容器内部  -i 标准输入  -t 终端
docker exec -it test-nginx sh

# 退出容器内部
exit

# 删除容器 (如果容器在运行中则无法删除,需要先关闭容器)
docker rm test-nginx

# 关闭容器
docker stop test-nginx

# 强制删除容器
docker rm -f test-nginx

10. 网络操作

# 用于查看docker基础信息
docker inspect test-nginx
	
# 镜像 busybox 工具用于测试比较方便 --link 关联到其他主机(ping test-ngixn)
docker run  -it --name test-nginx2 --link test-nginx busybox sh

11. Dockerfile

# 定制的镜像都是基于 FROM 的镜像, nginx 就是定制需要的基础镜像 --platform 指定平台
FROM --platform=linux/arm64 nginx

# 容器元信息 Metadata 类似于代码注释
LABEL version="1.0"
LABEL maintainer="xxx@163.com"

# Docker采用了分层技术  一条RUN命令就是一层
# 对于复杂的RUN命令,避免无用的分层,多条命令用反斜线换行
RUN yum update && yum install -y vim \
    Python-dev

# 改变目录,建议使用绝对路径 若路径不存在则自动创建
WORKDIR /root

# 添加到根目录
COPY test.tar.gz / 

# 添加到根目录并解压 (需要添加并解压即用ADD)
ADD test.tar.gz /  
 
# 环境变量 (推荐使用环境变量增强可维护性) 比如设置Mysql版本号为 5.7
# 在后续的指令中可以通过 $MYSQL_VERSION 引用
ENV MYSQL_VERSION 5.7

# EXPOSE 仅仅只是声明端口 对外暴露80和443端口
EXPOSE 80
EXPOSE 443

 12. 自定义Dockerfile

# 基础镜像
FROM nginx:1.23

# 指定语言
ENV LANG en_US.UTF-8

# 添加 index.html 到容器中的 /usr/share/nginx/html 目录
ADD index.html /usr/share/nginx/html

# 申明端口 暴露80和443端口
EXPOSE 80
EXPOSE 443

13. 构建镜像

# 在 Dockerfile 文件的存放目录下,执行构建动作。
# 注:最后的 . 代表本次执行的上下文路径
# 上下文路径是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。
# 注:上下文路径下不要放无用的文件,因为会一起打包发送给 docker 引擎,如果文件过多会造成过程缓慢。

# 通过目录下的 Dockerfile 构建一个 nginx:0.0.1(镜像名称:镜像标签)。
docker build -t nginx:0.0.1 .

14. DockerHub

  目前 Docker 官方维护了一个公共仓库 Docker Hub,其中已经包括了数量超过 15,000 的镜像。大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。

14.1 、注册账号

 在 Docker Hub 免费注册一个 Docker 账号。

 

 14.2 、上传自定义镜像

# 登录dockerhub
docker login
 
# 注意要保证image名字 格式: 仓库名/镜像名称:镜像标签
docker tag nginx:0.0.1 nginx/nginx:0.0.1

# 推送docker image到dockerhub
docker push nginx/nginx:0.0.1

# 登录dockerhub官网检查镜像是否上传完成


# 删除本地镜像
docker rmi nginx/nginx:0.0.1

# 测试下载仓库镜像文件
docker pull nginx/nginx:0.0.1

 15. DockerCompose

        Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。 
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

  15.1 、下载

下载地址: https://github.com/docker/compose/releases

命令下载:curl -L https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-`uname -s`-`uname -m` -o  /usr/local/bin/docker-compose

注:根据自己的环境选择下载不同的包,这里是linux环境所以选择docker-compose-linux-x86_64

 15.2 、如何安装

### 手动下载 ###

# 将文件上传到服务器后重命名为 docker-compose
mv docker-compose-Linux-x86_64 docker-compose

# 创建目录
mkdir /usr/local/bin/

# 将文件移动到/usr/local/bin目录下
mv docker-compose /usr/local/bin


# CURL下载
curl -L https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-`uname -s`-`uname -m` -o  /usr/local/bin/docker-compose

# 赋予文件可执行权限
chmod +x /usr/local/bin/docker-compose

# 查看版本号
docker-compose version

  15.3 、示例应用

  15.4 、compose文件

  15.4 、部署应用

# 构建镜像
docker-compose build
 
# 启动服务
docker-compose up -d
 
# 停止服务(--rmi all 删除所有镜像 -v 删除所有挂载)
docker-compose down --rmi all -v
 
# 查看日志
docker-compose logs -f

  15.4 、部署测试

 16. Harbor

       Harbor是VMware公司开源了企业级Registry项目, 其的目标是帮助用户迅速搭建一个企业级的Docker registry服务。

 16.1 、如何下载

官网地址:https://goharbor.io/

下载地址:https://github.com/goharbor/harbor/releases

 16.2 、安装前提(以安装Harbor 2.6 + 为例)

SoftwareVersionDescription
Docker engineVersion 17.06.0-ce+ or higherFor installation instructions, see Docker Engine documentation
Docker ComposeVersion 1.18.0 or higherFor installation instructions, see Docker Compose documentation
OpensslLatest is preferredUsed to generate certificate and keys for Harbor

 16.3 、开始安装

# 将下载的文件上传至服务器后解压
tar -zxvf harbor-offline-installer-v2.5.3.tgz

# 进入harbor目录
cd harbor

# 重命名harbor.yml.tmpl文件为harbor.yml
mv harbor.yml.tmpl harbor.yml

# 编辑harbor.yml
vim harbor.yml

# 更改 hostname 为 IP 地址
hostname: xxx.xx.xx.xxx

# 本次安装无需HTTPS 所以注释HTTPS相关的配置

#https:
  # https port for harbor, default is 443
  # port: 443
  # The path of cert and key files for nginx
  # certificate: /your/certificate/path
  # private_key: /your/private/key/path

# 执行安装脚本 (默认安装后会自动启动harbor)
sh install.sh

# 启动harbor服务
docker-compose up -d

安装成功如下图图示: 

        

  16.4 、访问测试

访问地址 :http://ip:prot

用户名     :admin

密码         :Harbor12345

16.5 、公私有库

注: 公开库上传需登录认证,下载无需登录认证,私有库上传下载都需要登录认证。

如下图所示,新建项目时 访问级别默认为私有的, 若创建公开库,请勾选公开选项。

16.6 、Docker接入Harbor私服 

# 编辑daemon.json
vim /etc/docker/daemon.json

# 加入insecure-registries配置  数组中是harbor的IP地址

{
   "insecure-registries": ["192.168.124.9"]
}


# 重启docker
systemctl restart docker

16.7 、上传下载

推送命令格式可以在 Harbor 中的 项目 --> 指定项目 --> 镜像仓库 --> 推送命令中可见。

标记镜像格式:

docker tag SOURCE_IMAGE[:TAG] 192.168.115.8/public/REPOSITORY[:TAG]

推送镜像格式:

docker push 192.168.115.8/public/REPOSITORY[:TAG]

# 登录
docker login 192.168.115.8

# 在公开项目中标记镜像
docker tag nginx:latest 192.168.115.8/public/nginx:0.0.1

# 推送镜像至公开项目中
docker push 192.168.115.8/public/nginx:0.0.1


# 在私有项目中标记镜像
docker tag mysql:5.7 192.168.115.8/private/mysql:0.0.1

# 推送镜像至私有项目中
docker push 192.168.115.8/private/mysql:0.0.1

# 从私服拉取镜像
docker pull 192.168.115.8/private/mysql:0.0.1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值