Docker获取镜像以及相关指令

Docker获取镜像

1676078-20190718091209196-1015700828.png

docker pull ubuntu:16.04 命令中没有给出Docker镜像仓库的地址,因此会从Docker Hub获取镜像。

显示镜像:docker image ls

运行
docker run -it --rm ubuntu:16.04 bash

运行基于ubuntu:16.04启动一个容器
-it 以交互的形式运行容器
 命令太长的换行符
--rm 退出容器自动删除该容器
退出容器 exit/Ctrl+D

看正在运行的容器 docker ps
看所有的容器 docker ps -a

更新镜像 docker pull ubuntu16.04 即重新拉一次

镜像体积

虚悬镜像

:即镜像既没有仓库名,也没有标签,均为
原因是由docker pull和docker build时,因为官方镜像维护后,发布新版本,原来的镜像被转义到了新下载的镜像身上,而旧的镜像上的名字则被取消。
可以用以下命令专门显示这类镜像

对于Centos/RHEL的用户来说,在没有办法使用UnionFSd的情况下,一定要配置direct-lvm给devicemapper,无论是为了性能、稳定性还是空间利用率。

docker image rm ubuntu16.04;删容器
docker rmi 镜像id 删镜像

Dockerfile
Dockerfile脚本 用这个脚本来构建、定制进行
Dockerfile是一个文本文件,内包含一条条的指令,每一条指令构建一层

docker pull tomcat
docker images
docker image ls
docker run -it tomcat bash
此时路径为:/usr/local/tomcat
ls -al
自己装的软件必须安装在/usr/local

cd webapps ll
cd ROOT/
ls -al

echo "hello" > test.txt

docker run -8080:8080 tomcat

docker ps
docker ps -a

docker rm 容器id

docker images
docker run -p 8080:8080 tomcat

from tomcat为文件第一行
所有的dockerfile脚本必须有一个基础镜像
run

docker run -it --rm tomcat bash
ls -al 
cd webapps/ 
cd ROOT/
ls -al
pwd

在/usr/local/docker 下创建一个目录

mkdir tomcat
cd tomcat/
ll
vi Dockerfile
FROM tomcat
RUN echo "Hello Docker" > /usr/local/tomcat/webapps/ROOT/index.html

cat Dockerfile

写完脚本开始构建镜像

docker build -t shop .

其中. 表示当前目录,镜像的构建需要基于dockerfile当前目录

docker run -it shop bash
ls -al
cd webapps/
ls -al
cd ROOT/
ls -al
cat index.html

删除ROOT目录所有文件
vi Dockerfile

FROM tomcat 
RUN cd /usr/local/tomcat/webapps/ROOT/
RUN rm -fr *
RUN echo "Hello Docker" > /usr/local/tomcat/webapps/ROOT/index.html

报错了,把ROOT目录也删除了,
docker images

vi Dockerfile

FROM tomcat 
WORKDIR cd /usr/local/tomcat/webapps/ROOT/
RUN rm -fr *
RUN echo "Hello Docker" > /usr/local/tomcat/webapps/ROOT/index.html

docker run -it --rm shop bash

ls -al
docker image prune
docker rmi imageID

容器是基于镜像的
先退出容器
docker ps
docker ps -a
docker ps imageID

docker build -t mysql .
寻找Dockfile 构建一个镜像上下文(Context)

cd /usr/local/docker/
ll
rm -fr mysql/
ll
cd com
rm -fr ROOT/
ll
cd tomcat/
HOST OS宿主机上操作docker build -t shop
将当前目录打包,请求RESTAPI,还带着这个目录的压缩包,
Docker Server接收Docker build 解压缩,构建镜像

COPY ./package.json /app/
这并不是要复制执行docker build 命令所在目录下的package.json,也不是复制DOckerfile所在目录下的package.json,而是复制上下文(context)目录下的package.json。这个命令中的源文件的路径是相对路径

拷贝index.html到

FROM tomcat
COPY index.html /usr/local/tomcat/webapps/ROOT/

docker build -t shop .

docker run -it --rm shop bash

学习要有目的性,以最快的方式完成任务

部署项目到Docker容器

  1. 拷贝shop.zip -> tomcat/webapps/ROOT/
  2. 修改访问端口号为80

vi Dockerfile

FROM tomcat
COPY shop.zip /usr/local/tomcat/webapps/ROOT
RUN unzip shop.zip
    

WORKDIR 为工作目录,如果目录不存在,WORKDIR会帮你建立目录
每一个指令都会构建一个分层
每一个RUN都是启动一个容器,即使失败了,也启动了,会导致直接删除了不了镜像,所以需要先回去把该容器删除再删镜像 正常情况下,--rm 会自动删除

vi Dockerfile

FROM tomcat
WORKDIR /usr/local/tomcat/webapps/ROOT
RUN rm -fr *
COPY shop.zip .
RUN unzip shop.zip

:wq!

build -t shop .

解压缩之后还需要一个命令
vi Dockerfile

FROM tomcat
WORKDIR /usr/local/tomcat/webapps/ROOT
RUN rm -fr *         #删除ROOT目录下所有内容
COPY shop.zip .
RUN unzip shop.zip
RUN rm -fr shop.zip
WORKDIR /usr/local/tomcat  #切换到镜像本身的工作空间

:wq!

build -t shop .

ADD

ADD指令和COPY的格式和性质基本一致 ADD指令会自动解压缩这个文件到中去

vi Dockerfile

FROM tomcat
WORKDIR /usr/local/tomcat/webapps/ROOT
RUN rm -fr *         
ADD shop.tar.gz .
WORKDIR /usr/local/tomcat

:wq!

docker build -t shop .
可以看到他是把整个目录都打包了体积变的越来越大

docker run -it --rm shop bash

cd webapps/
cd ROOT/
ls -al
可以看到自动解压缩了,并且原来的tar包也被删除了
但是某些情况下,如果我们真的是希望复制个压缩文件进去,而不解压缩,这时就不可以使用ADD命令了。

接下来是修改端口号为80
docker image prune

docker run -p 8080:8080 tomcat

-p 的意思是 port端口

EXPOSE [...]
EXPOSE指令只是一个声明,运行时并不会因为这个声明应用就会开启这个端口的服务。
在dockerfile中写入这样的声明有两个好处,一个是帮助进行使用者理解这个景象服务的守护端口,以方便配置映射;另一个好处是在运行时使用随机端口映射时,也就是
docker run -p时,会自动随机映射EXPOSE的端口

** CMD [参数2,参数2...]**
一个容器就是一个进程,一个程序
设置脚本时 设置参数的占位符 如$1、$2

test.sh
SET PATH=$1

test.sh /usr/local/tomcat
其中/usr/local/tomcat就是路径传入的参数
如传入三个参数 catalina.sh run stop restart成功的话, 则在catalina.sh中是有三个占位符的

1676078-20190718091303170-1011770697.png

转载于:https://www.cnblogs.com/cgy-home/p/11203669.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值