Docker使用教程

Docker使用教程

Scroll Down

一、Docker简述

ocker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

二、Linux下安装Docker

更新yum

$ yum -y update
安装Docker

$ yum install docker -y
Docker生命周期常用命令

$ systemctl start docker.service 
$ systemctl stop docker.service
$ systemctl restart docker.service
$ systemctl status docker.service

运行hello-world镜像验证是否正确安装Docker

docker run hello-world

三、Docker容器的使用

我们可以使用docker命令来查看Docker客户端的所有命令选项。

$ docker

image.png

我们可以使用docker command --help更深入的了解指定的Docker命令使用方法

$ docker stats --help

image.png

获取镜像

$ docker search tomcat

image.png

starts最多的一般就是官方所提供的镜像了。

启动容器

image.png

镜像一般有很多版本,我们可以打开 hub.docker.com,然后搜索tomcat,然后点击tag。

如果需要使用某个版本则可以使用

docker run -it --rm -p 8888:8080 tomcat:8.0

参数说明:

-i: 交互式操作。
-t: 终端。
rm:表示如果容器已经存在,自动删除容器
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
8888:8080:服务器的8888端口映射到docker内的8080端口

要退出终端直接输入:exit

查看容器

$ docker ps -a  //docker内所有的镜像
$ docker ps     //docker内正在运行的镜像

image.png

$ docker start   //启动一个停止的容器

image.png

后台运行

在大部分情况下,docker服务会是在后台运行的,我们可以用**-d**指定容器的运行模式

$ docker run -itd --name tomcat -test ubuntu /bin/bash

查看本地镜像

$ docker images

image.png

删除镜像

$ docker rmi docker.io/hello-world

image.png

因为有对应容器的存在,所以会发现删不掉该镜像。

tag标识

$ docker tag docker.io/tomcat:latest docker.io/mytomcat:latest

image.png

这样 image_id= "1b6b1fe7261e" 的镜像,就有两个标记了,分别是
docker.io/tomcat:latest
docker.io/mytomcat:latest

删除全部镜像

$ docker rmi $(docker images -q)

四、容器管理

指令流程

  1. 运行 run
  2. 进入 exec attach
  3. 生命周期管理, 暂停,恢复,停止,启动 pause, unpause, stop, start
  4. ps 查看所有的容器
  5. 检查某个具体的容器
  6. rm 删除容器
  7. commit,对容器做了修改后,把改动后的容器,再次转换为镜像

image.png

run

$ docker run -dit --privileged -p9200:9200 -p9300:9300 -p30000-30010:30000-30010 --name es elasticsearch:latest /usr/sbin/init

docker run 表示运行一个镜像

-dit 是 -d -i -t 的缩写。 -d ,表示 detach,即在后台运行。 -i 表示提供交互接口,这样才可以通过 docker 和 跑起来的操作系统交互。 -t 表示提供一个 tty (伪终端),与 -i 配合就可以通过 ssh 工具连接到 这个容器里面去了

--privileged 启动容器的时候,把权限带进去。 这样才可以在容器里进行完整的操作

-p9200:9200 第一个9200 ,表示在CentOS 上开放9200 端口。 第二个9200
表示在容器里开放9200 端口。 这样当访问CentOS 的9200 端口的时候,就会间接地访问到容器里了

http://ajar96.cn:9200, 这个 ajar96.cn 是CentOS 的ip地址,9200是 CentOS 的端口,但是通过-p9200:9200 这么一映射,就访问到容器里的9200端口上的 tomcat了

--name es 给容器取了个名字,叫做 es,方便后续管理

elasticsearch:latest elasticsearch就是镜像的名称, latest是版本号,即最新版本

/usr/sbin/init: 表示启动后运行的程序,即通过这个命令做初始化

exec

$ docker -it exec  container_Name /bin/bash    //进入该容器

commit

该命令就是把一个活生生的容器,再转换为镜像

$ docker commit es es:now

image.png

生命周期管理

$ docker pause es      //暂停
$ docker unpause es    //恢复
$ docker start es      //启动
$ docker stop es       //停止

inspect

用于检查容器内的各项信息

$ docker inspect es

image.png

rm

删除容器

$ docker rm es

image.png

正在运行的容器是不能被删除的,需要先stop掉。
当删除了容器以后,就可以使用rmi来删除对应镜像了。

image.png

删除所有容器

$ docker rm `docker ps -a -q` -f

Docker常见问题

重启服务器后,控制台显示
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

$ service docker restart

image