1.配置要求
centos7或者更高版本
2.基本命令:
docker pull 镜像:tag ##拉去默认仓库tag版本号的镜像
docker images ##查询本地仓库的所有镜像
docker rmi 镜像id ##删除镜像
docker tag 镜像id 镜像:TAG ##重命名镜像
docker ps ##查询本地容器
docker ps -a ##查询本地所有运行的容器
docker export 容器id > x:/xx/xx.tar ##导出容器快照
docker import 镜像路径 镜像自定义名称 ##导入容器快照
docker save 镜像id > x:/xx/xx.tar ##导出镜像
docker load < x:/xx/xx.tar ##导入镜像
3.docker 运行:
docker run -it 镜像id/name /bin/bash
4.挂载目录:
A. docker run -it -v 宿主机目录:容器目录 镜像id/name /bin/bash
B. 原理:创建一个专门用来挂载目录的容器然后提供给其他容器使用
docker还提供了一种高级的用法。叫数据卷。
数据卷:“其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的”。感觉像是由一个容器定义的一个数据挂载信息。其他的容器启动可以直接挂载数据卷容器中定义的挂载信息。
示例:
docker run -v /home/dock/Downloads:/usr/Downloads --name dataVol ubuntu64 /bin/bash
创建一个普通的容器。用--name给他指定了一个名(不指定的话会生成一个随机的名子)。
再创建一个新的容器,来使用这个数据卷。
docker run -it --volumes-from dataVol ubuntu64 /bin/bash
--volumes-from用来指定要从哪个数据卷来挂载数据。
5.容器的停止和启动
docker stop id
docker start id
6.镜像服务的启动
启动 systemctl start docker
守护进程重启 sudo systemctl daemon-reload
重启docker服务 systemctl restart docker
重启docker服务 sudo service docker restart
关闭docker service docker stop
关闭docker systemctl stop docker
7.docker 环境变量不生效问题
A./etc/profile
用来设置系统环境参数,比如$PATH. 这里面的环境变量是对系统内所有用户生效的。
B./etc/bashrc
这个文件设置系统bash shell相关的东西,对系统内所有用户生效。只要用户运行bash命令,那么这里面的东西就在起作用。
C.~/.bash_profile
用来设置一些环境变量,功能和/etc/profile 类似,但是这个是针对用户来设定的,也就是说,你在/home/user1/.bash_profile 中设定了环境变量,那么这个环境变量只针对 user1 这个用户生效.
D.~/.bashrc
作用类似于/etc/bashrc, 只是针对用户自己而言,不对其他用户生效。
另外/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是”父子”关系。
最终要的是下面这一句:
~/.bash_profile 是交互式、login 方式进入 bash 运行的,意思是只有用户登录时才会生效。
~/.bashrc 是交互式 non-login 方式进入 bash 运行的,用户不一定登录,只要以该用户身份运行命令行就会读取该文件。
按照上面的观点,启动docker时后应该是非交互方式进入bash,因此就不会读取profile文件,要从~/.bashrc文件下才能加载。
E.关于这个问题的其他解决方法
正对docker的环境变量问题还可以通过,docker run 的-e参数,还有在dockerfile中这设置环境变量来解决
8.docker镜像中执行exit再进入问题:
docker ps -al 列出所有的镜像
docker start -ia 镜像id 再次启动并进入镜像
方式 结果 再次启动
exit(命令) 退出后,这个容器也就消失了,容器销毁ps查不到 docker start 容器名/容器id
Ctrl+D(快捷方式) 退出后,这个容器也就消失了,容器销毁ps查不到 docker start 容器名/容器id
先按,Ctrl+P;再按,Ctrl+Q(快捷方式) 退出容器,ps能查到,还在后台运行 docker attach 容器名/容器id