目录
一、 linux 相关基本操作
cat /proc/cpuinfo #查看cpu信息
cat /proc/meminfo # 查看内存信息
uname -r #查看内核信息
sudo reboot # 重启
sudo halt #关机
yum源安装软件
yum install 软件包名称
yum remove 软件包名称
二 、docker 安装
2.1 安装
- 安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置阿里云镜像源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装 Docker-CE
sudo yum install docker-ce
- 报错
--> Processing Conflict: 1:docker-ce-cli-18.09.6-3.el7.x86_64 conflicts docker
--> Processing Conflict: 1:docker-ce-cli-18.09.6-3.el7.x86_64 conflicts docker-io
--> Processing Conflict: 3:docker-ce-18.09.6-3.el7.x86_64 conflicts docker
--> Processing Conflict: 3:docker-ce-18.09.6-3.el7.x86_64 conflicts docker-io
--> Finished Dependency Resolution
Error: docker-ce conflicts with 2:docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64
Error: docker-ce-cli conflicts with 2:docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
- 解决办法
# 1、查看安装过的docker:
yum list installed | grep docker
docker.x86_64 2:1.13.1-74.git6e3bb8e.el7.centos
docker-client.x86_64 2:1.13.1-74.git6e3bb8e.el7.centos
docker-common.x86_64 2:1.13.1-74.git6e3bb8e.el7.centos
# 2、卸载docker:
sudo yum remove -y docker-ce.x86_64 docker-client.x86_64 docker-common.x86_64
# 3、删除容器镜像:
sudo rm -rf /var/lib/docker
# 4、 重新安装docker
sudo yum install docker-ce
2.2 启动/停止
# 查看docker版本
docker version
# 开机自启
systemctl enable docker
# 启动docker服务
systemctl start docker
#停止
systemctl stop docker
#查看docker状态
systemctl status docker
#重启
systemctl restart docker
2.3 镜像加速配置
使用阿里云的镜像加速器:
步骤:1 注册并登陆阿里云的开发者平台 http://dev.aliyun.com
2 查看自己专属加速器地址
3 配置自己docker加速器
# 加速器地址 :
# 阿里云控制台搜索容器镜像服务
# 进入容器镜像服务, 左侧最下方容器镜像服务中复制加速器地址
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["你的加速器地址"]
}
EOF
# 重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
三 Docker 操作
3.1 镜像操作命令
输入 docker 可以查看Docker的命令用法,输入docker COMMAND --help 查看指定命令的详细用法
操作 | 命令 | 说明 |
---|---|---|
查找镜像 | docker search 关键字 | 可以走在Dokcer hub网站查看镜像的详细信息,如镜像的tag标签 --automated :只列出 AUTOMATED=OK 的镜像 --filter=stars=600:只显示 starts>=600 的镜像 |
下载镜像 | docker pull 镜像名称:tag | :tag 表示软件的版本号,如果不指定就默认是latest |
查看镜像列表 | docker images | 查看所有本地镜像 -a 含中间映像层 --digests 显示镜像摘要信息(DIGEST列) --no-trunc 显示镜像完整信息 |
查看镜像信息 | docker inspect 镜像id | 查询镜像的详细信息 |
删除镜像 | docker rmi 镜像id或者镜像明显:tag | 删除指定的本地镜像, -f 表示强制删除 |
构建镜像 | docker build:构建镜像 | docker build -f Dockerfile文件的路径 -t 镜像名:tag 命令执行上下文 |
历史 | docker history -H redis | 显示指定镜像的历史创建; 参数:-H 镜像大小和日期,默认为true; --no-trunc 显示完整的提交记录; -q 仅列出提交记录ID |
3.2 容器操作命令
操作 | 命令 | 说明 |
---|---|---|
创建容器并运行 | docker run --name 容器名 -i -t -p 主机端口:容器端口 -d -v 主机目录:容器目录(:ro) 镜像id或者镜像名称:tag | --name 指定容器名称,自定义,如果没有则自动命名 -i 以交互模式运行容器;-t 分配一个伪终端,即命令 行,通常-it组合使用 -p 指定端口映射,降主机端口映射到容器内的端口 -d 表示后台运行,即守护式运行容器 -v 指定挂载主机目录到容器目录默认为re读写模式,ro 表示只读 |
创建 | docker create [选项] <镜像名称,id> <命令> [参数] | 使用指定的镜像创建容器,与run命令不同的是,使用create命令只能创建容器而并不启动。 |
列表 | docker ps -a -q | 查看正在运行容器,-a 表示所有容器,-q只显示容器id |
启动容器 | docker start 容器id或者容器名称 | |
停止容器 | docker stop -f 容器id或者容器名称 |
|
日志 | docker logs 容器id或者容器名称 查看容器redis从2019年05月21日后的最新10条日志。 docker logs --since="2019-05-21" --tail=10 redis | -f 跟踪日志输出; -t 显示时间戳; --tail 仅列出最新N条容器日志 |
进入容器 | docker exec -it 容器id或者容器名称 /bin/bash | 在 centos 容器中打开新的交互模式终端,可以启动新进程,参数:-i 即使没有附加也保持STDIN 打开;-t 分配一个伪终端 |
进入容器 | docker attach --sig-proxy=false 容器名称 | 直接进入centos 容器启动命令的终端,不会启动新进程,多个attach连接共享容器屏幕,参数:--sig-proxy=false 确保CTRL-D或CTRL-C不会关闭容器 |
退出容器 | exit 关闭容器并退出 仅退出容器,不关闭 快捷键:Ctrl + P + Q | 两者区别 |
获取容器信息 | docker inspect 容器id | 获取容器详细信息 |
拷贝文件 | docker cp 主机中文件路径 容器id或者容器名称:容器路径 docker cp 容器id或者容器名称:容器路径 主机中文件路径 | |
删除容器 | docker rm -f 容器id或者容器名称 | 删除容器。-f 表示强制删除容器 |
更新镜像 | docker commit -m='描述消息' -a ="作者" 容器id或者容器名 镜像名:tag | 基于当前redis容器创建一个新的镜像; 参数: -a 提交的镜像作者; -c 使用Dockerfile指令来创建镜像; -m :提交时的说明文字; -p :在commit时,将容器暂停 |
构建镜像 | docker build -f Dockerfile文件的路径 -t 镜像名:tag 命令执行的上下文 | docker build -f Dockerfile -t itany/tomcat:v2 . |
操作实例1:操作 centos 镜像
docker search centos
docker pull centos
#根据centos:latest镜像运行容器,并以交互模式进入容器中
docker run --name mycentos -it centos:latest
#实际上是在Docker容器中运行一个精简版的CentOS系统
exit #退出并关闭容器
docker ps -a
docker start mycentos
docker stop mycentos
docker rm mycentos
docker rm -f $(docker ps -aq) #强制删除所有容器
2 、使用tomcat 部署应用
#示例1:基本用法
docker search tomcat
docker pull tomcat
docker run --name mytomcat -p 8080:8080 -d tomcat
#测试:http://宿主机地址:8080
docker stop mytomcat
docker ps -a
docker start mytomcat
# 示例2: 拷贝文件和挂载目录
docker run -p 8080:8080 -d tomcat
docker exec -it 70cba924861c /bin/bash
cd /usr/local/tomcat/webapps/ROOT
exit
echo welcome to tomcat > index.jsp
#将宿主机中的文件拷贝到容器中指定的目录中
docker cp index.jsp 70cba924861c:/usr/local/tomcat/webapps/ROOT
#部署WEBx项目,将war包放到容器中
docker cp spring-web.war 70cba924861c:/usr/local/tomcat/webapps
#可以通过 -v挂载目录 可以称为数据卷(Volume)
docker run \
-p 8080:8080 \
-v /my/tomcat/webapps/spring-web.war:/usr/local/tomcat/webapps/spring-web.war \
-v /my/tomcat/data:/usr/local/tomcat/dataVolume:ro \
-d tomcat
# ??3????????????????????????????
docker run -p 8081:8080 -d tomcat
docker run -p 8082:8080 -d tomcat
docker run -p 8083:8080 -d tomcat
3.5 镜像的分层
tomcat镜像为什么这么大?
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境的软件,包含运行某个软件所需要的所有内容。
基于UnionFS联合文件系统,采用分层结构,-层一层的堆叠起来,像一个同心圆,但从外面来说,只能看到最外层的文件系统(镜像层)。
分层结构:共享资源、便于复用(许多镜像都是从相同的Base基础镜像构建而来的,基础镜像只需要保存一-份)
镜像都是只读的,而由镜像生成的容器是可修改的
3.6 创建镜像
有时从dcoker镜像仓库中下载下来的镜像不能满足我们的要求,此时可以基于这个镜像(基础镜像)封装一个自己的镜像。
两种方式:
- 更新镜像,使用docker commit 命令
- 构建镜像,使用docker build 命令,需要创建Dockerdfile文件
1、更新镜像:
先使用一个基础镜像创建一个容器,然后对容器进行修改,最后使用commit 命令提交为一个新的容器。
#1 根据基础镜像,创建容器
docker run --name mytomcat -p 8080:8080 -d tomcat
#2 修改容器
docker exec -it bcd08edac78d /bin/bash
cd webapps/ROOT
rm -f index.jsp
echo welcome to tomcat > index.html
exit
#3 提交为新镜像 语法:docker commit -m="描述信息" -a="z作者" 容器id或者容器名 镜像名称:tag
docker commit -m="新的镜像" -a="dukun" bcd08edac78d dukun/tomcat:v1
#4 使用新镜像运行容器
docker run --name tomcat_v1 -p:8080:8080 -d dukun/tomcat:v1
2、构建镜像
根据Dockerfile文件来自动构建镜像
Dockerfile是一个包含创建镜像所有命令的文本文件,使用docker build命令可以根据Dockerfile的内容创建镜像
#1 创建一个新的Dockerfile文件 vim Dockerfile
#基础镜像 第一条必须有 命令都是大写
FROM tomcta
#作者
MAINTAINER dukun
#执行命令
RUN rm -f /usr/local/tomcat/webapps/ROOT/index.jsp
RUN echo "welcome to tomcat!" > /usr/local/tomcat/webapps/ROOT/index.html
#2 构建新的镜像
#语法 docker build -f Dockerfile文件的路径 -t 镜像名称:tag 命令执行上下文
docker build -f Dockerfile -t dukun/tomcat:v2 .
#3 使用新镜像运行容器
docker run -p 9999:8080 -d dukun/tomcat:v2
Dockefile在下次学习中介绍