Docker笔记:安装及入门使用

Docker是一个能把开发的应用程序自动部署到容器的开源引擎。它在虚拟化的环境中增加了一个应用程序部署引擎,提供一个轻量、快速的环境,让开发者高效的将程序部署到各种环境。Docker是一个C/S架构的程序,提供一个命令行工具docker及一整套Restful API。

Docker组件

  • Docker镜像:用户基于镜像来运行自己的容器,可以将镜像当作是容器的“源代码”,它基于Union文件系统的一种层式结构,由一系列指令一步步构建出来。
  • Registry: Registry(仓库)是用来保存用户镜像的地方,分为用户仓库和顶层仓库。
  • Container(容器):容器是基于镜像启动的,容器中可以运行一个或多个进程。总体来说:容器就是一个镜像格式,一系列标准的操作,一个执行环境。

安装Docker

示例在Centos7.7上安装docker
docker官方建议内核至少3.8以上,建议3.10以上,如若不是请升级内核,
查看内核版本信息

# uname -a

更新yum包

# yum update

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

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

设置yum源,此外考虑速度问题,采用国内的阿里镜像

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

查看仓库中可选的centos的docker镜像

# yum list docker-ce --showduplicates | sort -r
Bad id for repo: mirrors.aliyun.com_docker-ce_linux_centos_docker-ce.xn--repo()-mu8ig98h4l0hokj, byte = ( 60
 * updates: mirrors.aliyun.com
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror, langpacks
 * extras: mirrors.aliyun.com
docker-ce.x86_64            3:19.03.8-3.el7                     docker-ce-stable
...
docker-ce.x86_64            18.03.1.ce-1.el7.centos             docker-ce-stable
...
 * base: mirrors.cn99.com
Available Packages

安装Docker,命令:yum install docker-ce-版本号,我选的是docker-ce-18.03.1.ce,如下

# yum install docker-ce-18.06.3.ce-3.el7

至此,docker已经安装完成了,下面来启动它

# systemctl start docker
添加自启动守护
# systemctl enable docker
查看安装完成的docker
# docker version
Client:
 Version:           18.06.3-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        d7080c1
 Built:             Wed Feb 20 02:26:51 2019
 OS/Arch:           linux/amd64
 Experimental:      false

容器示例

上面我们已经安装完成了docker,现在我们来尝试运行一个示例吧,就以ubuntu镜像为示例吧
可以通过docker search来查找镜像

# docker search ubuntu
NAME                                                      DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
ubuntu                                                    Ubuntu is a Debian-based Linux operating sys…   10614               [OK]                
第一个是顶层仓库提供的官方镜像

拉取镜像(默认拉取tag为latest的镜像)

# docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
Digest: sha256:04d48df82c938587820d7b6006f5071dbbffceb7ca01d2814f81857c631d44df
Status: Image is up to date for ubuntu:latest

启动容器

# docker run --name demo_container -i -t ubuntu /bin/bash
demo_container:新容器的名称,否则docker会为新启动的容器命名一个随机的名称
-i:开启容器中STDIN,为交互式shell提供标准输入
-t:为创建的容器分配一个伪tty终端
-d:创建守护式容器,让容器在后台运行
ubuntu:镜像的名称
/bin/bash:容器启动后执行的命令

成功后,我们即将会进入新创建的ubuntu容器中。

创建Docker私有仓库

Docker Registry分为顶层仓库和用户仓库。
用户仓库:有Docker用户创建,命名有用户名和仓库名两部分组成:bourne/demo, 这里bourne是用户名,demo是仓库名
顶层仓库:顶层仓库由Docker公司和一些优质厂商提供。相对于用户仓库,名称只包含仓库门部分,如ubuntu仓库。
比如用docker search 查找ubuntu镜像

# docker search ubuntu
NAME                                                      DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
ubuntu                                                    Ubuntu is a Debian-based Linux operating sys…   10614               [OK]                
dorowu/ubuntu-desktop-lxde-vnc                            Docker image to provide HTML5 VNC interface …   404                                     [OK]
rastasheep/ubuntu-sshd                                    Dockerized SSH service, built on top of offi…   243                                     [OK]
排在首位的ubuntu仓库即来自于顶层仓库,而其余两个即使用户仓库
出于安全等考虑,我们会搭建一个私有的Registry,得益于Docker公司的开源,运行自己的Registry非常简单。

启动一个运行Registry的容器(端口是5000),并绑定到本地宿主机5000端口(冒号后面的5000端口是registry容器的端口)

# sudo docker run -p 5000:5000 registry

而将镜像推送到本地仓库,只有为该镜像打上tag,然后为即可推荐,此处示范将从顶层仓库拉下来的ubuntu镜像,推送到本地

本地的镜像
# docker images 
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
ubuntu                             latest              72300a873c2c        3 weeks ago         64.2MB
registry                           latest              708bc6af7e5e        7 weeks ago         25.8MB

为ubuntu镜像(72300a873c2c)打上tag,为了指定新的Registry地址,需要在镜像名前加上主机和端口

# docker tag 72300a873c2c 127.0.0.1:5000/weicjf/ubuntu_18.04
# docker push 127.0.0.1:5000/weicjf/ubuntu_18.04
The push refers to repository [127.0.0.1:5000/weicjf/ubuntu_18.04]
1852b2300972: Mounted from weicjf/static_web 
03c9b9f537a4: Mounted from weicjf/static_web 
8c98131d2d1d: Mounted from weicjf/static_web 
cc4590d6a718: Mounted from weicjf/static_web 
latest: digest: sha256:... size: 1152

现在这个镜像被提交到了本地的Registry,可以通过使用docker run命令构建基于其的新容器,启动的新容器hostname为c34b66f33e2a

# docker run -i -t 127.0.0.1:5000/weicjf/ubuntu_18.04 /bin/bash
root@c34b66f33e2a:/# 
root@c34b66f33e2a:/# hostname 
c34b66f33e2a
root@c34b66f33e2a:/# 

ps:可以通过ip:5000/v2/_catalog查看本地的镜像

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值