标签:注意 安装文档 github code ocs ati root serve tar
将Image从Registry下载到DockerHost,DockerHost生成该镜像的Container,在Container中就可以正常使用了
Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
可以是一个软件(Tomcat)也可以是一个系统(centOS)
镜像(
Image
)和容器(Container
)的关系,就像是面向对象程序设计中的类
和实例
一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的
root
文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。也因为这种隔离的特性,很多人初学 Docker 时常常会混淆容器和虚拟机。
镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。
docker Registry 公开服务是开放给用户使用、允许用户管理镜像的 Registry 服务。一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。
最常使用的 Registry 公开服务是官方的 Docker Hub,这也是默认的 Registry,并拥有大量的高质量的官方镜像。除此以外,还有 Red Hat 的 Quay.io;Google 的 Google Container Registry,Kubernetes 的镜像使用的就是这个服务。
简化搭建环境,提高开发生命周期
大大简化运维工作量
微服务利器
轻量级的虚拟化技术,比传统的虚拟机性能更好。(主要是没有硬件的模拟)
- 架构上没有像Hypervisor - 虚拟机平台模拟硬件 VMWare
- 也没有Guest OS这样OS操作系统
1.13之后此案有时间线作为版本号,分为CE和企业版EE
社区版又分stable和edge两种方式发布,每个季度更新stable版本
参考Docker官方安装文档
$ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
$ sudo sed -i ‘s/download.docker.com/mirrors.ustc.edu.cn\/docker-ce/g‘ /etc/yum.repos.d/docker-ce.repo
# 官方源
# $ sudo yum-config-manager # --add-repo # https://download.docker.com/linux/centos/docker-ce.repo
如果需要测试版本的 Docker CE 请使用以下命令:
$ sudo yum-config-manager --enable docker-ce-test
如果需要每日构建版本的 Docker CE 请使用以下命令:
$ sudo yum-config-manager --enable docker-ce-nightly
更新 yum
软件源缓存,并安装 docker-ce
。
$ sudo yum makecache fast
$ sudo yum install docker-ce
$ sudo systemctl enable docker
$ sudo systemctl start docker
$ docker run hello-world
Unable to find image ‘hello-world:latest‘ locally
latest: Pulling from library/hello-world
d1725b59e92d: Pull complete
Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
docker run hello-world
在本地找不到image,向远程仓库查找hello-world,从远程仓库pull下来该镜像到本地,以该镜像为模板创建Container容器,生成实例运行。
国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务,例如:
由于镜像服务可能出现宕机,建议同时配置多个镜像。各个镜像站测试结果请到 docker-practice/docker-registry-cn-mirror-test 查看。
国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务,具体请参考官方文档。
本节我们以 网易云 镜像服务 https://hub-mirror.c.163.com
为例进行介绍。
对于使用 systemd 的系统,请在 /etc/docker/daemon.json
中写入如下内容(如果文件不存在请新建该文件)
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。
之后重新启动服务。
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
注意:如果您之前查看旧教程,修改了
docker.service
文件内容,请去掉您添加的内容(--registry-mirror=https://hub-mirror.c.163.com
)。
systemctl start docker
systemctl stop docker
systemctl restart docker
systemctl enable docker
docker --help
docker info
docker version
在远程仓库中搜索
docker search tomcat
docker pull redis
不指定版本就会下载最新版本
docker pull centos:7
默认不加版本 就删除最新的
需要先将允许实例删除 -f(force)强制删除
docker imi 镜像名称:[TAG]
docker imi -f 镜像1:[TAG] 镜像2:[TAG]
docker run [OPTION] IMAGE[COMMAND][ARG...]
以交互模型运行并打开伪输入终端:
docker run -it --name MyCentOS-1 [镜像ID]
docker ps [OPTION]
docker attach ContainerID
将停止的容器启动
docker start 容器ID
docker restart 容器ID
docker stop 容器ID or 容器名
docker kill 容器ID or 容器名
docker rm 容器ID or 名
docker rm -f 容器ID1 容器ID2
docker rm -f $(docker ps -qa)
docker run -it --name 别名 镜像ID
docker -di --name 别名 镜像ID
docker -it --name 别名 镜像ID /bin/bash
docker copy 源文件path 容器ID:目标文件path
docker copy 容器ID:源文件path 目标文件path
docker logs
docker top 容器ID
docker exe -it 容器名称 或者 容器ID 执行命令
直接操作容器,执行完回到宿主机终端
一般用于启动容器里的应用。比如Tomcat niginx redis elasticsearch
docker run -it 8888:8080 镜像ID
docker run -it -P tomcat
docker commit -a=‘作者‘ -m=’描述‘ 在运行的容器ID 新镜像名称
docker login
docker push java1234/tomcat7:1.1
使用方便,具体操作参考阿里云仓库指导
创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以实现宿主机和容器目录的双向自动同步。
cp命令来做数据传递比较麻烦
通过容器目录挂载,能够轻松实现代码上传,配置修改,日志同步等需求
docker run -it -v /宿主机:容器目录
docker run -it -v /宿主机:容器目录 -v /宿主机目录2:/容器目录2 镜像名
docker run -it -v /宿主机目录:/容器目录:ro 镜像名
不使用公网存储,使用docker备份和迁移实现
docker save -o 备份镜像的名称 源镜像名称:tag版本
docker save -o 备份.tar redis:6
docker load -i input
docker load -i 备份.tar
一系列命令和参数构成的脚本。Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
定义了使用哪个基础镜像启动构建流程
声明镜像维护者信息
镜像描述元信息
设置环境变量
构建容器时需要运行的命令
设置终端默认登录进来的工作目录
当前容器对外暴露出的端口
将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
创建一个可以从本地主机或者其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据
指定容器启动时候要运行的命令,假如多个CMD,最后一个生效
指定容器启动时要运行的命令
当构建一个被继承的DockerFile时运行的命令
FROM centos
MAINTAINER DengSchoo
LABEL name = "docker test" build-time="2021"
ENV WORKPATH /home
WORKDIR $WORKPATH
RUN yum -y install net-tools
RUN yum -y install vim
EXPOSE 80
CMD /bin/bash
docker build -f myCentosDockerFile -t java123/mycentos:1.1
docker run -it 镜像ID
docker history 镜像ID
FROM centos
MAINTAINER DengSchoo
LABEL name = "docker test 2" build-time="2021"
COPY copy.txt /home/copy.txt
ADD server.tar.gz /home
ADD apache-tomcat.gz /home
ENV WORKPATH /home/tomcat
WORKDIR $WORKPATH
EXPOSE 80
CMD /bin/bash
标签:注意 安装文档 github code ocs ati root serve tar
原文地址:https://www.cnblogs.com/DengSchoo/p/14664395.html