Docker安装使用及私有仓库搭建

1 概念

1.1 基本概念

Docker daemon
​ 守护进程,运行在宿主机上,用户通过DockerClient客户端Docker命令与Docker daemon交互。
Docker Client
​ Docker命令行工具。是用户使用Docker的主要方式。
Docker Image
​ 镜像。简单说就相当于root文件系统
Docker Container
​ 容器就是镜像的一个实例。容器创建、容器启动、容器停止、容器删除、容器暂停。
Docker Repository
​ 仓库是一个代码的控制空心,作用就是保存镜像。

1.2 容器与系统

CoreOS、其他操作系统、容器的网络架构、容器编排、容器集群、容器监控等。

2 Docker环境搭建

2.1 CentOS7 安装Docker

前提:

  1. CentOS6.5 以上,内核3.10及以上
    uname -a
  2. 更新yum源
    yum update
  3. 安装依赖
    yum install -y yum-utils device-mapper-persistent-data lvm2
  4. 替换阿里yum源
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  5. 安装docker-ce
    yum install -y docker-ce
  6. 启动docker服务端守护进程
    systemctl start docker
  7. 查看版本信息
    docker version
  8. 设置开机自启
    systemctl enable docker

2.2 配置阿里云加速镜像

​ 登录阿里云平台后进入”容器镜像服务”->”镜像工具”->”镜像加速器
配置镜像加速器 地址需替换成自己的

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <

3 Docker 命令

3.1 基本命令

run命令:通过镜像创建并启动容器

  • -i :交互式(可输入命令)
  • -t :终端或模拟终端
  • -d:以守护进程运行
  • -p:指定端口
  • -v:指定存储卷
  • –name:自定义容器名称
  • –restart=aways:当容器挂后自动重启
    exit:退出
    ps命令:查看容器状态
  • -a:查看所有容器
  • -a -q :展示所有容器ID
  • -n:列出指定数量容器
#列出最近前5个容器
docker ps -a -n 3

start\stop\restar\ 命令: docker start *ID*docker stop *ID*
停止所有容器:
docker stop $(docker ps -a -q)
exec命令:进入已启动的容器 (注意:使用exec进入容器后exit退出时,容器不会关闭)
docker exec -i -t &#x5BB9;&#x5668;ID /bin/bash
attach命令:进入已启动的容器,exit退出后,容器关闭(不推荐)
rm命令:删除容器 rm *ID1* *ID2* ....

删除所有容器
docker rm -f $(docker ps -a -q)

-f:强制删除容器
kill命令:杀死正在运行的容器
docker kill &#x5BB9;&#x5668;ID
pause\unpause命令:暂停\回复
logs命令:查看日志
docker logs &#x5BB9;&#x5668;ID
inspect命令:查看容器详细信息
docker inspect &#x5BB9;&#x5668;ID
top命令:显示正在运行的容器进程信息
docker top &#x5BB9;&#x5668;ID

3.2 容器管理

容器状态(STATUS)

  • Created:创建
  • Up:运行中
  • Pause:暂停
  • Exited:停止
    top命令:查看容器中运行的进程信息
    docker top &#x5BB9;&#x5668;ID
    diff命令:检测容器中的文件系统变动
    stats命令:实时监控显示容器的资源使用情况
    docker stats &#x5BB9;&#x5668;ID

3.3 镜像

使用原则:有官方的就用官方镜像

查找镜像

#搜索httpd镜像
docker search httpd

拉取镜像

docker pull &#x955C;&#x50CF;&#x540D;&#x79F0;(如果不指定版本号,默认获取最新稳定版本的镜像 latest),本地镜像保存路径”/var/lib/docker”

镜像列表

#查看镜像列表
docker images
#查看所有镜像ID
docker images -q

镜像导出

docker save 镜像名称及版本 -o 导出的文件名称
docker save ubuntu:15.10 -o export-test.tar

Docker安装使用及私有仓库搭建

; 删除镜像

docker rmi &#x955C;&#x50CF;&#x540D;&#x79F0;:&#x7248;&#x672C; 运行中的镜像需要先停掉再删除

  • -f 强制删除。
#多版本冲突删除
docker rmi 镜像名称/镜像名称:版本号
#删除所有镜像
docker rmi -f $(docker images -q)

镜像标签

重命名:
docker tag &#x955C;&#x50CF;ID &#x6E90;(&#x53EF;&#x81EA;&#x5B9A;&#x4E49;)/&#x955C;&#x50CF;&#x540D;&#x79F0;&#xFF1A;&#x7248;&#x672C;

镜像创建

  1. 镜像提交
    docker commit 可以把容器打包成一个镜像,可以把容器你的数据也打包到镜像中。
  2. 镜像构建

  3. docker build

  4. dockerfile

镜像提交

将现有镜像push到docker hub仓库

  1. 登录
    docker login
    输入账号密码
    Docker安装使用及私有仓库搭建
  2. 自定义tag
    docker tag nginx:latest qinjuncai/nginx:v1.0
  3. 推送
    docker push qinjuncai/nginx:v1.0
    Docker安装使用及私有仓库搭建

; 3.4 仓库

3.4.1 公共仓库

DockerHub,参考官方说明

3.4.2 私有仓库

3.4.2.1 Docker-registry私有仓库

Docker公司提供:Docker-registry私有仓库组件

  1. 安装
## 拉取镜像
docker pull registry
## 启动容器
docker run -d -v /registry:/home/docker-registry -p 5000:5000 --restart=always --privileged=true --name registry registry:latest
  1. 验证
    ip:5000/v2(http://192.168.88.101:5000/v2/
    Docker安装使用及私有仓库搭建
  2. 推送镜像到私有仓库
重命名Tag
docker tag nginx:latest localhost:5000/nginx:v2.1
推送镜像
docker push localhost:5000/nginx:v2.1

Docker安装使用及私有仓库搭建
  1. 验证
    http://192.168.88.101:5000/v2/_catalog
    Docker安装使用及私有仓库搭建
  2. 拉取推送的镜像
    客户端 deamon.json配置私有仓库地址
vi /etc/docker/daemon.json
#添加私有仓库地址
{
  "insecure-registry": ["192.168.88.101:5000"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker

#拉取镜像
docker pull 192.168.88.101:5000/nginx:v2.1
3.4.2.2 Harbor 私有仓库

​ VMWare公司(中国团队)提供:Harbor企业级开源组件( 推荐
特点: 安全、标识和管理、镜像赋值、LDAP、国际化、GItHub开源、图形化用户界面、部署简单

  1. docker-compose安装
    Docker-compose GitHub地址
#安装docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-uname -s-uname -m > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

查看版本号,测试是否安装成功你可以通过修改URL中的版本,可以自定义您的需要的版本。
docker-compose version

Docker安装使用及私有仓库搭建
  1. harbor安装
    Harbor GitHub地址
    下载离线包(600多M)
#解压
tar -xvf harbor-offline-installer-v1.10.10.tgz
cd harbor
#执行
./prepare
#修改配置.IP地址及端口修改(不能是localhost或127.0.0.1),admin密码也在此配置文件中
vi harbor.yml
#执行安装脚本
./install.sh

注意:如果不开启https 需注释掉harbor.html HTTPS部分内容,否则会报错

Docker安装使用及私有仓库搭建
  1. 验证登录
    安装成功
    Docker安装使用及私有仓库搭建
    https://ip:端口(默认80,账号admin 密码:Harbor12345)
  2. 使用

  3. 登录系统并创建项目

    Docker安装使用及私有仓库搭建
  4. 添加用户
    系统管理-用户管理-创建用户
  5. 添加用户到项目中
    项目-成员-添加用户-选择角色
    Docker安装使用及私有仓库搭建
  6. 配置镜像地址
vi /etc/docker/daemon.json
#添加私有仓库地址
{
  # 这行是阿里云加速,需替换自己的
  "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"],
  "insecure-registries":["192.168.88.101"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 登录仓库
docker login 192.168.88.101
#输入用户名密码
....

  • 推送镜像到私有仓库
    格式: docker tag &#x9700;&#x8981;&#x63A8;&#x9001;&#x7684;&#x955C;&#x50CF;&#x540D;&#x79F0;:&#x7248;&#x672C; &#x79C1;&#x6709;&#x4ED3;&#x5E93;IP/&#x9879;&#x76EE;&#x540D;&#x79F0;/&#x955C;&#x50CF;&#x540D;&#x79F0;:&#x7248;&#x672C;
标记镜像
docker tag nginx:latest 192.168.88.101/test/nginx:v3.0
推送镜像
docker push 192.168.88.101/test/nginx:v3.0

Docker安装使用及私有仓库搭建
  • 拉取镜像
docker pull 192.168.88.101/test/nginx:v3.0

3.4.3 三方仓库

​ 阿里云仓库,详见

3.5 基本命令小结

Docker安装使用及私有仓库搭建

; 4 Dockerfile

4.1 命令

Docker安装使用及私有仓库搭建

案例:通过dockerfile 创建镜像。拉取centos 并安装软件及开放端口

  1. 编写dockerfile
从哪一个基础镜像构建
FROM centos

定义作者信息
MAINTAINER 'qinjuncai@qq.com'

定义一个变量
ENV newpath /tmp

设置登录后的工作路径(落脚点)<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Set the work path after login (foothold)</font>*</details>
WORKDIR $newpath

执行你要的操作
#RUN yum -y install net-tools

开放指定的端口
EXPOSE 80
EXPOSE 22

执行命令
CMD echo $newpath
CMD echo "success.....OK"
CMD /bin/bash
  1. 执行dockerfile
docker build -f dockerfile -t qinjuncai/centos:v1 .
  1. 查看dockerfile执行细节
docker history qinjuncai/centos:v1

5 容器网络

5.1 外部访问容器

端口映射:容器与宿主机之间进行通讯

  • -p:小写的p指定端口映射 。宿主机:容器端口(多用于==生产环境==)
  • -P:大写的P随机映射
#启动容器,将容器80端口映射到宿主机8080端口,将443端口映射到443
docker run -itd -p 8080:80 -p 443:443 nginx /bin/bash
#启动容器,映射端口,高可用
docker run -itd -p 80:80 --restart=always nginx /bin/bash
#启动容器,随机映射端口
docker run -d -P nginx
#适用于宿主机多网卡,指定IP及端口映射
docker run -itd -p 192.168.88.101:8080:80 nginx --name web01 nginx /bin/bash
#查看容器端口暴露情况
docker port 717a97e90432

Docker安装使用及私有仓库搭建

端口的暴露:Dockerfile EXPOSE 80

5.2 容器访问容器(容器互联)

创建Nginx容器1,命名Nginx01 使用自定义网络test-net 宿主90端口映射容器80端口
docker run -itd -p 90:80 --name nginx01 --network test-net nginx
创建Nginx容器2,命名Nginx02 使用自定义网络test-net 宿主91端口映射容器80端口
docker run -itd -p 91:80 --name nginx02 --network test-net nginx
分别查看容器详细信息(获取容器IP)
docker inspect a013498701df
docker inspect c61aed657a25
容器1 IP 172.19.0.2 容器2 IP 172.19.0.3
进入容器1 ping 172.19.0.3 能ping通 说明容器互联成功
docker exec -it c61aed657a25 /bin/bash

Docker安装使用及私有仓库搭建

5.3 容器网络的模式

5.3.1 四种容器网络模式

1.host 模式
容器与宿主机共享IP,可设置不同端口号

Docker安装使用及私有仓库搭建
2. container 模式
整合个容器共享独立网卡和IP
Docker安装使用及私有仓库搭建

3. none模式 :没有网卡,没有IP 没有路由信息 只有lo
4.bridge模式(默认):即桥接模式
每个虚拟机拥有独立的IP和网卡,多个容器之间隔离,可通过宿主机互相访问。

Docker安装使用及私有仓库搭建

; 5.3.2 自定义网络

创建网络
docker network create -d bridge test-net
查看网络
docker network ls

Docker安装使用及私有仓库搭建

Original: https://www.cnblogs.com/dooor/p/docker0226.html
Author: Dvomu
Title: Docker安装使用及私有仓库搭建

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/524062/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • shell 脚本 根据PID过滤查看进程所有信息

    根据PID过滤查看进程所有信息 #!/bin/bash read -p "输入要查询的PID: " P #筛选第二列等于输入的PID号 n=ps aux | a…

    Linux 2023年5月27日
    0113
  • arch安装桌面环境

    arch可以安装图形用户界面需要的软件包有:xorg-server,xorg-xinit,xfce4 xorg是linux桌面环境下的服务程序,xorg-init是启动xorg的客…

    Linux 2023年6月13日
    081
  • CentOS7.6下安装Redis5.0.7

    此次安装是在CentOS7下安装Redis5.0.7 &#x8FD9;&#x91CC;&#x4E0B;&#x8F7D;&#x7684;&am…

    Linux 2023年5月27日
    071
  • 一文搞懂 Redis 架构演化之路

    作者:ryetan,腾讯 CSIG 后台开发工程师 现如今 Redis 变得越来越流行,几乎在很多项目中都要被用到,不知道你在使用 Redis 时,有没有思考过,Redis 到底是…

    Linux 2023年5月28日
    0100
  • Python中str()和repr()的区别

    其实用处就是最大的区别了:str()主要用来为终端用户输出一些信息,而repr()主要用来调试;同时后者的目标是为了消除一些歧义(例如浮点数的精度问题),前者主要为了可读。 In …

    Linux 2023年6月8日
    0106
  • Wireshark 使用教程

    Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程各种问题定位。本文主要内容包括: 1、Wireshark软件下载和安…

    Linux 2023年6月8日
    084
  • 一文入门Qt Quick

    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」 https://mp.weixin.qq.com/s/dvamU6q5lZQb5hztfD2zNg 初识…

    Linux 2023年6月6日
    0115
  • 配置nginx只打印延迟超过0.1s和非2XX的accesslog

    背景 当业务accesslog全开时,写入es的qps达到了10W,评估后觉得不太值得,所以考虑抽样打印。查看相关文档后发现目前我们使用的nginx版本不支持抽样打印,所以考虑其他…

    Linux 2023年6月14日
    0107
  • DEX文件解析–7、类及其类数据解析(完结篇)

    一、前言 前置技能链接:DEX文件解析—1、dex文件头解析DEX文件解析—2、Dex文件checksum(校验和)解析DEX文件解析–3、de…

    Linux 2023年6月8日
    082
  • oracle ORA-31655

    原因:是因为不是同一个schema,导致的问题产生 解决方案: 在导入语句最后添加上remap_schema=old:new 着old是原schema,也就是导出的用户名,new是…

    Linux 2023年6月8日
    079
  • SQLI-LABS(Less-7)

    Less-7(GET-Dump into outfile-String) 打开 Less-7页面,可以看到页面中间有一句 Please input the ID as parame…

    Linux 2023年6月6日
    076
  • 不要使用短路逻辑编写 stl sorter 多条件比较

    最近工期紧、任务多,没有时间更新博客,就水一期吧。虽然是水,也不能太水,刚好最近工作中遇到一个 sorter 多条件排序的问题,花费了半天时间来定位解决,就说说它吧。 公司产品是一…

    Linux 2023年6月6日
    095
  • win11下关于安装umi成功后CMD命令不能使用的问题

    先找到你安装的umi全局路径 yarn global bin 然后把这个路径添加到系统变量中去:PATH 还是不能用的话就是找到 umi.cmd 文件的目录,把里面的C盘符号前面的…

    Linux 2023年6月14日
    0108
  • WSL系统安装与使用

    WSL是适用于 Linux 的 Windows 子系统,可让开发人员按原样运行 GNU/Linux 环境 – 包括大多数命令行工具、实用工具和应用程序 – …

    Linux 2023年5月27日
    0136
  • PHP array_values()

    array_values array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名。 示例: function arrayValues() { $dat…

    Linux 2023年6月7日
    098
  • WEB自动化-06-命令行运行Cypress

    6 命令行运行Cypress Cypress命令行的运行基本语法格式如下所示: cypress <command> [options] command代表运行的命令,是…

    Linux 2023年6月7日
    0114
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球