Docker 实战笔记(有图有代码哟!)

作者: 柴柴学长 | 来源:发表于2017-09-18 01:31 被阅读378次

    Docker的安装与配置

    CentOS


    前提条件

    目前,CentOS 仅在发行的版本中的内核支持Docker
    Docker 运行在CentOS 7 上要求系统为64位,系统内核版本在3.10以上。本次测试运行使用的是 centOS 7.2 64位的系统版本。
    使用代码 uname -r即可查看系统内核版本

    Docker软件已经包括在默认的CentOS-Extras软件源中。因此想要安装Docker,只需要运行下面的yum命令:

    yum install docker-io -y
    

    直接yum安装,查看版本来看docker是否安装完成

    docker -v
    

    启动docker服务

    service docker start
    

    设置开机自启动

    chkconfig docker on
    

    由于国内访问 Docker Hub 比较慢,可以使用腾讯云提供的国内镜像源,加速访问 Docker Hub 。依次执行以下命令:

    echo "OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'" >> /etc/sysconfig/docker
    

    systemctl daemon-reload
    

    service docker
    

    Ubuntu


    Docker 要求Ubuntu 系统的内核版本高于3.10,通过uname -r命令查看当前的内核版本
    本次测试使用的Ubuntu 系统为Ubuntu Server 16.04.1 LTS 64位

    curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
    

    验证一下Docker 有没有安装成功

    docker -v
    

    安装成功,因为要使用docker hub 的原因,在这里我们需要添加一个国内的镜像,这里我们使用阿里云的。修改daemon配置文件/etc/docker/daemon.json来使用加速器

    1.  sudo mkdir -p /etc/docker
    2.  sudo tee /etc/docker/daemon.json <<-'EOF'
    3.  {
    4.          "registry-mirrors": ["https://dmmxhzvq.mirror.aliyuncs.com"]
    5.  }
    6.  EOF
    7.  sudo systemctl daemon-reload
    8.  sudo systemctl restart docker
    

    Windows


    Docker在Windows中需要使用虚拟机才能够运行,目前支持的版本是Windows 10以及Windows server 2016。在Windows 7中进行安装测试,无法安装。截图如下。

    docker 的基本操作命令

    删除


    杀死所有正在运行的容器

    docker kill $(docker ps -a -q)
    

    删除所有已经停止的容器

    docker rm $(docker ps -a -q)
    

    删除所有未打dangling 标签的镜像

    docker rmi $(docker images -q -f dangling=true)
    

    通过镜像的id来删除指定镜像

    docker rmi <image id>
    

    删除所有镜像

    docker rmi $(docker images -q)
    

    查看

    查看正在运行的容器

    docker ps
    

    查看所有的容器

    docker ps -a
    

    查看本地的所有镜像

    docker images -a
    

    查看本地镜像中REPOSITORY为centos的镜像

    docker images centos
    

    配置镜像

    下载镜像

    docker pull [image name]:[tag]
    

    登录到仓库(默认为docker hub)

    docker login -u [用户名] -p [密码]
    

    登出仓库

    docker logout
    

    将本地镜像上传到镜像仓库(需要先登录到仓库)

    docker push [image name]:[tag]
    

    容器

    强制删除容器db01,db02(-f:通过SIGKLL信号强制删除一个运行中的容器)

    dokcer rm -f db01、db02
    

    删除容器db01 ,并删除容器挂载的数据卷(-v:删除与容器关联的卷)

    dokcer rm -v db01
    

    实践中遇到的错误

    1.镜像无法删除


    docker rmi $(docker images -q)
    

    理论上应该可以删除全部镜像,但是实际操作中却出现了问题。于是只能单独进行删除

    docker rmi <image id>
    

    如果有image id相同,会出现以下错误

    Error response from daemon: conflict: unable to delete d231ef002eba (must be forced) - image is referenced in one or more repositories

    那么可以使用name:tag进行删除.

    docker rmi <image name>:<tag>
    

    问题即可解决

    2.job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.和Cannot connect to the Docker daemon. Is the docker daemon running on this host?的问题解决

    起因:腾讯云服务器我给他重启了之后,发现docker 命令就一直报 Cannot的错误。

    这可能有两个原因:
    1.docker服务没有启动;
    2.docker没有相关的权限;
    原因2呢,用sudo取得权限就行。
    但是这次的问题是原因1,那么就启动呗

    start docker service
    

    但是就得到了下列这样的问题

    那怎么解决呢,首先看一下/etc/docker/daemon.json这个文件存不存在,如果存在那就看看里面的内容出了什么问题。

    cd /etc/docker
    vim daemon.json
    

    然后你把下面的代码放进去,就可以啦

    { "storage-driver": "devicemapper" }
    

    如果daemon.json文件包含格式不正确的JSON,Docker将无法启动。

    然后重启一下docker

    service docker start
    

    ok!运行没得问题咯。

    实例1:wordpress+mysql

    安装相关镜像

    从镜像库(默认是Docker hub )中查询是否有镜像文件

    docker search mysql
    

    将所需镜像文件下载到本地

    docker pull mysql
    

    查询是否成功

    docker images
    

    好的本地库中有了mysql镜像,再下载一个wordpress镜像

    先启动mysql

    docker run --name lir_mysql -e MYSQL_ROOT_PASSWORD=lir123 -d mysql
    

    --name lir_mysql 给容器命名为lir_mysql
    -e 设置环境变量
    -d 后台运行容器,并返回容器ID

    先检查一下有没有运行成功

    docker ps
    

    好的,运行成功了!再启动wordpress和mysql链接一下

    docker run --name lir_wordpress --link lir_mysql:mysql -p 8080:80 -d wordpress
    

    --link添加链接到另一个容器
    -p默认将容器的80端口映射到主机的随机端口
    -p 8080:80将容器的80端口映射到主机的8080端口

    好的,检查一下

    docker ps
    

    容器没问题!

    打开网站看一下

    配置一下wordpress信息,ok!8080端口

    当然我们还可以使用fig来对wordpress配置。但是在这里不作演示说明

    安装 aspnet和iis

    在docker hub 官方镜像库中,微软有自己的官方发布的iis和asp.net,以及asp.net core镜像。
    在腾讯云的镜像加速下,centos 服务器进行pull这些镜像。

    无法成功!可能是国内的镜像库并没有这些镜像,所以拉取docker hub,但是docker hub在国内没有镜像服务,加之国情如此。。。

    换Ubuntu系统,使用docker hub mirror 进行加速服务,首先要先注册账号,然后使用命令,将自有的主机注册到docker hub mirror中

    curl -sSL https://get.daocloud.io/daomonit/install.sh | sh -s xxx
    

    xxx为注册账号的id

    配置成功后的信息

    相关的docker容器可视化服务有很多,但是大部分都是收费的。企业用必须自己搭建自己的镜像服务器和相关管理系统

    在Ubuntu服务器中pull iis和aspnet的官方镜像。发现如下问题

    没错,linux系统中的docker无法跑起官方的aspnet和iis镜像,错误信息提示,windows镜像无法跑起来。

    安装vm虚拟机,准备在win7中跑一个win10 64和一个windows server 2016,然而出现了下面的情况

    这个问题解决需要在本机BIOS中进行相关设置。


    ps:2017年9月18日将会持续更新,等我的固态到了之后,我将在windows10中来继续研究docker,并且探寻docker 在实战中的运行。如果你有关于docker 运行asp.net程序的经验,请留下您的联系方式,我迫切需要和您请教一下这个问题。

    相关文章

      网友评论

        本文标题:Docker 实战笔记(有图有代码哟!)

        本文链接:https://www.haomeiwen.com/subject/xfrvsxtx.html