• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > 从0开始了解Docker入门(小结)

从0开始了解Docker入门(小结)

作者:rccoder 字体:[增加 减小] 来源:互联网

本文主要包含Docker,入门,从0了解Docker等服务器相关知识,rccoder 希望可以进行参考

序

Docker 自开源以来受到了各大公司的广泛关注,或许现在互联网公司的运维体系不承载在 Docker(或 Pouch 等)之上都不好意思说自己的互联网公司。

本文会简单介绍下 Docker 的基础概念,入门级使用方式和一些使用 Docker 能大大提升效率的场景。

原理

对 Docker 最简单并且带有一定错误的认知就是 “Docker 是一种性能非常好的虚拟机”。

正如上面所说,这是有一定错误的说法。Docker 相比于传统虚拟机的技术来说先进了不少,具体表现在 Docker 不是在宿主机上虚拟出一套硬件后再虚拟出一个操作系统,而是让 Docker 容器里面的进程直接运行在宿主机上(Docker 会做文件、网络等的隔离),这样一来 Docker 会 “体积更轻、跑的更快、同宿主机下可创建的个数更多”。

Docker 中有三个核心概念:Image、Container、Repository。

  1. Image: 有领“好人卡”倾向的广大程序猿一定对 镜像 的概念不会陌生。但和 windows 的那种 iso 镜像相比,Docker 中的镜像是分层的,可复用的,而非简单的一堆文件迭在一起(类似于一个压缩包的源码和一个 git 仓库的区别)。
  2. Container: 容器的存在离不开镜像的支持,他是镜像运行时的一个载体(类似于实例和类的关系)。依托 Docker 的虚拟化技术,给容器创建了独立的端口、进程、文件等“空间”,Container 就是一个与宿机隔离 “容器”。容器可宿主机之间可以进行 port、volumes、network 等的通信。
  3. Repository: Docker 的仓库和 git 的仓库比较相似,拥有仓库名、tag。在本地构建完镜像之后,即可通过仓库进行镜像的分发。常用的 Docker hub 有 https://hub.docker.com/ 、 https://cr.console.aliyun.com/ 等。

相关命令

1. 安装

Docker 的安装是非常便捷的,在 macOS、ubuntu 等下面都有一键式安装工具或者脚本。更多可以参考 Docker 官方教程。
安装后 Terminal 中敲下 docker,有使用说明出来的话大多情况下说明已经安装成功了。

2. 寻找基础镜像

DockerHub 等网站都提供了众多镜像,一般情况下我们都会从它那找个镜像作为基础镜像,然后再进行我们的后续操作。

这里我们以 ubuntu 基础镜像为例,配置一个 node 环境。

因为 “链路太长” 的原因,国内访问 Docker Hub 可能会比较慢,可以使用国内众多厂商提供的镜像加速器

3. 拉取基础镜像

利用 docker pull 命令即可从相关 hub 网站上拉取镜像到本地。同时在拉的过程中就能看到是按照多个 “层” 去拉镜像的。
> docker pull ubuntu:18.04

18.04: Pulling from library/ubuntu
c448d9b1e62f: Pull complete
0277fe36251d: Pull complete
6591defe1cd9: Pull complete
2c321da2a3ae: Pull complete
08d8a7c0ac3c: Pull complete
Digest: sha256:2152a8e6c0d13634c14aef08b6cc74cbc0ad10e4293e53d2118550a52f3064d1
Status: Downloaded newer image for ubuntu:18.04

执行 docker images 即可看到本地所有的镜像

> docker images
REPOSITORY        TAG         IMAGE ID      CREATED       SIZE
ubuntu          18.04        58c12a55082a    44 hours ago    79MB

4. 创建一个 Docker 容器

docker create 命令通过镜像去创建一个容器,同时吐出容器 id。

> docker create --name ubuntuContainer ubuntu:18.04
0da83bc6515ea1df100c32cccaddc070199b72263663437b8fe424aadccf4778

用docker start 即可运行改容器。

> docker start ubuntuContainer

用 docker ps 即可查看运行中的 container

> docker ps
CONTAINER ID    IMAGE        COMMAND       CREATED       STATUS       PORTS        NAMES
9298a27262da    ubuntu:18.04    "/bin/bash"     4 minutes ago    Up About a minute            ubuntuContainer

用 docker exec 即可进入该 container。

> docker exec -it 9298
root@9298a27262da:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@9298a27262da:/# exit

用docker run 可以一步到位创建并运行一个容器,然后进入该容器。

> docker run -it --name runUbuntuContainer ubuntu:18.04 /bin/bash
root@57cdd61d4383:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@57cdd61d4383:/#

# docker ps 可以查到已经成功运行了 runUbuntuContainer
> docker ps
CONTAINER ID    IMAGE        COMMAND       CREATED       STATUS       PORTS        NAMES
57cdd61d4383    ubuntu:18.04    "/bin/bash"     9 seconds ago    Up 8 seconds              runUbuntuContainer
9298a27262da    ubuntu:18.04    "/bin/bash"     9 minutes ago    Up 6 minutes              ubuntuContainer

5. 在容器里安装 Node 环境

进入容器之后一切操作和普通环境一致,我们安装个简单的 node 环境

> apt-get update
> apt-get install wget
> wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

# 安装完之后可能当前 session 读不到 nvm 命令,可以 exit 之后再进入中终端环境
> nvm install 8.0.0
> node -v

6. commit 容器,创建新镜像

和 Ghost 装 windows 一样,很多时候,我们期望能定制自己的镜像,在里面安装一些基础环境(比如上文中的 node),然后制作出自己要的基础镜像。这个时候 docker commit 就派上用场了。

> docker commit --author "rccoder" --message "curl+node" 9298 rccoder/myworkspace:v1
sha256:68e83119eefa0bfdc8e523ab4d16c8cf76770dbb08bad1e32af1c872735e6f71

# 通过 docker images 就能看到新制作的 rccoder/myworkspace 就躺在这里了
>docker images
REPOSITORY        TAG         IMAGE ID      CREATED       SIZE
rccoder/myworkspace   v1       e0d73563fae8    20 seconds ago   196MB

接着,试一下我们新创建的镜像?

> docker run -it --name newWorkSpace rccoder/myworkspace:v1 /bin/bash
root@9109f6985735:/# node -v
8.0.0

看起来没问题。

7. push 镜像到 docker hub

镜像制作好了,怎么共享出去让别人使用呢?这里以 push 到docker hub 为例。

第一步是先去 docker hub 注册一个账号,然后在终端上登录账号,进行 push。

> docker login
> docker push rccoder/myworkspace:v1
The push refers to repository [docker.io/rccoder/myworkspace]
c0913fec0e19: Pushing [=>                         ] 2.783MB/116.7MB
bb1eed35aacf: Mounted from library/ubuntu
5fc1dce434ba: Mounted from library/ubuntu
c4f90a44515b: Mounted from library/ubuntu
a792400561d8: Mounted from library/ubuntu
6a4e481d02df: Waiting

8. 是时候使用 Dockerfile 了

用 Docker 进行持续集成?相比在了解 Docker 之前肯定听过这个事情,那就意外着需要从某个地方拷贝代码,然后执行(对,听上去有点travis-ci 的那种感觉)。

是时候该 Dockerfile 出场了!

Dockerfile 是一个由一堆命令+参数构成的脚本,使用 docker build 即可执行脚本构建镜像,自动的去做一些事(同类似于travis-ci 中的 .travis.yml)。

Dockerfile 的格式统统为:

# Comment
INSTRUCTION arguments

必须以 FROM BASE_IMAGE 开头指定基础镜像。

更详细的规范与说明请参考 Dockerfile reference。这里我们以基于上面的 rccoder/myworkspace:v1 作为基础镜像,然后在根目录创建 a 目录为例

Dockerfile 如下:

FROM rccoder/myworkspace:v1
RUN mkdir a

然后执行:

> docker build -t newfiledocker:v1 .
Sending build context to Docker daemon 3.584kB
Step 1/2 : FROM rccoder/myworkspace:v1
 ---> 68e83119eefa
S
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Docker实践8:Compose,docker实践compose
  • Docker buildx构建多平台镜像并推送到私有仓库的方法
  • Docker三个基本概念镜像(Image)容器(Container)仓库(Repository)
  • 什么是Docker?为什么要使用Docker
  • docker 开源的应用容器引擎
  • 如何给docker设置http代理
  • docker官方mysql镜像自定义配置详解
  • 详解Docker数据管理(数据卷&数据卷容器)
  • 如何利用Docker容器实现代理转发与数据备份详解
  • 详解Docker Swarm 在持续集成测试中的应用

相关文章

  • 详解制作各种docker镜像
  • 教你使用如何docker部署淘宝rap2服务
  • Win10上VMware workstation安装图文教程
  • 如何用docker部署redis cluster的方法
  • VMware虚拟机三种网络模式区别
  • MAC下安装docker教程
  • Docker overlay 网络搭建的方法
  • 详解Docker 下开发 hyperf 完整使用示例
  • 主机和VMware中的Linux实现共享文件夹的图文教程
  • vmware Esxi 5.0 忘记密码重置的方法

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • docker创建redis镜像的方法
    • Docker容器自启动的实现方法
    • 解决ubuntu下vi上下左右方向键出现字母backspace键不能删除字符 问题
    • ubuntu17.10安装docker-ce的方法
    • 网络虚拟化与下一代服务器:谁是赢家?
    • Docker下Tomcat容器中使用Mysql的方法
    • myeclipse中建web项目上传文件到hadoop,出现文件上传上去了,但是文件大小为0或小于当前文件解决方案,
    • 详解使用Docker搭建Java Web运行环境
    • Docker到底是什么?Docker为什么它这么火!
    • docker 深入了解镜像、容器、仓库等概念

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有