docker 之前的软件可能用各种不同的语言,各种不同的软件包(压缩包,文件夹,源程序(让我们自己打),不像是windows 中统一的.exe格式的包简单直接) 而docker 提供了这个标准 直接docker build … 直接打包成一个统一的镜像文件
把所有打包的镜像上传到docker hub (类似于软件商店)谁都可以用‘
统一的标准镜像,造成统一的启动方式 docker run 非常简单
虚拟化:在一个服务器中安装几个虚拟机,虚拟机之间不会相互影响,隔离性强,不会造成一个应用系统内存泄露,整个服务器中所有的应用系统就都不能使用的情况,相对于容器化技术有点重量级
容器化技术:Linux 发布 docker 做了封装
摒弃了虚拟机的笨重化设计,以前的每一个虚拟机又是一个完整的操作系统,Docker 容器虽然也是隔离的系统,但是它只保存一些差异化的东西,并不是再搞一个完整的操作系统
yum remove docker*
sudo yum install -y yum-utils
sudo 是管理员权限的意思
-y是 一路自动确定 不用询问的意思
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
docker-ce: docker的社区版本
docker-ce-cli docker 的命令行
containerd.io docker 容器化的运行环境
sudo yum install -y docker-ce -版本号
systemctl enable docker --now
docker info docker的详细信息
docker -v docker版本号
去docker.hub(hub.docker.com)上找到镜像
docker pull nginx:版本号 不加默认最新
docker images
docker rmi nginx:版本号 不加版本号 默认移除latest(最新)版
docker tag 镜像id 新名称
安装好镜像之后就可以启动容器了
docker run --name mynginx -d -p 88:80 --restart=always nginx
docker run --help 命令说明
– name 给容器起名字
-d 表示后台运行,如果不设置一会应用就会停掉
–restart-always 开启自启动
-p 端口映射 如果不将服务器的端口进行映射到nginx的80端口,公网是访问不到nginx的
名字不能重复 即使已经停掉的应用,如果重复只能删除然后再启动
docker rm nginx id或者应用的名字
docker rm -f 强制删除 即使运行的容器
查看所有容器
docker ps -a
运行的容器
docker ps
查看最后一次运行的容器
docker ps –l
查看停止的容器
docker ps -f status=exited
docker stop 容器id/名字
docker start 容器id/名字
docker update 容器id/名字 设置参数(比如开机自启动 --restart=always)
bash控制台,相当于进入另外一个Linux系统,每一个容器都是一个小系统
docker exec -it 容器的id /bin/bash
替换文件内容,echo 输出内容到指定文件
echo "替换内容" > 文件
commit 命令会保存一个新的镜像文件到服务器上 使用docker images 命令可以查看
docker commit [配置项] CONTAINER [REPOSITORY[:TAG]]
Options:
-a, --author string Author (e.g., “John Hannibal Smith
[email protected]”)
-c, --change list Apply Dockerfile
instruction to the created image
-m, --message string Commit
message
-p, --pause Pause container during commit
(default true)
将机器打包为实体文件,默认tar包
docker save [OPTIONS] IMAGE [IMAGE...]
docker save -o sourcenginx.tar niunginx:v1.0
sourcenginx.tar 压塑包的名字 自己起
niunginx:v1.0 想要传输的镜像 名称以及版本
进行传输
复制文件 使用root 用户 传输到目标服务器的指定目录(比如root)下 第一次使用scp 命令需要输入密码
scp sourcenginx.tar root@192.168.200.169:/root/
传输成功 将文件读取出来 成为镜像 并且使用run命令运行
docker load -i sourcenginx.tar
docker tag local-image:tagname new-repo:tagname
local-image:tagname 本机的镜像名称以及版本号
new-repo:tagname 目标仓库完整的仓库名称再加个版本号
进行推送
docker push new-repo:tagname
进行推送可能会推送失败 原因是没有登录 需要使用docker login 命令输入账号密码登录 才可以推送成功
推送完成镜像后 退出远程仓库:docker logout
将本机上的某一个目录与容器上的目录建立连接,修改容器里面的内容不用进入(使用exec命令 交互模式)容器内部再进行修改,修改主机上的目录内容就相当于修改目标机器(容器)上对应目录的内容,要实现数据挂载,那docker容器的启动方式 需要加一个配置项 -v
重新启动 加-v 配置项
docker run --name=mynginx \
-d --restart=always \
-p 88:80 -v /data/html:/usr/share/nginx/html:ro \ nginx
说明
88:80 -v /data/html:/usr/share/nginx/html:ro
docker logs 容器id/容器名
docker cp 容器id:文件目录 目标主机目录
将外部内容复制到容器里面
docker cp 目标主机目录 容器id:文件目录
reboot
Linux whereis命令用于查找文件。