前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Centos7安装Docker

Centos7安装Docker

作者头像
Wyc
发布2019-07-03 17:14:39
1.8K0
发布2019-07-03 17:14:39
举报
文章被收录于专栏:Python研发Python研发

Centos7安装Docker

查看Linux内核版本
代码语言:javascript
复制
uname -r

3.10.0-693.11.1.el7.x86_64
Docker ce支持64位版本Centos7,并且要求内核版本不低于3.10
如果之前有安装过Docker ce的,可以移出之前的旧版本,使用以下命令。
代码语言:javascript
复制
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
安装基本的系统工具
代码语言:javascript
复制
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
安装过程中如果出现以下错误,那么就是yum-config-manage这个文件的头的Python版本错误,建议查看自己当前Python版本,在终端输入Python即可查看,Python2.7==》Python2, Python3.5.xx ==》Python3 or Python35,也有可能是更换Python版本代码编译不通过问问题,如果更换Python3那么就要把135行更换掉。
代码语言:javascript
复制
File "/bin/yum-config-manager", line 135
    except yum.Errors.RepoError, e:
                               ^
SyntaxError: invalid syntax
更换代码135行
代码语言:javascript
复制
133 try:
134     opts = yb.doUtilConfigSetup()
135 except yum.Errors.RepoError as e:
136     logger.error(str(e))
137     sys.exit(50)
还有这种错误
代码语言:javascript
复制
 File "/bin/yum-config-manager", line 159
    print yb.fmtSection('main')
           ^
SyntaxError: invalid syntax
给159,160,196,201,222,233,244,271行的print添加()
代码语言:javascript
复制
159     print(yb.fmtSection('main'))
160     print(yb.conf.dump())
239,254,261行的try更换
代码语言:javascript
复制
239:  except (IOError, OSError, yum.Errors.YumBaseError) as e:
254:  except yum.Errors.DuplicateRepoError as e:
261:  except ValueError as e:
272:  except (IOError, OSError) as e:
脚本安装

安装之前必须确保yum包是最新状态

代码语言:javascript
复制
yum update

下载、执行安装docker脚本

代码语言:javascript
复制
下载: curl -fsSl https://get.docker.com -o get-docker.sh
执行: sudo sh get-docker.sh
执行完get-docker.sh这个脚本之后会自动添加一个docker.repo源并安装Docker。
启动docker进程
代码语言:javascript
复制
sudo systemctl start docker
测试docker是否安装成功
代码语言:javascript
复制
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:41a65640635299bab090f783209c1e3a3f11934cf7756b09cb2f1e02147c6ed8
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly
测试完成之后如果出现这个,那就说明docker安装成功了。

Docker的三大组件

镜像(image)

Docker运行容器之前需要本地存在对应的镜像。

镜像是用来创建Docker容器的。一个镜像可以包含一个完整的操作系统环境和用户需要的其他应用程序,在Docker Hub里面有大量现成的镜像提供下载,Docker的镜像是只读的,一个镜像可以创建多个容器。

容器(Container)

Docker利用容器来进行开发,运行应用。

容器是镜像创建的实列,它可以启动,开始,停止,删除,每个容器都是相互隔离的,保证安全的平台。

仓库(repository)

仓库是集中存放镜像文件的地方。

每个仓库中又包含了多个镜像,每个镜像有不同的标签(TAG)

代码语言:javascript
复制
获取镜像的命令是   docker pull
格式:    docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

使用: docker pull ubuntu:18.04    

上列的命令中,拉取镜像的同时,没有给出具体的镜像仓库地址,所以默认去 docker hub 获取镜像, 镜像名称是ubuntu:18.04的镜像,因此将会获取官方镜像 library/ubuntu 仓库中标签为18.04的镜像。 

获取镜像成功之后,接下来运行镜像。

在此ubuntu容器就运行起来了,进入了ubuntu系统中。

代码语言:javascript
复制
参数: 
    docker run         运行容器的命令
    -it                这是两个参数 -i: 交互式操,  -t: 终端
    --rm               容器退出之后随即删除,避免浪费空间,默认情况容器是不会自动删除的需要手动删除。

列出所有镜像

代码语言:javascript
复制
docker image ls

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              18.04               7698f282e524        2 weeks ago         69.9MB
hello-world         latest              fce289e99eb9        4 months ago        1.84kB
代码语言:javascript
复制
参数:
代码语言:javascript
复制
   REPOSITORY:                仓库名称
   TAG:                       标签
   IMAGE ID:                  镜像ID
   CREATED:                   创建时间
   SIZE:                      占用空间
代码语言:javascript
复制
镜像体积
代码语言:javascript
复制
docker system df

虚悬镜像

代码语言:javascript
复制
<none>               <none>              00285df0df87        5 days ago          342 MB

这个镜像原本是有镜像名和标签的,原来为mongo:3.2 随着官方镜像维护,发布了新版本之后,重新 docker pull mongo:3.2 的时候,mongo:3.2这个镜像名被转移到了新下载的镜像身上,而旧的镜像上的这个名称则被取消了,从而成为了<none>,除了 docker pull可能会导致成这种情况, docker build 也同样可以导致这种现象,由于新旧镜像同名,旧镜像名称被取消,从而出现仓库名, 标签均为<none>的镜像。这类无标签镜像也被称之为虚悬镜像,可以使用下面的 命令来专门显示这类镜像。

代码语言:javascript
复制
docker image ls -f dangling=true

虚悬镜像一般来说是没有用的, 可以删除,使用以下命令删除虚悬镜像。

代码语言:javascript
复制
docker image prune

列出指定镜像

代码语言:javascript
复制
 docker image ls ubuntu        # ubuntu镜像名称

列出特定的某个镜像

代码语言:javascript
复制
docker image ls ubuntu:18.04    # ubuntu:18.04      镜像名称: 18.04 标签

过滤出 ubuntu:18.04镜像之后创建的镜像

代码语言:javascript
复制
docker image ls -f sinc=ubuntu:18.04

过滤出ubuntu:18.04之前创建的镜像

代码语言:javascript
复制
docker image ls -f before=ubuntu:18.04

已镜像ID显示出镜像数量

代码语言:javascript
复制
docker image ls -q

# 镜像ID
7698f282e524
fce289e99eb9

format模板语法显示指定字段

代码语言:javascript
复制
docker image ls --format "{{.ID}}: {{.Repository}}"

# 显示
7698f282e524: ubuntu
fce289e99eb9: hello-world

显示标题行,自己定义列

代码语言:javascript
复制
 docker image ls --format "table {{.ID}}\t {{.Repository}}\t{{.Tag}}"

# 显示
IMAGE ID             REPOSITORY         TAG
7698f282e524         ubuntu             18.04
fce289e99eb9         hello-world        latest

删除镜像

删除之前,镜像必须停止,才可以删除。

代码语言:javascript
复制
 docker image rm 镜像ID

Docker运行Nginx

代码语言:javascript
复制
 获取nginx镜像
 sudo docker pull nginx

 查看当前运行的docker镜像
 docker ps

 运行Nginx镜像
 sudo docker run -d -p 8000:80 --name nginx_test nginx

运行起来之后IP加端口在浏览器打开就可以看到 Welcome to nginx! 那就成功啦!

进入Docker运行中容器

代码语言:javascript
复制
docker image ls    # 查看镜像
docker ps          # 查看运行中的容器
docker ps -a       # 查看所有容器
docker exec -it webserver容器名称 bash
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Centos7安装Docker
    • 脚本安装
    • Docker的三大组件
      • 镜像(image)
        • 容器(Container)
          • 仓库(repository)
            • 运行起来之后IP加端口在浏览器打开就可以看到 Welcome to nginx! 那就成功啦!
            相关产品与服务
            容器镜像服务
            容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档