我个人认为,docker可以看做一个轻量级的虚拟机软件,它跟虚拟机不同在于它只虚拟了程序的运行环境,不像虚拟机那样虚拟出整套系统,所以进程隔离之类的没虚拟机好。优点是小,快,使用方便。
以下是docker 的一个简单例子,运行centos的一个/bin/bash,先在本地找镜像,通过镜像实例化一个centos容器,如果本地没有就去线上docker的仓库里面找,然后下载再实例化。
docker run --name [name] --restart=always -i -t -d centos /bin/bash
--name设置容器名称
--restart启动失败自动重启
-d后台运行容器
-i设置容器中的STDIN是开启的。
-t创建的容器分配一个伪tty终端。
-w可以在运行时覆盖工作目录。
-e在运行时可以使用传递环境变量。
-u指令用于设定该镜像会以什么用户去执行。
-v参数进行卷映射,为Docker提供持久化或共享数据。
exit 退出容器
docker ps -a 查看所有容器
docker info 查看docker信息
docker start [name] 启动某个容器
docker attach [name] 进入某个容器
docker logs [name] 查看某容器日志
docker top [name] 查看某容器使用情况
docker stop [name] 停止某容器
docker rm [name] 删除某容器
docker inspect [name] 查看容器详细信息
docker rmi [name] 删除某个镜像
docker login 登录docker
docker images 查看本地镜像
docker search [images_name] 在远程仓库查找镜像
docker pull [images_name] 在远程仓库下载镜像
docker push [images_name] 上传本地镜像到远程仓库
docker port [name] [port] 查看某容器使用的端口
通过attach进入的某个容器(容器必须在运行状态)想退出并让容器在后台继续运行使用ctrl+P+Q
docker exec -it [name] /bin/bash进入的容器用exit也不会真正退出容器它还在后台继续运行
docker commit构建镜像
运行一个容器,添加需要的功能后退出,使用以下命令,其中[name]填写添加好的容器的名称
docker commit -m="[message]" --a="[author]" [name] [new_name]/[new_name]:[new_name]
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
docker build和Dockerfile文件来构建镜像
创建一个目录,在目录里面新建一个Dockerfile(固定名称),编辑Dockerfile
mkdir [dir_name]
cd [dir_name]
touch Dockerfile
# Version 0.1
# 基础镜像
FROM ubuntu:latest
# 维护者信息
MAINTAINER test@qq.com
# 镜像操作命令
RUN apt-get -yqq update && apt-get install -yqq apache2 && apt-get clean
# 容器启动命令
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
FROM:用于制定一个已经存在的镜像,后续指令都是基于该镜像来运行。这个镜像我们称之为基础镜像。
MAINTAINER:说明该作者和作者邮箱信息。
RUN:指令后的内容会通过/bin/sh -c来执行。
docker build --no-cache -t="[new_name]/[new_name]:[new_name]"` .
-t:指定了新生成镜像的镜像名称。
.表示的是在当前目录下寻找Dockerfile文件。
Dockerfile编写常用命令
USER [user_name] 后续命令执行的用户
WORKDIR [dir] 后续命令执行的目录
EXPOSE [port] 对外连接端口号
ENV HOSTNAME [host_name]设置主机名称
ADD [dir] [dir] 把一个目录复制到镜像里
-------------------------------------------------------------------------------------------------------------------------------------------------
更多详细的步骤可以看一下这位大神
https://www.missshi.cn/api/view/blog/5a6327d10a745f6335000005