#内核3.10以上
[root@centos ~]# uname -r
3.10.0-1160.71.1.el7.x86_64
#系统版本
[root@centos ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
#1.卸载docker,输入以下命令,回车即可
yum remove docker \
docker-client \
docker-client-latest \
docker-commo \
docker-latest \
docker-lates-logrotate \
docker-logrotate \
docker-engine
#2.安装依赖包
yum install -y yum-utils
#3.设置镜像仓库(阿里镜像)
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum软件索引
yum makecache fast
#4.安装docker相关源 docker-ce 社区版 ee 企业版
yum install docker-ce docker-ce-cli containerd.io
#5.启动docker
systemctl start docker
#6.查看docker信息
docker version
#7.运行hello-world
docker run hello-world
#8.查看下载的hello-world镜像
docker images
#9.卸载docker
卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
删除文件目录
rm -rf /var/lib/docker ###docker的默认路径
1.登录阿里云找容器服务
2.配置镜像加速
创建目录sudo mkdir -p /etc/docker
编译配置文件sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://eyv9zy0e.mirror.aliyuncs.com"]
}
EOF
重启sudo systemctl daemon-reload
sudo systemctl restart docker
1.点击开始后,docker会在本机寻找镜像
2.判断本机是否存在该镜像,若存在,使用该镜像;否则去docker hub下载
3.在docker hub上若找不到,返回错误;若找到将该镜像下载到本地,使用该镜像
docker是一个C/S结构的系统,docker的守护进程 运行在主机上,通过socket从客户端访问。
通过客户端命令,在守护进程中调用docker,而dockers中的容器时相互隔离的
1.docker有着比vm更少的抽象层
2.docker利用的是宿主机的内核,vm需要的是Guest os
3.虚拟机属于完全虚拟化,即模拟完整的底层硬件环境特权指令的执行,客户操作系统无需进行修改。
Docker和其它容器技术便是操作系统级虚拟化,即直接通过内核创建虚拟的操作系统实例(内核和库),来隔离不同的进程和资源。
4.在新建一个容器时,docker不需要与vm一样重新加载一个操作系统内核,避免引导。 vm是加载guest os,分钟级别的,docker是利用宿主机的操作系统,省略了复杂的过程,秒级。
5.vm利用hypervisor,模拟出独立的硬件和系统,再次基础上创建应用
vm是一个主机模拟出多个主机
vm需要先拥有独立的系统
6.docker 是吧应用及配套环境独立打包成一个单位
docker 是在主机系统中建立多个应用及配套环境
docker 是进程级隔离
1.docker是一种实现容器的方案(其他的方案:LXC、RKT);容器是一个技术类型。
2.容器是基于linux内核对进程封装隔离,属于操作系统层面的虚拟化技术;由于
3.隔离的进程独立于宿主或其他的隔离进程,也称为容器。
4.docker可以将一个基础系统镜像可以被多个镜像共用
1.镜像是静态的定义,容器是动态的定义。
2.容器可以被创建、启动、停止、删除等
3.容器的实质是进程,容器进程运行于属于自己的独立的命名空间。
4.镜像与容器都使用分层存储。
启动容器后,镜像永远只是制度属性,只不过在最上层加入一层读写层(容器层),若需要底层镜像的文件进行修改,读写层会复制一份镜像中的只读层进行写操作。
5.容器存储层的生命周期和容器一样,容器消亡时,容器存储层也随之消亡。
6.镜像是一个包含应用和配置文件,以及底层库的压缩包
容器是运行这个压缩包,实现具体功能的存在
docker version #显示docker的版本信息
docker info #显示
docker --help #帮助
注意:官方说明文档https://docs.docker.com/reference/
1.docker images #查看镜像文件
[root@centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
#REPOSITORY 镜像的仓库源
#TAG 镜像的标签
#IMAGE ID 镜像的id
#CREATED 镜像的创建时间
#SIZE 镜像的大小
参数:
-a 列出所有镜像
-q 只显示镜像id
2.docker search镜像搜索
docker search --help 帮助
--filter=STARS=3000 只搜索3000以上的镜像
3.下载镜像(在官网查看存在的版本)
docker pull mysql 下载镜像(默认最新的版本)
默认最新下载
[root@centos ~]# docker pull mysql
Using default tag: latest #若不写,默认最近最新
latest: Pulling from library/mysql
72a69066d2fe: Pull complete #分层下载,docker image的核心 联合文件系统
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709 #签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #docker官方存在地址
#两者等价
docker pull mysql
docker pull dockerdocker.io/library/mysql:latest
#指定版本下载
docker pull mysql:5.7
4.删除镜像
docker rmi -f 镜像id #删除指定镜像
docker rmi -f 镜像id 镜像id 镜像id #删除多个镜像
docker rmi -f $(docker images -aq) #删除全部镜像
docker pull centos #下载镜像
docker run [参数] image
#参数
--name="NAME" 容器名字,区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器端口
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P 随机指定端口
启动并进入容器
docker run -it centos /bin/bash
查看ls #查看容器内的文件,基础版本,很多命令不完整
退出容器回到主机
exit
查看正在运行的docker
docker ps
-a 查看曾经运行的docker
-n=? 查看最近创建的容器
-q 只显示容器的编号
exit #直接退出容器并停止运行
ctrl+P+Q #容器不停止运行退出
docker rm 容器id #删除指定的容器,不能删除正在运行的容器,若要强制删除要rm -f
docker rm -f $(docker ps -aq) #删除所有容器
docker ps -a -q|xargs docker rm #删除所有容器
docker start 容器id #启动容器
docker stop 容器id #停止容器
docker restart 容器id #重启容器
docker kill 容器id #强制停止容器
#docker run -d 镜像名
docker run -d centos
#当docker ps时,无正在运行的容器
#docker 容器使用后台运行,必须要有一个前台进程,docker发现若没有应用,就会自动停止
#nginx容器启动后,发现主机没有提供服务,就会立即停止。此时无程序了。
docker logs -f -t --tail 10 容器id
#编写shell脚本运行
docker run -d centos /bin/sh -c "while true;do echo moli;sleep 1;done"
#显示日志
-tf #显示日志
--tail number #显示日志条数
docker logs -tf --tail 10 80fc793bfc7b
docker top 容器id
docker inspect 容器
#通常容器都是使用后台方式运行的,如何进入容器,做配置修改
#命令
docker exec -it 容器id #进入正在运行的容器,开启了一个新终端,可以进行操作
docker attach 容器id #进入打印正在执行的终端
#在容器内test目录下新建文件 touch test.txt
#退出容器 exit
#将docker中的test文件复制到主机的test
docker cp 容器id:/test/test.txt /test
常用命令
attach #当前she1l 下attach连接指定运行镜像
bui1d #通过Dockerfile定制镜像
commit #提交当前容器为新的镜像
copy #从容器中拷贝指定文件或者目录到宿主机中
create #创建一个新的容器,同run,但不启动容器
diff #查看docker容器变化
events #从docker服务获取容器实时事件
exec #在已存在的容器上运行命令
export #导出容器的内容流作为一个 tar 归档文忤[对应import ]
history #展示一个镜像形成历史
images #列出系统当前镜像
import #从tar包中的内容创建一个新的文件系统映像[对应export]
info #显示系统相关信息
inspect #查看容器详细信.息.
ki11 #ki11指定docker容器
1oad #从一个tar包中加戟一个镜像[对应save]
login #注册或者登陆一个 docker 源服务器
1ogout #从当前Docker registry退出
logs #输出当前容器日志信.息.
port #查看映射端口对应的容器内部源端口
pause #暂停容器
ps #列出容器列表
pu11 #从docker镜像源服务器拉取指定像或者库镜像
push #推送指定镜像或者库镜像至docker源服务器
restart #重启运行的容器
rm #移除—个或者多个容器
rmi #移除一个或多个镜像[无容器使用该镜像才可删制除,否则需删除相关容器才可继绩或-f强制删除]
run #创建一个新的容器并运行一个命令
save #保存一个镜像为一个 tar包[对应1oad]
search #在docker hub中搜索镜像
start #启动容器
stop #停止容器
tag #给源中镜像打标签
top #查看容器中运行的进程信息.
unpause #取消暂停容器
version #查看docker版本号
wait #截取容器停止时的退出状态值
第一步搜索nginx镜像 docker search nginx(按需下载,首先在官网看版本)
第二步下载nginx docker pull nginx
第三步查看镜像 docker images
第四步启动并创建 docker run -d --name nginx1 -p 8080:80 nginx #-p 宿主机端口,容器内端口
第五步查看容器 docker ps
第六步测试
本地测试 curl localhost:8080
端口暴露概念
远程测试:查看宿主机地址
在浏览器端访问192.168.108.129:8080,此时表示nginx基本已经部署完成