网站首页Linux相关

Docker使用入门

发布时间:2017-07-28编辑:fc不将就阅读(569

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

    系统环境:CentOS7.2, Docker1.12

    注意:请使用root用户或者sudo获取权限,默认不允许非root用户操作docker

    一:安装Docker

        直接yum安装即可:sudo yum install docker

    二:启动docker并设置开机启动    

        systemctl enable docker.service
        systemctl start docker.service

    三:下载Docker镜像文件

        如我们下载一个nginx的镜像:docker pull nginx

        下载完成后通过命令:docker images 查看已有的镜像,结果如下所示

    [root@test4 ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    docker.io/nginx     latest              b8efb18f159b        47 hours ago        107.5 MB

    四:启动Nginx镜像,并进入命令行界面

        如下图所示代表我们进去了id为6458540c757d的Nginx镜像内,可以操作docker.

    [root@test4 ~]# docker run -i -t nginx /bin/bash
    root@6458540c757d:/#

    五:查看当前运行中的镜像

    [root@test4 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS       
    6458540c757d        nginx               "/bin/bash"         5 minutes ago       Up 5 minutes

    六:退出和保存镜像

         退出docker的命令为exit。但是注意如果exit镜像不会保存之前的操作,再次启动时会恢复成原始的nginx镜像。

         如果需要保存改动,需要commit nginx镜像,生成一个新的镜像.

         commit命令:docker  commit  CONTAINER_ID  REPOSITORY

         其中CONTAINER_ID可以通过docker ps查看,REPOSITORY是docker的保存名称或者说路径.

         再次通过docker  imagse可以查看新增加的镜像,如下

    [root@test4 ~]# docker commit 6458540c757d learn/nginx
    sha256:1b622448fbac4fe38d35a186ec2a26f55da4c10ad93a1028cf27239cd9324bc9
    [root@test4 ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
    learn/nginx         latest              1b622448fbac        About a minute ago   107.5 MB
    docker.io/nginx     latest              b8efb18f159b        47 hours ago         107.5 MB

    七:将Docker中的端口与宿主机的端口映射,供外边调用docker服务

        启动nginx镜像,命令如下,将nginx的80端口映射到宿主机的5000端口

    [root@test4 ~]# docker run -p 5000:80 -i -t learn/nginx /bin/bash

        在docker中启动nginx并在宿主机中测试是否获取到nginx测试页面

    root@fc98fcec2d33:~# /etc/init.d/nginx start
    [root@test4 ~]# curl  127.0.0.1:5000
    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    <style>
        body {
            width: 35em;
            margin: 0 auto;
            font-family: Tahoma, Verdana, Arial, sans-serif;
        }
    </style>
    </head>
    <body>
    <h1>Welcome to nginx!</h1>

        可以看到宿主机已经可以访问docker中的nginx服务了。

    八:后台运行docker

        1:前面说的用exit方法退出docker会关闭docker,并且不会保存修改的内容.

          用Ctrl+P+Q命令退出docker,可以让docker在后台保持运行

    root@fc98fcec2d33:~#
    root@fc98fcec2d33:~# [root@test4 ~]#
    [root@test4 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
    fc98fcec2d33        learn/nginx         "/bin/bash"         4 minutes ago       Up 4 minutes        0.0.0.0:5000->80/tcp   admiring_meninsky

        2:启动docker的时候指定后台启动

            命令为:docker run -p 5000:80 -dit CONTAINER_ID

            然后通过exec向docker发送命令启动nginx即可

    [root@test4 ~]# docker run -p 5000:80 -dit learn/nginx
    be0d6d33d31e17177f26728ece31817f8e0be7258b451a0de35a44f621e8c126
    [root@test4 ~]# docker exec -d be0d6d33d31e17177f26728 /etc/init.d/nginx start
    [root@test4 ~]# curl 127.0.0.1:5000
    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>

    3:重新进入运行中的docker

    docker exec -it <docker_name> /bin/bash