Docker安装及基本命令

###安装/启动Docker

####在CentOS 7上安装

Docker默认已经包含在CentOS-Extra仓库中,使用以下命令安装

sudo yum install docker

####在CentOS 6.5上安装

对于CentOS 6.5,Docker是 EPEL 仓库的一部分,因此需要确保已经加入EPEL的YUM源。在CentOS 6上,Docker的包名可能与桌面的docker应用冲突,因此,它的包名改为了docker-io

1sudo yum -y remove docker 2sudo yum install docker-io

####启动Docker

安装Docker之后,需要启动Docker守护进程

sudo service docker start

为了让docker能够开机运行,需要使用chkconfig: sudo chkconfig docker on

获取Docker镜像,启动Docker容器

1sudo docker pull centos 2sudo docker images centos 3sudo docker run -i -t centos /bin/bash

###基本命令

下列命令创建一个容器简单的输出Hello world:

1$ docker run ubuntu:14.04 /bin/echo 'Hello, world' 2Hello, world

这里docker run命令指定了使用的镜像为ubuntu:14.04,我们的容器就是从该镜像运行。当指定一个镜像的时候,Docker首先会在你的宿主机上查找是否存在该镜像,如果不存在的话会从Docker Hub下载。

接下来指定了要在容器中运行的命令是/bin/echo 'Hello, world',当容器启动之后,Docker会创建一个新的ubuntu 14.04的环境,然后在里面执行这个命令。当命令执行完毕之后,Docker创建的这个容器的生命周期就结束了。

下面我们创建一个交互式的容器:

1$ docker run -t -i ubuntu:14.04 /bin/bash 2root@af8bae53bdd3:/#

这次同样启动了ubuntu 14.04的镜像,但是这里指定了两个额外的参数-t-i。参数-t为刚才创建的容器分配一个伪终端(pseudo-tty),-i则允许我们通过获取容器的标准输入创建一个交互式的连接。

要退出该容器,在终端输入exit或者ctrl+D即可,这样该容器就可以停止了

1root@2e3e7e77adbd:/# exit 2exit

几个常用的docker命令:

  • docker ps 列出Container
  • docker logs 显示容器的标准输出
  • docker stop 停止运行中的容器
  • docker version 显示当前docker客户端和守护进程的版本信息

docker命令的子命令很多,

1attach 附加到一个运行中的容器上去 2build 从Dockerfile构建镜像 3commit 从容器当前的修改创建一个新的镜像 4cp 从容器的文件系统复制文件/文件夹到主机路径 5create 创建一个新的容器 6diff 检查容器文件系统发生的修改 7events 从服务器获取实时的事件 8exec 在已存在的容器中运行命令 9export 将容器中的内容以流的方式导出为tar归档 10history 显示镜像的历史 11images 列出所有镜像 12import 从tar包中的内容创建一个新的文件系统镜像 13info 显示系统的信息 14inspect 返回容器低级的信息 15kill 杀掉一个运行中的容器 16load 从tar归档载入镜像 17login 注册或者登录到Docker注册服务器 18logout 从Docker注册服务器登出 19logs 检索容器中的日志 20port 查询基于NATPRIVATE_PORT的公开端口 21pause 暂停容器中所有的进程 22ps 列出容器 23pull 从Docker注册服务器拉取一个镜像或者仓库 24push 推送一个镜像或者仓库到Docker注册服务器 25restart 重启一个运行中的容器 26rm 删除一个/多个容器 27rmi 删除一个/多个镜像 28run 在新的容器中运行命令 29save 保存镜像到tar归档 30search 从Docker Hub搜索一个镜像 31start 启动一个已经停止的容器 32stop 停止运行中的容器 33tag 为仓库中的镜像添加标签 34top 查询容器中运行的进程 35unpause 取消容器的暂停状态 36version 显示Docker的版本信息 37wait 堵塞住直到容器停止,然后打印它的退出码

使用Dockerfile构建镜像:

docker build -t <your username>/<image name> .

运行镜像:

1docker run -p <本地端口>:<容器端口> -d <镜像名称> 2curl -i <本地IP>:<本地端口>

查看容器的日志(类似于tail -f命令)

docker logs -f <容器名称>

####例子:使用官方Nginx Docker镜像

使用之前,需要先获取官方nginx镜像

docker pull nginx

执行命令如下

docker run --name nginx_server -d -p 8080:80 -v /Users/mylxsw/codes/php:/usr/share/nginx/html:ro nginx

下面对提供的参数进行一一解释:

  • --name指定了我们创建的容器名称为nginx_server
  • -d指定了容器在后台运行
  • -p则指定了将容器的80端口映射到宿主机的8080端口
  • -v参数指定了将本地的/Users/mylxsw/codes/php目录映射到容器的/usr/share/nginx/html目录,并且访问权限为只读

启动该容器之后,就可以通过http://localhost:8080访问了。

更复杂一点,可以通过使用-v参数指定nginx配置文件-v /some/nginx.conf:/etc/nginx/nginx.conf:ro

在指定新的nginx配置文件时,注意一定要设置nginx的daemon off;配置项,如果以后台模式运行的话,容器就没法跟踪nginx的进程,容器启动后就会立即结束。

如果仅仅是测试的话,可以使用--rm选项,这样,在容器结束运行之后就可以自动删除,当然使用--rm选项的时候不能和-d选项同时使用。

docker run --rm --name nginx_server -d -p 8080:80 -v /Users/mylxsw/codes/php:/usr/share/nginx/html:ro nginx

参考:

Dockerizing Applications: A "Hello world"

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )