Docker学习第二课 -- docker安装和基础命令

目录

 

一、 linux 相关基本操作     

二 、docker 安装

  2.1 安装

2.2 启动/停止

2.3 镜像加速配置

三 Docker 操作

 3.1 镜像操作命令

3.2 容器操作命令

3.4 常用操作练习

  操作实例1:操作 centos 镜像

                  2 、使用tomcat 部署应用

3.5 镜像的分层

3.6 创建镜像


一、 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在下次学习中介绍

 

     

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值