赞
踩
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
- # 如果安装了这些,请卸载它们以及相关的依赖项。
- sudo yum remove docker \
- docker-client \
- docker-client-latest \
- docker-common \
- docker-latest \
- docker-latest-logrotate \
- docker-logrotate \
- docker-engine
- # 安装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 即可;
- # 安装最新版本的 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
- # 启动docker
- sudo systemctl start docker
-
- # 开机启动docker
- sudo systemctl enable docker
-
- # 查看docker版本号
- docker --version
- # 下载镜像 若不指定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
- # 启动一个名为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
- # 通过 -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
- # 可通过容器ID或者名称查看
- docker logs -f test-nginx
- # 进入容器内部 -i 标准输入 -t 终端
- docker exec -it test-nginx sh
-
- # 退出容器内部
- exit
-
- # 删除容器 (如果容器在运行中则无法删除,需要先关闭容器)
- docker rm test-nginx
-
- # 关闭容器
- docker stop test-nginx
-
- # 强制删除容器
- docker rm -f test-nginx
- # 用于查看docker基础信息
- docker inspect test-nginx
-
- # 镜像 busybox 工具用于测试比较方便 --link 关联到其他主机(ping test-ngixn)
- docker run -it --name test-nginx2 --link test-nginx busybox sh
- # 定制的镜像都是基于 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
- # 基础镜像
- 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
- # 在 Dockerfile 文件的存放目录下,执行构建动作。
- # 注:最后的 . 代表本次执行的上下文路径
- # 上下文路径是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。
- # 注:上下文路径下不要放无用的文件,因为会一起打包发送给 docker 引擎,如果文件过多会造成过程缓慢。
-
- # 通过目录下的 Dockerfile 构建一个 nginx:0.0.1(镜像名称:镜像标签)。
- docker build -t nginx:0.0.1 .
目前 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
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 、部署测试
Harbor是VMware公司开源了企业级Registry项目, 其的目标是帮助用户迅速搭建一个企业级的Docker registry服务。
16.1 、如何下载
官网地址:https://goharbor.io/
16.2 、安装前提(以安装Harbor 2.6 + 为例)
Software | Version | Description |
---|---|---|
Docker engine | Version 17.06.0-ce+ or higher | For installation instructions, see Docker Engine documentation |
Docker Compose | Version 1.18.0 or higher | For installation instructions, see Docker Compose documentation |
Openssl | Latest is preferred | Used 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。