Docker理论方面:Docker(理论)_sxpnp的博客-优快云博客
目录
Docker安装
安装条件
安装 / 卸载
yum update
(2).安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
yum -y install gcc #docker涉及的软件,不用管直接装 gcc -v #查看gcc 版本
官方的源(不建议使用):yum-config-manager --add-repo https://download.docker.0com/linux/centos/docker-ce.repo
阿里云的源(建议使用): yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r #查看库中版本
yum install docker-ce
命令补齐功能
yum -y install bash-completion
source /usr/share/bash-completion/bash_completion
sudo systemctl start docker
sudo systemctl status docker
sudo systemctl enable docker
sudo systemctl stop docker
docker --version #只显示安装版本
docker version #安装的详细信息
先关闭docker
yum -y remove docker-ce
yum remove -y docker-* #此处使用通配符,卸载docker为开头的所有docker软件
yum remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
rm -rf /var/lib/docker
AWS EC2 安装 docker
配置文件位置
docker配置文件: /etc/docker/daemon.json
mkdir /etc/docker
touch daemon.json
像加速器配置
阿里云
在 /etc/docker/daemon.json 此文件中添加,类似于一下字段
sudo systemctl daemon-reload sudo systemctl restart docker
使用命令
(1)帮助命令
docker version
docker info
查看docker 详细信息(比version更详细,有客户端和服务器端)
docker --help
docker帮助命令,用来查命令,或命令使用方式(类似于linux 的man)
(2)镜像命令
查询本地镜像:docker images
定义Tag 格式:repository:latest 即为 仓库源:Tag 来定义不同的镜像(一般用来定义版本标签)
-a :列出本地所有的镜像(含中间映像层)
-q :只显示镜像ID
--digests :显示镜像的摘要信息
--no-trunc :显示完整的镜像信息(会显示完整的信息包括ID号,默认只截取12位,此参数可以看所有位数的ID号)
(1)镜像就像是千层饼,是分层的,如上图,最外面那一层是hellowold(REPOSITORY)
查询仓库镜像:docker search
格式:docker search [OPTIONS] 镜像名字
从仓库docker hub(官方仓库:https://hub.docker.com)上查询镜像
-f=[选项]=值 :根据所提供的条件过滤输出
-f=stars=30 选项为STAPS时候:列出收藏数不小于指定值的镜像(即上图STAPS)
--no-trunc :显示完整的镜像描述
--automated :只列出 automated build 类型的镜像 (即为上图的AUTOMATED)
文件生成镜像:docker build
格式:docker build -t ImageName:TagName dir(只能如下格式写,才能执行)
不加 -f,需要当前dockerfile 命名必须是:Dockerfile 名字,且在当前目录下
-f :绝对路径文件 (dockerfile 已经在当前目录下就无需加-f参数)
-t :给镜像加一个TAG
. :当前目录下
下载拉取镜像:docker pull
格式:docker pull [OPTIONS] 镜像名字或ID[:TAG] (如果不填TAG,则默认是latest)
-a (--all-tags) 下载所有标签的镜像,且忽略
-q (--quiet) 不输出详细信息
删除本地镜像:docker rmi
格式:docker rmi [OPTIONS] 镜像名字或ID[:TAG] (如果不填TAG,则默认是latest)
-f (--force) 强制删除镜像(一般用来删除正在运行的镜像)
赋予镜像标签:docker tag
(3)容器命令
容器打包镜像:docker commit
原理:在容器内部进行自定义 配置搭建修改,在把当前容器打包成一个镜像
使用docker run 运行的时候,需要写全了,把标签写全,不然就是latest
新建启动容器:docker run
docker run [OPTIONS] image [command] [arg]
--name="容器新名字" :为启动容器指定一个别名
可以通过docker ps 命令name字段可以查看到
用过的别名,无法再使用,需要删除docker rm命令
-d :后台运行容器,并返回容器ID,也即 启动守护式容器
理论篇中有讲运行原理
一般使用:会一直前台有一个交互,但是不交互界面,向日志打印内容
docker run -d centos /bin/sh -c "while true;do echo in service;sleep 2;done"
查看:docker logs 容器ID
会显示出打印内容:in service
-i :以交互模式运行容器,通常与-t 同时使用
-t :为容器重新分配一个伪输入终端,通常与-i 同时使用
-it [镜像名或ID] :进入到运行的容器里面,同时进入的是此容器的输入终端界面
-dit :可以分配给伪终端,让容器不停止,同时在后台运行
-v : 容器和数据卷绑定
格式:宿主路径:容器路径
此参数命令,不能在dockerfile中实现
-P : 随机端口映射
使用docker ps 命令查询主机的映射端口
-p : 指定端口映射
格式:
ip:hostPort:containerPort (常用,可以写一致)
ip::containerPort
hostPort:containerPort
containerPort
-e (export):定义容器内部的环境变量
--link 容器名 :运行容器的时候配置hosts文件,为另一个容器写一个容器名和IP的映射
--net 网络模式:默认是net bridge 桥接模式--net
即:docker run -d -P --name tomcat01 --net bridge tomcat
寻找hello-world镜像,并使用此镜像为模板,生成一个hello-world的容器实例寻找顺序从
查询运行容器:docker ps
-a :列出当前所有正在运行的容器 + 历史上运行过的
-l :显示最近创建的容器
-n :显示最近n个创建的容器
-q:静默模式,只显示容器编号
--no-trunc:完整输出
容器ID 镜像ID 启动容器命令 创建时间 容器状态/时间(up即在运行)映射端口 容器别名
进入运行容器:docker attach / exech
-t 分配一个伪终端
退出运行容器:exit / ctrl+P+Q
启动重启容器:docker start / restart
格式:docker start / restart 容器ID 或 容器名
停止运行容器:docker stop / kill
格式:docker stop / kill 容器ID 或 容器名
docker stop 正常关闭,类似于电脑的关闭
docker kill 强制重启,类似于电脑快速强制关机
删除停止容器:docker rm
格式:docker rm [OPTIONS] 容器ID 或 容器名
之前启动过的容器,会保存在docker日志里,此命令可以删除启动过的容器,
-f 强制删除,删除没有停止的容器
(4)其他命令
查看容器日志:docker logs
-t 加入时间戳
-f 跟随最新的日志打印
--tail [number] 显示最后多少条
查看内部进程命令:docker top
原理:其类似于linux top,因为容器本质运行的式简易版的linux,大部分linux命令都能够使用
查看容器内部细节:docker inspect
将容器内拷贝到主机上或相反:docker cp
注意:尽量使用绝对路径