Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,Tomcat镜像——>run——>Tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。
Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的。目前就可以把这个容器理解为就是一个简易的Linux系统。
仓库就是存放镜像的地方,仓库分为公有仓库和私有仓库,需要配置镜像加速(类似于Maven)。
①查看系统内核(保证内核版本在3.10以上)
②查看Linux环境
https://docs.docker.com/get-started/overview/
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
yum install -y yum-utils
③设置镜像仓库
默认是从国外下载,不要使用官网提供的,非常慢。
推荐使用阿里云提供的镜像地址。
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
⑤安装Docker相关组件(docker-ce代表社区版本、docker-ee代表企业版本)
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl start docker
docker version
docker run hello-world
docker images
Docker是一个C/S结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问。DockerServer接收到Docker-Client的指令,就会执行这个命令。
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
(1)docker version(显示Docker的版本信息)
(2)docker info(显示Docker的系统信息,包括镜像和容器的数量)
(3)docker 命令 --help(帮助命令)
// 解释
★REPOSITORY:镜像的仓库源
★TAG:镜像的标签
★IMAGE ID:镜像的ID
★CREATED:镜像的创建时间
★SIZE:镜像的大小
// 可选参数
★docker images -a(列出所有镜像)
★docker images -q(只显示镜像的ID)
// 可选参数
★docker search mysql --filter=STARS=3000(搜索收藏数不少于3000的Mysql镜像)
// 防止踩坑
原因:默认的DNS解析不了加速地址,先确定虚拟机能够连接外网,网络适配器选择NAT
// 解释
★如果不写[:tag],默认下载最新版本(latest)
★从上到下分层下载(Pull complete),docker images的核心,联合文件系统
★Digest:签名信息,防伪标志
★docker.io:真实地址,即docker pull mysql等价于docker pull docker.io/library/mysql:latest
// 可选参数
★指定版本下载(Docker Hub中该版本一定是存在的):docker pull mysql:5.7
// 可选参数
★docker rmi -f $(docker images -aq)(删掉全部镜像,递归删除)
★docker rmi -f 镜像ID1 镜像ID2(删除多个指定镜像:镜像ID,空格来分割)
★docker rmi -f c20987f18b13(删除指定镜像:镜像ID)
前提:有了镜像才可以创建容器,下载一个CentOS镜像来测试学习一下!
// 参数说明
--name=“Name”(容器名字,tomcat01、tomcat02用来区分容器)
-d(后台方式运行,例如Jar包)
-it(使用交互方式运行,进入容器查看内容)
-p(小写,指定容器的端口,8080:8080跟主机映射起来)
-p 主机端口:容器端口(推荐)
-p ip:主机端口:容器端口(不推荐)
-p 容器端口(不推荐)
容器端口(不推荐)
-P(大写,随机指定端口)
// 测试
★docker run -it centos /bin/bash(启动并进入容器,基础版本,很多命令都是不完善的)
★Ctrl+P+Q(快捷键,从容器中退回主机,容器不停止退出)
★exit(从容器中退回主机,容器停止并退出)
// 参数说明
★docker ps -a(列出当前正在运行的容器,顺便带出历史运行过的容器)
★docker ps -n=?(显示最近创建的容器,指定个数)
★docker ps -q(只显示容器的编号)
// 可选参数
★docker rm -f 容器ID(可以删除正在运行的容器)
★docker rm -f $(docker ps -aq)(删掉全部容器,递归删除)
★docker ps -a -q|xargs docker rm(删掉全部容器,递归删除)
// 相关命令
★docker start 容器ID(启动容器)
★docker restart 容器ID(重启容器)
★docker stop 容器ID(停止当前正在运行的容器)
★docker kill 容器ID(强制停止当前容器)
// 常见的坑:docker ps 看不到后台启动的容器(发现centos停止了)
原因:容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止。例如,启动Nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了。
★docker logs -tf 容器ID (查看全部日志命令)
// 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
★方式一:docker exec -it 容器ID /bin/bash(进入容器后开启一个新的终端,可以在里面操作,常用)
★方式二:docker attach 容器ID(进入容器正在执行的终端,不会启动新的进程)
// 拷贝是一个手动的过程,未来使用 -v 卷的技术,可以实现,自动同步
// 容器内创建文件
// 从容器内拷贝文件到主机上(在主机上执行)
每天一个提升小技巧!!!