Docker学习之镜像&容器基础操作


1.容器操作

操作命令说明
运行docker run -itp --name 容器名 镜像名或者镜像id–name指定容器名称,容器名可以自定义,如果不指定则自动命名;-i 以交互模式运行容器;-t 分配一个伪终端,即命令行,通常组合使用-it;-p用来指定端口映射,将Docker宿主机端口映射到容器内的端口;-d 表示后台运行,即守护进程方式运行容器;-v 指定挂载主机目录,默认为rw读写模式,ro表示只读。
列表docker ps -a -q查看正在运行中的容器以及暂停的容器,-a显示所有容器;-q表示只显示容器id
启动docker start 容器名或者容器id启动容器
停止docker stop 容器名或者容器id停止正在运行的容器
删除docker rm 容器id或者容器名删除容器。-f表示强制删除
日志docker logs 容器id或者容器名获取容器的日志
在容器中执行操作docker exec -it 容器id或者容器名称 /bin/bash进入正在运行中的容器并且开启一个交互模式的终端,可以在容器中执行操作
拷贝文件docker cp 主机中的文件路径 容器名称或者容器id:容器中的目标路径 docker cp 容器名或者容器id:容器中源文件路径 宿主机目标路径拷贝宿主机文件至容器中;拷贝容器中文件至宿主机中
获取元信息docker inspect 容器名或者容器id获取容器的元信息
容器改名docker rename old_name new-name容器修改名称

以centos为例:
备注:Docker容器内实际上运行着精简版的Linux系统,在系统之上运行相关软件

docker search centos
docker pull centos
#根据centos:latest镜像运行容器,并以交互模式进入容器中
docker run -it --name mycentos centos:latest
exit #退出容器,并且容器将进入停止状态
docker ps -a
docker start mycentos
docker stop mycentos
docker run mycentos
#强制删除所有容器
docker rm -f $(docker ps -qa)

以tomcat为例:

# 示例1:基本用法
docker search tomcat
docker pull tomcat
docker run --name mytomcat -p 8888:8080 -d tomcat
# 测试: http://宿主机ip:8888
docker stop mytomcat
docker ps -a
docker start mytomcat
#示例2:拷贝文件和挂载目录
docker run -p 8888:8080 -d tomcat
docker cp index.jsp c2de9bae4d53:/usr/local/tomcat/webapps/ROOT #将宿主机中的文件拷贝至容器中

#示例3:为docker容器安装软件
[root@shell_test run]# docker exec -it  767739c97d8a yum install bind
[root@shell_test run]# docker exec --help

Usage:	docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Run a command in a running container

Options:
  -d, --detach               Detached mode: run command in the background
      --detach-keys string   Override the key sequence for detaching a container
  -e, --env list             Set environment variables
      --help                 Print usage
  -i, --interactive          Keep STDIN open even if not attached
      --privileged           Give extended privileges to the command
  -t, --tty                  Allocate a pseudo-TTY
  -u, --user string          Username or UID (format: <name|uid>[:<group|gid>])

# 部署web项目
docker cp spring-web.war 70cba924861c:/usr/local/tomcat/webapps
#以上命令执行后,以后项目更新代码后,还是需要再次将打包文件重新拷贝至容器中,相当麻烦,所以选在直接将本地目录或者文件直接挂载给容器这种方法(此方法被称为数据卷  -v 可挂载多个目录或者文件   :ro指定容器中对此文件只读  rw可读写)
docker run \ 
-p 8888: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

2. 镜像操作

操作命令说明
查找docker search 关键词可以在docker hub网站上查看镜像的详细信息,如镜像的tag标签
抽取docker pull 镜像名:tag:tag表示软件的版本,如果不指定则默认为latest
列表docker images查看本地所有镜像
获取元信息docker inspect 镜像名或者镜像id获取镜像的元信息 、详细信息
删除docker rmi -f 镜像id或者镜像名删除指定的本地镜像,-f表示强制删除

2.1 镜像的分层结构

  • 镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境的编写的软件,包含某个软件所需要的所有内容。
  • 基于UnionFS联合文件系统 ,采用分层结构,一层一层的堆叠起来,但从外面来看只能看到最外层的文件系统(镜像层)
  • 分层结构的好处:共享资源、便于复用(许多镜像都是从相同的Base基础镜像构建而来,基础镜像只需要保存一份)
  • 镜像都是只读的,而由镜像所生成的容器 是可修改的。

2.2 如何创建镜像

有时从docker hub镜像库中下载的镜像不能够满足我们的需求,此时就可以基于这个Base镜像封装一个我们自己的镜像
两种方法:
1. 更新镜像
2. 构建镜像

  • 更新镜像

    先使用基础镜像创建一个容器,然后对容器进行修改 ,最后使用commit命令提交为一个新的镜像

    步骤1. 根据基础镜像创建一个容器

    docker run --name mytomcat -p 8888: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=“作者” 容器id或者容器名 镜像名:tag

    docker commit -m="修改tomcat配置文件" -a="sunwei" bcd08edac78d tomcat:v1
    

    步骤4. 使用新镜像创建容器

    docker run --name mytomcat_v1 -p 8888:8080 -d tomcat:v1
    
  • 构建镜像

    根据Dockerfile文件自动构建镜像
    Dockerfile是一个包含创建镜像所有命令的文本文件,使用docker build 命令可以根据Dockerfile的内容创建镜像

    步骤1. 创建一个Dockerfile文件

    #基础镜像
    FROM tomcat
    #作者
    MAINTAINER sunwei
    #执行命令
    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 itany/tomcat:v2 .
    

    步骤3. 使用新镜像运行容器

    docker run -p 9999:8080 -d itany/tomcat:v2
    

大功告成!!!
鲁大师说过:愿中国青年都摆脱冷气,只是向上走,不必听自暴自弃者的话。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值