Docker部署和全部命令

文章目录

前言

关于Docker:
Docker是Docker.Inc公司开源的一个基于轻量级虚拟化技术的容器引擎项目,整个项目基于Go语言开发,并遵从Apache 2.0协议。通过分层镜像标准化和内核虚拟化技术,Docker使得应用开发者和运维工程师可以以统一的方式跨平台发布应用,并且以几乎没有额外开销的情况下提供资源隔离的应用运行环境。

在这里插入图片描述
容器和虚拟机的区别:

在这里插入图片描述

  1. 启动速度:
    虚拟机可能需要一分钟来启动,而容器只需要一秒钟或更短。
    容器使用宿主操作系统的内核,而虚拟机使用独立的内核。Docker 的局限性之一是,它只能用在64位的操作系统上。
  2. 体积:
    容器占用体积小,基本是MB级别的。
    虚拟机占用体积大基本是GB级别的。
  3. 隔离性:
    容器提供了进程的隔离。
    虚拟机提供了资源的完全隔离。
  4. 本质区别:
    容器是进程

Docker的优点:

  1. 启动速度快,可以快速部署
  2. 占内存小,充分利用服务器资源
  3. 可移动性强,可跨平台部署
  4. 交付性强,一次构建,多次交付

Docker的三个重要组成部分:

  1. 镜像
    在这里插入图片描述
    Docker的镜像好比就是一个容器,就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
    例如:运行拉取nginx.img ------>run(运行)------>叫做nginx的容器(提供服务)。

  2. 容器
    Docker利用容器技术可以运行一个或者多个应用,通过镜像来创建的。
    它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
    可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
    容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

  3. 仓库
    存放镜像的地方,公有的仓库:Docker Hub 阿里云 网易云 华为云务。
    也可以自己搭建一个私有的仓库。

部署

Docker的默认安装目录是 /var/lib/docker

  1. 进行清空旧版docker和依赖

    yum remove docker
    docker-client
    docker-client-latest
    docker-common
    docker-latest
    docker-latest-logrotate
    docker-logrotate
    docker-engine

  2. 安装阿里云的Docker源

    yum-config-manager
    –add-repo
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  3. 安装最新版本的 Docker Engine-Community 和 containerd

    yum install docker-ce docker-ce-cli containerd.io

  4. 启动Docker并放到后台运行

    systemctl enable docker && systemctl start docker

  5. 安装镜像加速器
    可以提升拉去镜像的速度,国内有阿里、网易、科大这些云厂商都在提供镜像加速器服务,本文选择安装阿里云的镜像加速器。
    ①打开阿里镜像服务的网址::https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 然后记录图中的地址。
    在这里插入图片描述②在Docker写入配置文件,更换上图获取的地址即可,重启Docker服务即可。

    cat > /etc/docker/daemon.json << EOF
    {
    “registry-mirrors”: [“https://dfw6zeux.mirror.aliyuncs.com”]
    }
    EOF

    systemctl daemon-reload && systemctl restart docker

帮助命令

docker version : 查看版本信息

docker info : 显示 Docker 系统信息,包括镜像和容器数…

Docker --help 查看帮助信息

镜像命令

docker images : 列出本地镜像

docker images 

docker rmi : 删除本地一个或多少镜像。

dicker rmi [镜像ID1]..[镜像ID多个]

docker tag : 标记本地镜像,将其归入某一仓库,也叫打标签,形成一个新的镜像。

docker tag [镜像名:镜像版本]   [新的镜像名:新的镜像版本]

docker build :命令用于使用 Dockerfile 创建镜像。

使用该命令之前 ,应该需要在指定目录有Dockerfile文件
docke build [参数] [Docker的目录]
参数列表  
-t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
--cpu-shares :设置 cpu 使用权重;
--cpu-period :限制 CPU CFS周期;
--cpu-quota :限制 CPU CFS配额;
--cpuset-cpus :指定使用的CPU id;
--cpuset-mems :指定使用的内存 id;
--disable-content-trust :忽略校验,默认开启;
-f :指定要使用的Dockerfile路径;
--isolation :使用容器隔离技术;
--label=[] :设置镜像使用的元数据;
-m :设置内存最大值;
--memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
--no-cache :创建镜像的过程不使用缓存;
 -q :安静模式,成功后只输出镜像 ID;
-shm-size :设置/dev/shm的大小,默认值是64M;
 --ulimit :Ulimit配置。
--squash :将 Dockerfile 中所有的操作压缩为一层。
--network: 默认 default。在构建期间设置RUN指令的网络模式

例如 
[root@localhost ~]# vim dockerfile
FROM nginx
RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html

[root@localhost ~]# docker build -t nginxtest:v1.0  .
-t : 后面是新的镜像名字和标签  “.” Dockerfile是在当前的目录
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginxtest    v1.0      dcb60ca8b3d8   2 minutes ago   133MB

Dockerfile:构建容器的文件.
在这里插入图片描述docker -H history : 查看指定镜像的创建历史。

[root@localhost ~]# docker history -H [镜像ID]

docker save -o : 将指定镜像保存成 tar 归档文件。

docker save  -o  命名.tar  [镜像名:镜像版本  或者  镜像ID]
例如
[root@localhost ]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginxtest    v1.0      dcb60ca8b3d8   24 minutes ago   133MB
[root@localhost ]# docker save -o nginxtest.tar dcb60ca8b3d8
root@localhost ]# ll -h
-rw------- 1 root root 131M 3月  14 21:24 nginxtest.tar

docker load : 导入使用 docker save 命令导出的镜像。

docker load [参数]
[root@localhost test]# docker load < nginxtest.tar
或
[root@localhost test]# docker load -i  nginxtest.tar

docker import : 从归档文件中创建镜像。

docker import [镜像包] [新的镜像名:标签]
[root@localhost test]# docker import  nginxtest.tar nginx:v1.0
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost test]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        v1.0    eac8ab518808   22 seconds ago   137MB


export 和 import 导出的是一个容器的快照, 不是镜像本身, 也就是说没有 layer。

你的 dockerfile 里的 workdir, entrypoint 之类的所有东西都会丢失,commit 过的话也会丢失。

快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也更大。

docker save 保存的是镜像(image),docker export 保存的是容器(container);
docker load 用来载入镜像包,docker import 用来载入容器包,但两者都会恢复为镜像;
docker load 不能对载入的镜像重命名,而 docker import 可以为镜像指定新名称。

容器命令

docker ps -a : 列出容器

docker inspect : 获取容器/镜像的元数据。

docker inspect [容器ID]或[容器名]

docker start 启动容器 docker stop 停止容器 docker kill 强行终止容器

docker start -itd --restart=always [容器ID] /bin/bash
-i :标准输入输出
-t:分配一个终端或控制台
-d	后台运行容器,并返回容器ID
--restart=always:容器随docker engine自启动,因为在重启docker的时候默认容器都会被关闭 

docker -rm:删除一个或多个容器。

删除所有已经停止的容器:
docker rm $(docker ps -a -q)
删除容器 nginx01, 并删除容器挂载的数据卷:
docker rm -v nginx01
强制删除容器 ngxin02
docker rm -f nginx02

docker -p : 映射端口

docker -p 8888:80 主机8888端口映射容器80端口
docker -p 随机映射

docker attach :docker exec 连接到正在运行中的容器。

docker exec -itd [容器ID]或[容器名] /bin/bash

docker exit Ctrl+p+q退出容器

exit:退出并结束容器内的应用进程
Ctrl+p+q:退出容器交互界面

docker pause :暂停容器中所有的进程。

docker unpause :恢复容器中所有的进程。

docker logs : 获取容器的日志

docker logs [参数] [容器名或ID]
-f : 显示实时日志
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志

docker export -o :将容器 归档 [快照] 成一个tar文件

docker export  -o 命名文件.tar  [容器ID] 

docker top :查看容器中运行的进程信息。

docker top [容器ID]或[容器名]
查看所有容器的进程
for i in  `docker ps |grep Up|awk '{print $1}'`;do echo  &&docker top $i; done

docker commit :从容器创建一个新的镜像。

docker commit [参数] [容器ID] [新的镜像名:标签]
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                NAMES
848908c20f36   nginx     "/docker-entrypoint.…"   6 minutes ago   Up 2 minutes   0.0.0.0:80->80/tcp   ngixn

[root@localhost ~]# docker commit -a "king" -m "my test" 848908c20f36  ngxintest:v1.0 

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
ngxintest    v1.0      50b4321ff10b   8 seconds ago   133MB

docker cp :用于容器与主机之间的数据拷贝。

docker cp [主机目录]  [容器ID:目录]
docker cp     /www/runoob    96f7f14e99ab:/www/
或
docker cp  96f7f14e99ab:/www/   /www/runoob

docker diff : 检查容器里文件结构的更改。

[root@localhost ~]# docker diff [容器ID]

仓库命令

docker login : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker logout : 退出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

登陆到Docker Hub
docker login -u 用户名 -p 密码
登出Docker Hub
docker logout

docker pull : 从镜像仓库中拉取或者更新指定镜像

从Docker Hub下载ngixn镜像。
docker pull -a nginx:1.6 (不加标签默认最新版本)
从Docker Hub下载ngixn所有镜像。
docker pull -a nginx

docker push : 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库

上传本地镜像ngxintest:v8.8到镜像仓库中。
docker push ngixntest:v8.8

docker search : 从Docker Hub查找镜像

从 Docker Hub 查找所有镜像名包含ngxin,并且收星星大于 1000 的镜像
docker search -f stars=1000 nginx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值