docker的安装和使用

  1. 云栖社区>
  2. 博客>
  3. 正文

docker的安装和使用

小不点丶 2017-11-27 17:17:00 浏览517
展开阅读全文

  1、简介:Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

  2、Docker的应用场景

  • Web 应用的自动化打包和发布。

  • 自动化测试和持续集成、发布。

  • 在服务型环境中部署和调整数据库或其他的后台应用。

  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

  3、Docker 的优点

    • 1、简化程序:
      Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。

    • 2、避免选择恐惧症:
      如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

    • 3、节省开支:
      一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

  4、Docker 架构

  Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。


  

  5、docker的安装,因为docker是需要Linux/unix的支持,所以这里所有的操作我是在Linux上面操作的(我的是centos7),Ubuntu的使用apt-get安装

# yum install docker
# systemctl enable docker

  6、docker的版本和运行测试

# docker -v
Docker version 1.12.6, build 85d7426/1.12.6
# docker run docker.io/hello-world

  备注:因为这里没有hello-world镜像包,所以会从官网上面下载相关的镜像

  结果:

# docker run docker.io/hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://cloud.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

  7、这里注意一下,因为官方hub的下载特别慢,不采用使用官网的下载,可以自己使用镜像加速。我这里用的是阿里云的镜像加速,所以只介绍阿里云的镜像加速配置。

  1)地址需要注册,注册不详细介绍。注册地址:https://dev.aliyun.com/search.html

  2)登录点击进入管理中心

  

  3)点击镜像加速器,复制代码

  4)在Linux系统上面运行即可

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://zo5eqsmr.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

  5)运行完成后,使用docker登录。这样就可以了。(在后面下载相关镜像的时候就很快了)

# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: #你的阿里云登录账号
Password: #你的阿里云登录密码

  8、介绍一些常用的命令

  查看镜像

# docker images

  

  删除镜像 dd00d2908e34是镜像的IMAGE ID (-f 是删除同ID的相关镜像)

# docker rmi dd00d2908e34

# docker rmi -f dd00d2908e34

   

  镜像的搜索,下载 (:7是版本号)

# docker search centos
# docker pull centos:7

  镜像的查看,以及运行过的镜像删除。(在删除镜像的时候,需要清除运行过的镜像)

# docker ps
# docker ps -a
# docker ps -aq
# docker rm $(docker ps -aq)

  镜像的运行(-i:允许你对容器内的标准输入 (STDIN) 进行交互,-t:在新容器内指定一个伪终端或终端。)

# docker run docker.io/hello-world
# docker run -it docker.io/hello-world

  镜像的退出(第二种属于,保持后台运行,不退出)

#exit 或者 ctrl + D
#Ctrl + P + Q

  镜像的后台运行,端口代理(-d:让容器在后台运行,-P:将容器内部使用的网络端口映射到我们使用的主机上,-p:手动映射端口

  理解:介绍8000:8001这种方式,这种方式就是用本地的8000端口映射docker的8001端口

# docker run -d -P docker.io/hello-world
# docker run -d -p 80 docker.io/hello-world
# docker run -d -p 8000:8001 docker.io/hello-world
# docker run -d -p 0.0.0.0:8000:8001 docker.io/hello-world

  镜像的提交(这种方式可以在原来的基础镜像上面保存自己修改的东西,一般来说原本的镜像,是没有太多配置的。这种提供了自己保存的方式)

# docker ps -a
# docker commit #具体的执行过的ID

 9、重点介绍一下,利用Dockerfile,来实现镜像的搭建(这种方式比较重要,也是项目建立的必会点)

  1)新建一个文件夹

# mkdir docker

  2)将需要拷贝的文件,放在此目录下

  3)新建文件Dockerfile,添加如下内容(RUN 运行的东西不会在保存后,第二次自动启动。可以使用CMD相关的初始运行)

  FROM centos:6
  MAINTAINER TEST
  ADD t.jar /root/t.jar
  RUN yum -y install java
  RUN nohup java -jar /root/t.jar > t.out 2>&1 &
  EXPOSE 80

  具体的意义可以参考:http://www.jianshu.com/p/690844302df5

  4)镜像的建立

#docker build -t="test" .

   10、介绍Dockerfile的相关用法

  1)CMD和ENTRYPOINT(使用差不多,都是写在最后,只是ENTRYPOINT,不可替代)

  写法:CMD java -jar t.jar or CMD ["java","-jar","t.jar"]

  2)ADD和COY,这个很大层度上面是一样的用法

  ADD t.jar /root/t.jar or  COPY t.jar /root/t.jar 

  11、虚拟网桥的修改和搭建

  1)安装docker后会自动搭建一个虚拟网桥,但是我们一般访问不到

  

  2)修改docker0的ip地址

# sudo ifconfig docker0 192.168.5.200 netmask 255.255.255.0

  3)重启docker,然后运行镜像就可以了

   12、目录共享

  1)在运行镜像的时候加入 -v命令

# docker run -it -v /root/test:/root/test docker.io/centos:6 /bin/bash

  2)不管是在本地还是docker上面,修改,这个目录下面都会同步进行。

  13、使用weave实现不同主机之间docker的访问

  1)安装weave 

# sudo wget -O /usr/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave 
# chmod +x /usr/bin/weave
# weave launch

  2)指定ip运行

# weave run 192.168.1.10 -it centos:6 /bin/bash

  3)在另外一个docker中就可以访问192.168.1.10了

  

网友评论

登录后评论
0/500
评论
小不点丶
+ 关注