DevOps之旅-Docker第1天:认识及安装、初步使用Docker

最近几天在看Devops以及进行开源工具的使用,如:puppet和ansible之类的。东西入门比较容易,基本一天一门知识,但是深入就不太容易了。毕竟我只是知识的搬运工_!!

在实验过程中,无意中想起了Docker。以前只是知道这个东西,然后就尝试试验下。结果感觉很爽!下面准备把我对docker的实验和心得分享下。

Docker的好处

Docker可以看做是非常轻量级的虚拟化工具。Vmware大家都不陌生,也安装了不少,但是在启动和安装的时候,毕竟还是相对比较消耗资源的。比如我自己的机器,16G内存,2g+256ssd,i7,也只能一次开3个虚机(vmware),资源已经耗费的很厉害了。但是有了这个docker,很是爽啊!!可以开好几个。下面把我理解的docker优点说下,至于缺点,后面我用的时候再说吧。
优点:

  • 可以统一整个开发、测试和部署的环境和流程,极大地减少运维成本。
  • Docker在磁盘占用、性能和效率方面相较于传统的虚拟化都有非常明显的提高。
  • 镜像的使用中,新增的镜像层和下层的镜像一起又可以作为基础镜像被更上层的镜像使用。这种特性可以极大地提高磁盘利用率,所以当你的系统上有10个大小为1GB的镜像时,它们总共占用的空间大小可能只有5GB,并可极大地减少内存占用等方面。
  • 作为容器概念:开发及运维人员在转移和部署应用的时候,不用关心容器里装了什么软件,也不用了解它们是如何配置的。Docker引擎同样不关心容器里的内容,它只要像码头工人一样这个容器运行起来就可以了,就像所有其他容器那样。

Docker常用命令及安装

  • 环境:vmware 10;
  • 系统:CentOS Linux release 7.6.1810 (Core) ,分配了3G内存,硬盘40G

Docker安装

  1. 安装很简单,就一条yum安装即可:yum install docker-io -y
  2. 安装完成后,启用docker服务:/bin/systemctl start docker.service
  3. 然后就是查询相关的镜像:docker search centos
[root@bogon nginx]# docker search centos  
INDEX       NAME                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED  
docker.io   docker.io/centos                             The official build of CentOS.                   5500      [OK]         
docker.io   docker.io/ansible/centos7-ansible            Ansible on Centos7                              122                  [OK]  
docker.io   docker.io/jdeathe/centos-ssh                 CentOS-6 6.10 x86_64 / CentOS-7 7.6.1810 x...   111                  [OK]  
docker.io   docker.io/consol/centos-xfce-vnc             Centos container with "headless" VNC sessi...   97                   [OK]  
...... 较多不列出了。
[OK]  
  1. 下载镜像:docker pull centos;下载后可以用命令查询镜像;
  2. 查询镜像:docker images
[root@bogon ~]# docker images  
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE  
docker.io/nginx                     latest              e445ab08b2be        3 weeks ago         126 MB  
docker.io/centos                    latest              9f38484d220f        5 months ago        202 MB  
docker.io/ansible/centos7-ansible   latest              688353a31fde        2 years ago         447 MB  
docker.io/jaspeen/oracle-11g        latest              0c8711fe4f0f        3 years ago         281 MB  
  1. 之后,docker启动容器:docker run --name mycentos -it centos /bin/bash;这个地方可以直接启动,也可以加name启动(name前面是2个"-");启动后可以查看已经启动的容器;
    注意:此处已经有个概念叫“容器”了,查询的时候,也能从表头看出是:“CONTAINER ID”,而不是“CONTAINER ID”。
  2. 查看已启动的容器:docker ps 或者 docker ps -a 查看所有启动的容器;
[root@bogon ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                        NAMES
ab5893aa2ebc        e445ab08b2be        "/bin/bash"         About an hour ago   Up About an hour    192.168.137.130:81->80/tcp   nginx_03
c055e249d09d        centos              "/bin/bash"         23 hours ago        Up 3 hours                                       mycentos
  1. 进入容器:docker exec -it docker-id /bin/bash
  2. 启动已停止容器: docker start docker-id
  3. 关闭容器: docker stop docker-id
  4. 删除容器:docker rm docker-id

Docker第1个镜像Centos

上面列出我的第一个Centos镜像以及容器,但是找不到ip,可以进入容器之后,yum安装net-tools:yum -y install initscripts net-tools;之后就可以在容器中用ifconfig查询容器的IP了。当然也可以在外层宿主机用ifconfig查询容器的ip;

Docker第2个Nginx实验

之后,又下载了个nginx镜像,该镜像的启动如下:
docker run --name nginx_03 -it -d -p 192.168.137.130:81:80 e445ab08b2be /bin/bash
上面是

  • nginx_03是docker容器的自定义名称;
  • 192.168.137.130是我的虚机ip,后面的81:80是虚机端口映射docker容器的80端口
  • e445ab08b2be是docker的nginx镜像id
    执行命令后,查询如下:
[root@bogon ~]# docker ps  
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                        NAMES  
ab5893aa2ebc        e445ab08b2be        "/bin/bash"         About an hour ago   Up About an hour    192.168.137.130:81->80/tcp   nginx_03  
c055e249d09d        centos              "/bin/bash"         23 hours ago        Up 3 hours                                       mycentos  

从自己机器上和vmware的centos虚机上并不能访问nginx,被拒绝

[root@bogon nginx]# curl http://192.168.137.130:81
curl: (7) Failed connect to 192.168.137.130:81; 拒绝连接

然后需要进入nginx容器启动nginx即可。

[root@bogon ~]# docker exec -it nginx_03 /bin/bash
root@ab5893aa2ebc:/# 
root@ab5893aa2ebc:/# 
root@ab5893aa2ebc:/# nginx

再次尝试浏览器访问nginx,虚机访问成功,虚机外的浏览器主机访问也成功!

[root@bogon nginx]# curl http://192.168.137.130:81
<!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>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/coolhe21cn/article/details/99564215