centos和windows安装docker及使用入门

参考菜鸟教程中的docker教程 :https://www.runoob.com/docker/docker-tutorial.html

Docke介绍

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

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

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

历史:Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)

优势

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。

借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

  1. 快速,一致地交付您的应用程序
  2. 响应式部署和扩展
  3. 在同一硬件上运行更多工作负载

安装

centos7

yum install docker-ce

启动 Docker:systemctl start docker

window安装

下载docker desktop,
https://hub.docker.com/editions/community/docker-ce-desktop-windows

运行文件安装docker,打开软件后警告WSL 2installation is incomplete,根据网页下载文件并运行,重启系统即可

控制面板 程序功能 启用或关闭windows功能,确认勾选Hyper-V

win10没有Hyper-v的解决方法

windows Docker容器和镜像文件安装位置更改
参考 windows docker 更改镜像安装目录

Docker 客户端

docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。
在这里插入图片描述

可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。

例如我们要查看 docker stats 指令的具体使用方法:

docker stats --help

run demo

docker run hello-world

各个参数解析:

docker: Docker 的二进制执行文件。

run: 与前面的 docker 组合来运行一个容器。

docker镜像初级使用

列出镜像列表 docker images

我们可以使用 docker images 来列出本地主机上的镜像。

各个选项说明:

  • REPOSITORY:表示镜像的仓库源

  • TAG:镜像的标签

  • IMAGE ID:镜像ID

  • CREATED:镜像创建时间

  • SIZE:镜像大小

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 15.10、14.04 等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。

docker run -t -i ubuntu:15.10 /bin/bash 

如果不指定一个镜像的版本标签,例如只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。

获取一个新的镜像 docker pull

当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。

如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。

docker pull ubuntu:13.10

查找镜像 docker search

可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/

我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 httpd 的镜像来作为我们的 web 服务。

docker search httpd

参数:

  • NAME: 镜像仓库源的名称

  • DESCRIPTION: 镜像的描述

  • OFFICIAL: 是否 docker 官方发布

  • stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。

  • AUTOMATED: 自动构建

拖取镜像 docker pull

我们决定使用上图中的 httpd 官方版本的镜像,使用命令 docker pull 来下载镜像

docker pull httpd

下载完成后,我们就可以使用这个镜像了。

 docker run httpd

删除镜像 docker rmi

镜像删除使用 docker rmi 命令,比如我们删除 hello-world 镜像:

docker rmi hello-world

删除镜像时报错
在这里插入图片描述

删除/var/lib/docker/image/overlay2/imagedb/content/sha256目录下相应的镜像文件即可

Docker 容器使用命令

容器运行docker run

交互模式
docker run -it image_id /bin/bash  

各个参数解析:

-t: 在新容器内指定一个伪终端或终端。

-i: 允许你对容器内的标准输入 (STDIN) 进行交互。

在这里插入图片描述
通过运行 exit 命令或者使用 CTRL+D 来退出容器。

后台模式

在大部分的场景下,我们希望 docker 的服务是在后台运行的,可以过 -d 指定容器的运行模式。

使用以下命令创建一个以进程方式运行的容器

docker run -d image_id /bin/sh -c "while true; do echo hello world; sleep 1; done"

返回:长字符串叫做容器 ID,对每个容器来说都是唯一的, 可以通过容器 ID 来查看对应的容器发生了什么

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

  • docker attach,如果从这个容器退出,会导致容器的停止。
  • docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。如:docker exec -it container_id /bin/bash

查看容器状态 docker ps

docker ps

输出详情介绍:

  • CONTAINER ID: 容器 ID。

  • IMAGE: 使用的镜像。

  • COMMAND: 启动容器时运行的命令。

  • CREATED: 容器的创建时间。

  • STATUS: 容器状态。
    状态有7种:

    • created(已创建)
    • restarting(重启中)
    • running 或 Up(运行中)
    • removing(迁移中)
    • paused(暂停)
    • exited(停止)
    • dead(死亡)
  • PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。

  • NAMES: 自动分配的容器名称。

查看容器内的标准输出:

docker logs CONTAINER_ID

返回:

hello world

查看所有容器

docker ps -a

停止容器 docker stop

停止一个容器:docker stop <容器 ID>

docker stop CONTAINER_ID

重启容器 docker restart

停止的容器可以通过 docker restart 重启:

docker restart <容器 ID>

导出容器 docker export

导出本地某个容器:docker export

docker export contain_id > ubuntu.tar

导出容器 1e560fca3906 快照到本地文件 ubuntu.tar

导入容器 docker import

使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:

 cat docker/ubuntu.tar | docker import - test/ubuntu:v1

也可以通过指定 URL 或者某个目录来导入,例如:

docker import http://example.com/exampleimage.tgz example/imagerepo

删除容器 docker rm

 docker rm -f 1e560fca3906

运行web应用

使用 docker 构建一个 web 应用程序。
docker容器中运行一个 Python Flask 应用来运行一个web应用。

docker pull training/webapp # 载入镜像
docker run -d -P training/webapp python app.py

参数说明:

-d:让容器在后台运行。

-P:将容器内部使用的网络端口随机映射到我们使用的主机上

使用 docker ps 来查看我们正在运行的容器,发现多了端口信息.也可以通过 -p 参数来设置不一样的端口:

docker run -d -p 5000:5000 training/webapp python app.py
网络端口的快捷方式

使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号。

docker port 容器id #或者docker port 容器名字
查看 WEB 应用程序日志

docker logs [ID或者名字] 可以查看容器内部的标准输出。

docker logs -f ID

-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。

查看WEB应用程序容器的进程

我们还可以使用 docker top 来查看容器内部运行的进程

docker top 容器名字
检查 WEB 应用程序

使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。

docker inspect 名字
停止 WEB 应用容器
docker stop 名字
重启WEB应用容器

已经停止的容器,我们可以使用命令 docker start 来启动。

docker start 名字

docker ps -l 查询最后一次创建的容器:
返回类似:

CONTAINER ID        IMAGE                             PORTS                     NAMES
bf08b7f2cd89        training/webapp     ...        0.0.0.0:5000->5000/tcp    wizardly_chandrasekhar

正在运行的容器,我们可以使用 docker restart 命令来重启。

移除WEB应用容器

使用 docker rm 命令来删除不需要的容器

docker rm 名字  

删除容器时,容器必须是停止状态,否则会报如下错误

Error response from daemon: You cannot remove a running container bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85. Stop the container before attempting removal or force remove

docker镜像高级使用

创建镜像

当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

1、从已经创建的容器中更新镜像,并且提交这个镜像
2、使用 Dockerfile 指令来创建一个新的镜像

更新镜像

更新镜像之前,我们需要使用镜像来创建一个容器。

docker run -t -i ubuntu:15.10 /bin/bash

在运行的容器内使用 apt-get update 命令进行更新。

在完成操作之后,输入 exit 命令来退出这个容器。

此时 ID 为 e218edb10161 的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit 来提交容器副本。

docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2

各个参数说明:

-m: 提交的描述信息

-a: 指定镜像作者

e218edb10161:容器 ID

runoob/ubuntu:v2: 指定要创建的目标镜像名

我们可以使用 docker images 命令来查看我们的新镜像 runoob/ubuntu:v2,使用我们的新镜像 runoob/ubuntu 来启动一个容器

docker run -t -i runoob/ubuntu:v2 /bin/bash

构建镜像 docker build

使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

创建文件夹,mkdir ***
创建Docke1rfile文件

cat Dockerfile 
FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

第一条FROM,指定使用哪个镜像源

RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。

然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

docker build -t runoob/centos:6.7 .

参数说明:

  • -t :指定要创建的目标镜像名

  • . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

增加镜像仓库地址

vi /etc/docker/daemon.json 添加

"registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ],
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值