1.在centos7上安装docker
1.1安装gcc环境
yum -y install gcc
yum -y install gcc-c++
1.2.安装需要的软件包
yum intall -y yum-utils
1.3.设置镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.4.更新yum软件包索引
yum makecache fast
1.5安装Docker
yum -y install docker-ce docker-ce-cli containerd.io
1.6启动docker
systemctl start docker
1.6.1查看Docker安装的版本信息
docker version
1.6.2测试是否安装成功
docker run hello-world
1.6.3卸载Docker
//停止运行docker
systemctl stop docker
//删除软件包
yum remove docker-ce docker-ce-cli containerd.io
//删除docker
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
最好使用镜像加速器,不然会非常卡
2.Docker常用命令
2.1帮助启动类命令
systemctl start docker #启动docker
systemctl status docker #查看docker运行状态
systemctl restart docker #重启docker服务
systemctl stop docker #停止docker服务
docker --help #查看docker帮助文档
2.2docker镜像命令
2.2.1本地镜像管理
- docker images 列出本地主机上的镜像(语法:docker images [OPTIONS][REPOSITORY[:TAG]])
- OPTIONS说明:
-
-a :列出本地所有的镜像(含历史映像层);
-
-q :只显示镜像ID;
-
-f :显示满足条件的镜像;
-
--no-trunc :显示完整的镜像信息
-
- OPTIONS说明:
-
docker rmi 某个XXX镜像名字ID 删除某个镜像,注意:不能删除正在运行容器的镜像!
-
OPTIONS说明:
-
-f :强制删除;
-
--no-prune :不移除该镜像的过程镜像,默认移除;
-
-
-
docker tag : 标记本地镜像,将其归入某一仓库。
-
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
-
-
docker build 命令用于使用 Dockerfile 创建镜像。
-
docker build [OPTIONS] PATH | URL |
-
-f :指定要使用的Dockerfile路径;
-
-m :设置内存最大值;
-
--quiet, -q :安静模式,成功后只输出镜像 ID;
-
--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
-
-
-
docker history : 查看指定镜像的创建历史。
-
docker history [OPTIONS] IMAGE
-
-H :以可读的格式打印镜像大小和日期,默认为true;
-
-q :仅列出提交记录ID。
-
--no-trunc :显示完整的提交记录;
-
-
-
docker save : 将指定镜像保存成 tar 归档文件。
-
docker save [OPTIONS] IMAGE [IMAGE...]
-
-o :输出到的文件。
-
-
-
docker load : 导入使用 docker save 命令导出的镜像。
-
docker load [OPTIONS]
-
--input , -i : 指定导入的文件,代替 STDIN。
-
--quiet , -q : 精简输出信息。
-
-
-
docker import : 从归档文件中创建镜像。
-
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
-
-c :应用docker 指令创建镜像;
-
-m :提交时的说明文字;
-
-
2.2.2镜像仓库
-
Docker login/logout 命令
-
docker login : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
-
docker logout : 登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
-
-u :登陆的用户名
-
-p :登陆的密码
-
-
- docker search 某个XXX镜像名字 指定搜索某个镜像的名称。(语法:docker search[OPTIONS]TERM)
- OPTIONS说明
- --limit : 只列出N个镜像,默认25个
-
--no-trunc:显示完整的镜像描述
- OPTIONS说明
-
docker pull 某个XXX镜像名字 拉取指定的镜像到本地(下载镜像)。(语法:docker pull 镜像名字[:TAG])
-
-a :拉取所有 TAG 镜像
-
--disable-content-trust :忽略镜像的校验,默认开启。
-
-
docker push : 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
-
docker push [OPTIONS] NAME[:TAG]
-
-a:将镜像的所有标签推送到存储库
-
--disable-content-trust :忽略镜像的校验,默认开启
-
-q:抑制详细输出(我是不太明白这个的意思了)
-
-
2.3docker容器命令
2.3.1容器生命周期管理
- docker run :启动容器
- docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
- --name="容器新名字" 为容器指定一个名称;
- -d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
- -i:以交互模式运行容器,通常与 -t 同时使用;
- -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- -P: 随机端口映射,大写P
- -p: 指定端口映射,小写p
-
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项
-
-m :设置容器使用内存最大值;
- docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-
Docker start/stop/restart 命令
-
docker start :启动一个或多个已经被停止的容器
-
docker stop :停止一个运行中的容器
-
docker restart :重启容器
-
-
docker kill :强制停止容器
-
-s :向容器发送一个信号
-
-
docker rm :删除已停止的容器
-
-f :强制删除一个运行中的容器。
-
-v :删除与容器关联的卷。
-
-
Docker pause/unpause 命令
-
docker pause :暂停容器中所有的进程。
-
docker unpause :恢复容器中所有的进程。
-
-
docker create :创建一个新的容器但不启动它(用法同docker run)
2.3.2容器操作
- docker ps : 列出正在运行的容器
- docker ps [OPTIONS]
- -a :列出当前所有正在运行的容器+历史上运行过的
- -l :显示最近创建的容器。
- -n:显示最近n个创建的容器。
- -q :只显示正在运行的容器编号。
-
-s :显示总的文件大小。
- docker ps [OPTIONS]
-
退出容器的命令
-
exit run进去容器,exit退出,容器停止
-
ctrl+p+q run进去容器,ctrl+p+q退出,容器不停止
-
-
docker logs : 查看容器日志的命令
-
-f : 跟踪日志输出
-
--since :显示某个开始时间的所有日志
-
--tail :仅列出最新N条容器日志
-
-t : 显示时间戳
-
-
docker top :查看容器中运行的进程信息,支持 ps 命令参数。
-
docker inspect:查看容器内部具体细节命令
-
docker exec :进入运行容器,进去后用exit命令退出不会导致容器停止运行
-
-d :分离模式: 在后台运行
-
-i :即使没有附加也保持STDIN 打开
-
-t :分配一个伪终端
-
-
docker attach :连接到正在运行中的容器。进去后用exit命令退出会导致容器停止运行
-
docker wait : 阻塞运行直到容器停止,然后打印出它的退出代码。
-
docker export :将文件系统作为一个tar归档文件导出到STDOUT。
-
docker port :列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口。
-
docker events : 从服务器获取实时事件
3.其他命令
- docker info : 显示 Docker 系统信息,包括镜像和容器数。
- docker version :显示 Docker 版本信息。
- docker cp :用于容器与主机之间的数据拷贝。
-
-L :保持源目标中的链接
-
-
docker diff : 检查容器里文件结构的更改。
-
docker commit :从容器创建一个新的镜像。
-
a :提交的镜像作者;
-
-c :使用Dockerfile指令来创建镜像;
-
-m :提交时的说明文字;
-
-p :在commit时,将容器暂停。
-
4.创建新镜像
4.1使用commit
举例,给基本ubuntu镜像添加vim命令
- docker run untu /bin/bash //先运行容器
- apt-get -y install vim //安装vim指令
- docker commit -m="新镜像名" -a="作者名" 要创建的目标镜像名:[标签名]
5.Docker容器数据卷
5.1容器卷基本概念
先来看一条指令
docker run -d -p 5000:5000 -v /krisswen/myregistry/:/tmp/registry --privileged=true registry
- /krisswen/myregistry/: 定义的是宿主机的目录,该目录如果不存在,会被自动创建。
- /tmp/registry: 容器内部的数据目录。
- --privileged=true :必须要加上,否则数据卷挂载失败。
什么是数据卷?
数据卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统。
数据卷功能?
为了在docker中保存数据。
数据卷的特点:
- 数据卷可在容器之间共享或重用数据
- 卷中的更改可以直接实时生效
- 数据卷中的更改不会包含在镜像的更新中
- 数据卷的生命周期一直持续到没有容器使用它为止
5.2容器卷案例
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
以ubtntu为例子,在宿主机和容器之间添加数据卷。
docker run -it --privileged=true -v /tmp/hostData:/tmp/dockerData1 ubuntu /bin/bash
这就好了,很轻松吧。下面是查看数据卷是否挂载成功,这个时候就要用到inspect命令(之前还以为这个命令完全用不到来着)
docker inspect 容器id
上面的挂载,默认在容器内部的目录都可以进行读写操作。如果我们只想在容 器内部进行读操作呢? 我们需要加上:ro标识
docker run -it --privileged=true -v /tmp/hostData:/tmp/dockerData1:ro ubuntu /bin/bash
容器的数据卷还可以被继承和共享。
语法格式:docker run -it --privileged=true --volumes-from 父类 --name u2 ubuntu
这样我们就实现了不同容器之间的数据共享了。