Docker安装和常用命令以及镜像仓库

一,Docker简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

三个基本概念:
仓库(Repository)
镜像(Image)
容器(Container)
1,其中Registry是Docker用于存放镜像文件的仓库,Docker 仓库的概念跟Git 类似。

2,所谓镜像就是构建容器的源代码,是一个只读的模板,由一层一层的文件系统组成的,类似于虚拟机的镜像。

3,那么容器就是由Docker镜像创建的运行实例,类似于虚拟机,容器之间是相互隔离的,包含特定的应用及其所需的依赖文件。

二,Docker安装(centos)

1、Docker要求CentOS系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本是否支持安账docker

uname -r 

在这里插入图片描述

2、更新yum包:

sudo yum update

3、安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

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

4、设置yum源:

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

5、可以查看所有仓库中所有docker版本,并选择特定版本安装:

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

在这里插入图片描述

6、安装docker:yum install docker-ce-版本号

sudo yum install docker-ce-19.03.12.ce

7、启动、设置开启开机启动

sudo systemctl start docker
sudo systemctl enable docker

8、验证安装是否成功(有client和service两部分表示docker安装启动都成功了):

docker version

在这里插入图片描述

三,Docker常用命令

1,镜像命令

docker image ls      // 查看本地镜像
docker rmi id/name   // 删除某个镜像
docker build -t app/centos:7.1 .  // 通过当前目录下的Dockerfile创建一个名为app/centos:7.1的镜像
docker pull / push 镜像路径url   // 拉取 / 推送 镜像,类似git

2,容器命令

docker ps   // 查看当前正在运行的容器
docker ps -a   // 查看所有容器的状态
docker start/stop id/name   // 启动/停止某个容器
docker rm id/name   // 删除某个容器

3,交互命令

docker login 镜像仓库地址   // 登录镜像仓库(为了拉取内部镜像和推送权限)
docker attach id   // 进入某个容器(使用exit退出后容器也跟着停止运行)
docker exec -ti id   // 启动一个伪终端以交互式的方式进入某个容器(使用exit退出后容器不停止运行)

docker run --name test -ti ubuntu /bin/bash  复制ubuntu容器并且重命名为test且运行,然后以伪终端交互式方式进入容器,运行bash
docker run -d -p 2222:22 --name test app/centos:7.1  以镜像app/centos:7.1创建名为test的容器,并以后台模式运行,并做端口映射到宿主机2222端口,P参数重启容器宿主机端口会发生改变

更多命令详解:http://www.docker.org.cn/dockerppt/106.html

4,Dockerfile示例

nginx基础镜像服务生成前端镜像

FROM registry-vpc.cn-shenzhen.aliyuncs.com/cloudpivot/base:nginx-1.19

EXPOSE 80
ADD #APP_NAME#.tar.gz /usr/share/nginx/html/
COPY version.txt /usr/share/nginx/html/

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

ENTRYPOINT ["nginx"]
CMD ["-g","daemon off;"]

java后端服务镜像

FROM registry-vpc.cn-shenzhen.aliyuncs.com/cloudpivot/base:openjdk-8u265-jdk

WORKDIR /data/cloudpivot/#APP_NAME#
COPY #APP_NAME#.jar /data/cloudpivot/#APP_NAME#/
COPY application.properties /data/cloudpivot/#APP_NAME#/
COPY version.txt /data/cloudpivot/#APP_NAME#/
COPY entrypoint.sh /data/cloudpivot/#APP_NAME#/
ADD skywalking.tar.gz /data/cloudpivot/app-launcher/

EXPOSE 8080

ENV CALL_CHAIN_OPTS=
ENV NACOS_ADDR=nacos:8848
ENV NACOS_NAMESPACE=test
ENV NACOS_CONFIG_ENABLED=true
ENV APP_PORT=8080
ENV TZ=Asia/Shanghai
ENV EXT_ARG=
ENV JAVA_OPTS="-Xms512m -Xmx1024m -Xss256k -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+UseCGroupMemoryLimitForHeap -XX:+HeapDumpOnOutOfMemoryError"

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

ENTRYPOINT /data/cloudpivot/#APP_NAME#/entrypoint.sh #APP_NAME#

四,镜像仓库

仓库(Repository)是集中存放镜像的地方。
目前 Docker 官方维护了一个公共仓库 Docker Hub。
大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。

1,常用方式

注册
可以在 https://hub.docker.com 免费注册一个 Docker 账号。
登录

$ docker login

搜索

$ docker search nginx

在这里插入图片描述

拉取

docker pull nginx

2,harbor私有仓库

Docker容器应用的开发和运行离不开可靠的镜像管理,虽然docker官方提供了公共的镜像仓库(Docker Hub),但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、界面管理、自我注册、镜像复制和中文支持等功能。
(1)基础环境

docker: 19.03.12
docker-compose: 1.26.2
Harbor: v2.1.3

(2)docker安装 (见 二)
docker-compose安装

> curl -L https://github.com/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
> chmod +x /usr/local/bin/docker-compose
> docker-compose version

(3)Harbor私有仓库安装
1、下载Harbor安装文件

# 在线安装包(也可以从 github harbor 官网 release 页面下载指定版本的安装包)
> wget https://github.com/goharbor/harbor/archive/refs/heads/2.1.3.zip
>unzip -qr  2.1.3.zip

2、配置Harbor,进入harbor目录,打开harbor.yml进行配置

# Configuration file of Harbor

# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: harbor.###.cn

# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 80

# https related config
https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
  certificate: /usr/local/harbor/ssl/cloudpivot.cn.pem
  private_key: /usr/local/harbor/ssl/cloudpivot.cn.key
# 证书配置

# The initial password of Harbor admin
# It only works in first time to install harbor
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: Harbor12345

# Harbor DB configuration
database:
  # The password for the root user of Harbor DB. Change this before any production use.
  password: root123
  # The maximum number of connections in the idle connection pool. If it <=0, no idle connections are retained.
  max_idle_conns: 50
  # The maximum number of open connections to the database. If it <= 0, then there is no limit on the number of open connections.
  # Note: the default number of connections is 1024 for postgres of harbor.
  max_open_conns: 1000

# The default data volume
data_volume: /data/harbor/

signed certificate.
#   ca_bundle:
# Clair configuration
clair:
  # The interval of clair updaters, the unit is hour, set to 0 to disable the updaters.
  updaters_interval: 12

trivy:
  # ignoreUnfixed The flag to display only fixed vulnerabilities
  ignore_unfixed: false
  # skipUpdate The flag to enable or disable Trivy DB downloads from GitHub
  #
  # You might want to enable this flag in test or CI/CD environments to avoid GitHub rate limiting issues.
  # If the flag is enabled you have to download the `trivy-offline.tar.gz` archive manually, extract `trivy.db` and
  # `metadata.json` files and mount them in the `/home/scanner/.cache/trivy/db` path.
  skip_update: false
  #
  # insecure The flag to skip verifying registry certificate
  insecure: false

jobservice:
  # Maximum number of job workers in job service
  max_job_workers: 10

notification:
  # Maximum retry count for webhook job
  webhook_job_max_retry: 10

chart:
  # Change the value of absolute_url to enabled can enable absolute url in chart
  absolute_url: disabled

# Log configurations
log:
  # options are debug, info, warning, error, fatal
  level: info
  # configs for logs in local storage
  local:
    # Log files are rotated log_rotate_count times before being removed. If count is 0, old versions are removed rather than rotated.
    rotate_count: 50
    # Log files are rotated only if they grow bigger than log_rotate_size bytes. If size is followed by k, the size is assumed to be in kilobytes.
    # If the M is used, the size is in megabytes, and if G is used, the size is in gigabytes. So size 100, size 100k, size 100M and size 100G
    # are all valid.
    rotate_size: 200M
    # The directory on your host that store log
    location: /var/log/harbor

#This attribute is for migrator to detect the version of the .cfg file, DO NOT MODIFY!
_version: 2.0.0

# Uncomment uaa for trusting the certificate of uaa instance that is hosted via self-signed cert.
# uaa:
#   ca_file: /path/to/ca

proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - clair
    - trivy

3,启动Harbor

修改完配置文件后,在的当前目录执行./install.sh,Harbor服务就会根据当期目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动各镜像
在这里插入图片描述

在这里插入图片描述

五,容器的导入导出

介绍
涉及的命令有export、import、save、load
建议
可以依据具体使用场景来选择命令
若是只想备份images,使用save、load即可
若是在启动容器后,容器内容有变化,需要备份,则使用export、import

1,save

命令

docker save [options] images [images...]

示例

docker save -o nginx.tar nginx:latest
或
docker save > nginx.tar nginx:latest

其中-o和>表示输出到文件,nginx.tar为目标文件,nginx:latest是源镜像名(name:tag)

2,load

命令

docker load [options]

示例

docker load -i nginx.tar
或
docker load < nginx.tar

其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息

3,export

命令

docker export [options] container

示例

docker export -o nginx-test.tar nginx-test

其中-o表示输出到文件,nginx-test.tar为目标文件,nginx-test是源容器名(name)

4,import

命令

docker import [options] file|URL|- [REPOSITORY[:TAG]]

示例

docker import nginx-test.tar nginx:imp
或
cat nginx-test.tar | docker import - nginx:imp

5,区别

export命令导出的tar文件略小于save命令导出的
export命令是从容器(container)中导出tar文件,而save命令则是从镜像(images)中导出

基于第二点,export导出的文件再import回去时,无法保留镜像所有历史(即每一层layer信息,不熟悉的可以去看Dockerfile),不能进行回滚操作;而save是依据镜像来的,所以导入时可以完整保留下每一层layer信息。如下图所示,nginx:latest是save导出load导入的,nginx:imp是export导出import导入的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值