先我们要弄明白Docker是什么?Docker与虚拟机有什么区别?Docker的安装方法?Docker中image和Container的区别?Docker的常用命令是什么?Docker hub?等内容
答案:Docker的官网,看官方文档 https://docs.docker.com/,有些部分被墙了,这里有人提供了一种方法
docker run -d -p 80:4000 docs/docker.github.io
运行后就可以直接在浏览器中在localhost访问了
Docker是一个开源平台,包含容器引擎和Docker Hub注册服务器
Docker相较于虚拟机更为轻量,虚拟机相当与在原来的操作系统上运行了一个新的操作系统,包括新的kernel和userland,而Docker则是和原来的操作系统共用kernel,在linux中Docker运行就是用syscall来调用kernel。这里建议各位在liunx下玩,windows还是。。。
Docker安装方法见官网,这里提一下,不要直接用apt/yum去安装docker,版本太低了,我在ubuntu下直接安装Docker,version为1.13(命令docker --version
),按官网的安装方法version为18.03.1-ce。ce是Community Edition 社区版的意思,对于普通用户来说够用了
在Docker中镜像是包含程序运行必要依赖环境和代码的只读文件,是一个静态的模板,它采用分层的文件系统(这里不展开),容器是一个运行image,它是一个进程,有几种状态,下面通过Docker的相关命令来说明
1、images
1.1 docker images
查看image的种类
1.2 docker pull 镜像
从docker Hub拖取image
1.3 docker search 镜像
从Docker Hub搜索image
2、 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
2.1 docker run ubuntu
直接运行镜像命令,执行该命令后首先会检查本地是否存在该镜像,若存在则直接运行,不存在则pull 。运行成功后。
这里docker ps -a 是显示所有容器的信息,包括CONTAINER ID,IMAGE,COMMAND,CREATED ,STATUS,PORTS ,NAMES的信息
CONTAINER ID:容器的id,就是标识用的,使用前三个字母就可以表示该容器了
IMAGE:镜像,表示该容器是由那个image运行起来的,一个镜像可以有多个container
COMMAND:容器最后运行的命令
CREATED:创建容器的时间
STATUS:容器的状态。如果是Up表示容器为运行状态,如果是Exited(0)表示为停止状态,0表示是正常退出(这里有点类似与虚拟机中的暂停)
PORTS :容器的端口信息,可以在run命令下用-p/P参数来指定
NAMES:容器名,可以使用--name=名称参数在run命令下指定名称,如:
sudo docker run --name=h1 ubuntu
通过图示,我们可以发现,docke run ubuntu 后,container的状态为停止
2.2 docker run -i -t ubuntu
-i:打开容器的标准输入
-t:为容器建立一个命令行终端 /bin/bash
-it:为我们和容器提供了一个交互shell,这是的container的状态的运行的,当exit退出这个shell后,就停止了
2.3 docker run -d -t ubuntu
-d: 在后台运行
只返回了container ID,没有交互式的shell
3、 docker rm [OPTIONS] CONTAINER [CONTAINER...] [flags]
docker rm -f 强制执行删除,其后可以是container/images的ID 名称(id标识container/image只需要三位),若想删除多个,以空格分开
若想一次将所有容器都清除,执行以下命令
docker rm -f $(sudo docker ps -a -q) docker ps -a -q 命令列出所有container的ID
4、docker exec / docker attach
exec和attach不同在于exec命令是让container运行command而不进入container,attach是直接进入container
具体的用法如下:
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
docker attach [OPTIONS] CONTAINER
5、docker cp
docker容器与本地之间进行文件的交互命令
具体的用法如下:
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- //复制container中文件到本地
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH //复制本地文件到container
参考链接:https://blog.lab99.org/post/docker-2016-07-14-faq.html