欢迎光临
我们一直在努力

Docker学习基础命令 和 构建 web服务

一、前言

docker学习资料为《第一本Docker书》(修订版),

CSDN:http://download.csdn.net/download/smartdt/10031690

关于学习的内容,可以阅读下面的一些专业文章,Docker常用资源如下:

Docker官方主页(http://www.docker.com/)。

Docker Hub(http://hub.docker.com)。

Docker官方博客(http://blog.docker.com/)。

Docker官方文档(http://docs.docker.com/)。

Docker快速入门指南(http://www.docker.com/tryit/)。

Docker邮件列表(https://groups.google.com/forum/#!forum/dockeruser)。

Docker的IRC频道(irc.freenode.net)。

Docker的Twitter主页(http://twitter.com/docker)。

Docker的StackOverflow问答主页(http://stackoverflow.com/search?q=docker)。

Docker官网(http://www.docker.com/)。

Docker的GitHub源代码(https://github.com/docker/docker)。

Docker Forge(https://github.com/dockerforge):收集了各种Docker工具、组件和服务。

二、常用命令

(1) 安装 docker:

yum install -y docker

(2) 启动 docker服务:

service docker start   //启动docker service

如果想要关闭docker服务:

service docker stop

(3) 获取镜像:

sudo docker pull NAME[:TAG]
sudo docker pull centos:latest

比如获取tomcat 镜像:

docker pull tomcat   //命令格式: docker pull NAME

(4) 罗列所有镜像:

docker images

(5)、删除镜像,从本地删除一个已经下载的镜像

sudo docker rmi IMAGE [IMAGE...]
sudo docker rmi centos:latest

(5)创建docker容器 并进入 webdemo1:

docker run -it --name webdemo1 -p 81:8080 tomcat /bin/bash

docker run -i -t /bin/bash:-i:标准输入给容器 -t:分配一个虚拟终端 /bin/bash:执行bash脚本

注意:name前面是两个-, 端口前面有-p, 后面有个tomcat;

这里我们启动一个交互式的容器,名字是webdemo1,-p 81:8080表示将容器的8080端口映射到主机的81端口,这样我们只要访问主机的81端口就可以访问到容器的服务了。如果还想创建其他的容器,那么名称 要改,而且不能再挂载到主机的81上了,可以82上挂载;

(6)启动一个停止的容器:

docker start webdemo

(7) 罗列所有的docker容器:包含了启动的Docker和没有启动的容器Docker

docker ps -a;

(8) 启动容器:

docker start webdemo

可能端口会被占用,我们可以先把运行的docker实例停掉,然后再删掉,

docker kill webdemo

docker rm webdemo

(9) 进入其中一个容器:使用docker exec命令

这个命令使用exit命令后,不会退出后台,一般使用这个命令,使用方法如下

docker exec -it webdemo /bin/bash

(10)拷贝文件

从主机复制到容器 sudo docker cp host_path containerID:container_path

从容器复制到主机 sudo docker cp containerID:container_path host_path

请注意,以上这两个命令都是在主机中执行的,不能再容器中执行

docker cp /root/software/docker.war webdemo:/
docker cp demo:/abc.txt  /root/software/

(11) 在容器中启动tomcat:

cd /usr/local/tomcat/bin
./catalina.sh run

(11)记住一个服务器可以有多个容器,但是一个服务器只需要安装一个tomcat,然后每个容器可以挂载到不同的tomcat的端口上面,就是这关系。前台访问:

http://192.168.163.128:80/docker  //这是第一个容器webdemo

http://192.168.163.128:81/docker; //这是第二个容器webdemo1

(12)查看docker程序是否存在,功能是否正常
sudo docker info:

(13)sudo docker run -i -t ubuntu /bin/bash

   sudo docker create -it ubuntu /bin/bash –name testapp,create和run的性质一样。

首先,我们告诉Docker执行docker run命令,并指定了-i和-t两个命令行参数。

-i标志保证容器中STDIN是开启的,尽管我们并没有附着到容器中。持久的标准输入是交互式shell的“半边天”,

-t标志则是另外“半边天”,它告诉Docker为要创建的容器分配一个伪tty终端。

这样,新创建的容器才能提供一个交互式shell。若要在命令行下创建一个我们能与之进行交互的容器,

而不是一个运行后台服务的容器,则这两个参数已经是最基本的参数了。

(14).sudo docker run –name bob_the_container -i -t ubuntu /bin/bash

上述命令将会创建一个名为bob_the_container的容器,–name标志来实现

(15)sudo docker start【或stop】 bob_the_container【或容器ID】

重新启动或停止容器,可以是容器名也可以是容器ID。

(16)docker ps 查看正在运行的容器,docker ps -a 查看包括停止的所有容器,

docker ps -n 3查看前3条容器信息

(17)sudo docker attach bob_the_container【或容器ID】,重新附着到该容器的会话上,如图:

(18)sudo docker run –name daemon_dave -d ubuntu /bin/sh -c “while true; do echo hello world; sleep 1; done”

上面的docker run命令使用了-d参数,因此Docker会将容器放到后台运行。

我们还在容器要运行的命令里使用了一个while循环,该循环会一直打印hello world,直到容器或其进程停止运行。

(19)docker logs daemon_dave ,用docker logs命令来获取容器的日志;

sudo docker logs -f daemon_dave,方式同linux中tail -f xxx.log;

sudo docker logs –tail 10 daemon_dave ,只展示前10条

(20)sudo docker top daemon_dave【容器名】;查看容器进程

(21)sudo docker statsdeamon_dave deavmon_xxx ;它用来显示一个或多个容器的统计信息。如图:

(22)sudo docker exec -d daemon_dave touch /etc/new_config_file

在容器内部额外启动新进程,上面例子中的命令会在daemon_dave容器内创建了一个空文件,

文件名为/etc/new_config_file。通过docker exec后台命令,可以在正在运行的容器中进行维护、监控及管理任务。

**与attach的区别:

docker attach只是进入到容器中,当以attach进入到容器后,exit退出的时候,容器也随之stop了

docker exec执行容器,进入后exit退出,不会导致容器退出。

(23)sudo docker inspect daemon_dave,获得更多的容器信息。

也可以用-f或者-format标志来选定查看结果:

sudo docker inspect –format='{{ .State.Running }}’ daemon_dave

sudo docker inspect –format ‘{{ .NetworkSettings.IPAddress }}’ daemon_dave等

如图:

(24)sudo docker rm daemon_dave删除容器(容器名或者容器ID)

*****sudo docker rmi xxxxx/dave删除镜像(镜像名或者镜像ID【docker images中的】)

删除容器必须是在该容器stop的情况下。

sudo docker rm `sudo docker ps -a -q`,删除全部容器。-a代表所有,-q返回容器ID,从而达到删除所有容器

(25)sudo docker export createapp > xxxxx.tar,导出容器【容器ID或容器名】

(26)sudo cat xxxx.tar | sudo docker import – test/ubuntu:v1,导入容器,通过docker images查看

(27)docker save -o ubuntu_14.04.tar ubuntu:14.04,保存镜像文件【注意与docker export区分】

(28)docker load –input ubuntu_14.04.tar或docker load < ubuntu_14.04.tar,加载镜像文件 【注意与docker import区分】 (29)sudo docker login,登录到docker hub (30)docker search xxx ,docker pull ubuntu:12.04,docker images, docker search不叙述 (31)sudo docker commit -m"A new custom image" -a"James Turnbull" 4aab3ce3cb76  username/apache2:webserver commit到docker hub -m是备注 -a是作者信息 (32)sudo docker push,推到docker hub上。

赞(0) 打赏
未经允许不得转载:昆虫的博客之家 » Docker学习基础命令 和 构建 web服务
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏