docker指令

注意: 容器没有后台进程的概念,必须前台运行

镜像命令

镜像命令
命令描述
docker images php查看名字为php的镜像
docker images查看所有镜像
docker search搜索镜像
docker pull 镜像名:tag  拉取镜像
docker rmi php删除php镜像

(保存php镜像到目录)

docker image save php > D:\phpstudy_pro\WWW\docker\php.tgz

或者   

(保存多个镜像到一个文件)

docker save -o  D:\phpstudy_pro\WWW\docker\php.tgz  php:8.1.20-fpm  nginx:1.25.0-perl

导出docker镜像到本地

-o,--output写入一个文件,而不是Stdout

docker load < D:\phpstudy_pro\WWW\docker\php.tgz

或者

docker load -i D:\phpstudy_pro\WWW\docker\php.tgz

从本地镜像导入到docker

-i ,--input从tar档案文件读取,而不是Stdin
-q,--quiet抑制负载暑输出

docker image inspect  镜像名/镜像id查看镜像详系信息

容器命令

容器命令
命令描述
docker ps查看正在运行的容器
docker ps -a 查看所有的容器
docker rename 容器名 新容器名容器重命名
docker run -d -p 6380:6379 --name redis-container redis:lastest

后台运行redis标签为lastest的镜像, 容器命名为redis-container , 对外访问6380端口指向容器中的6379端口 (宿主机端口:容器端口)

--privileged
-w  宿主机目录地址设置工作目录
-v 宿主机目录:容器目录将设置的工作目录挂载到容器中

docker exec -it redis-container bash

进入容器并进入到终端

( 在正在运行的容器中运行命令 )

–detach , -d分离模式:后台运行命令
–detach-keys 覆盖用于分离容器的键序列
–env,-e  设置环境变量
–env-file读入环境变量文件
–interactive,-i 以交互模式运行容器,通常与-t同时使用
–tty,-t为容器超星分配一个伪输入终端,通常与-i同时使用
也即启动交互式容器(前台有伪终端,等待交互)
-privileged    赋予命令扩展权限
–user,-u用户名或 UID(格式:<name|uid>[:<group|gid>])
–workdir,-w 容器内的工作目录

       

docker start 容器名/容器id启动容器
docker restart 容器名/容器id重启容器
docker stop 容器名/容器id停止运行容器
docker kill 容器名/容器id强制停止运行容器
docker rm 容器名/容器id删除容器
docker cp  redis php8-1:/usr/src/php/ext

容器和本地指尖复制文件/文件夹

把redis扩展文件夹复制到php8-1容器的/usr/src/php/ext文件夹中

docker  container inspect php8-1 查看php8-1容器的详细信息

   

dockerfile

   

DockerFile
命令描述
from 指定基础镜像
run 在命令前加run  即可运行命令
add/copy  宿主机文件地址....    容器文件地址

copy文件

1.add会自动解压文件(gzip ,tar,xz ....) , 支持url(会下载链接放到目标目录 , 权限自动为600 , 如果url是压缩包时不会自动解压,需要配合RUN命令使用)

2.copy只是拷贝 , 支持多文件拷贝、匹配文件

workdir   容器文件地址设置当前工作目录
volume 

通docker run 中的-v参数 , 将设置的工作目录挂载到容器中 

运行在容器产生的数据, 应该挂载在宿主机上(mysql ,redis..)

volume /data

expose指定容器对外的端口
cmd ["参数1","参数2"]指定容器启动后运行的命令 , 这里注意是双引号
entrypoint

和CMD一样: 指定容器启动后运行的命令

当指定了ENTRYPOINT后, CMD指令就有了变化 , CMD的内容当做参数传给了ENTRYPOINT指令

FROM centos
RUN yum install curl -y
CMD ["curl","-s","http://ipinfo.io"]

构建后会执行curl -s http://ipinfo.io

如果变了,想运行curl -s http://ipinfo.io -I 

错误: docker run 上面的镜像 -I  , 这里会报错

正确: 重新构建Dockerfile

FROM centos
RUN yum install curl -y
ENTRYPOINT ["curl","-s","http://ipinfo.io"]

这里如果变了,想运行curl -s http://ipinfo.io -I 

错误: docker run 上面的镜像 -I  , 这里会在上面追加-I参数 , 正常运行, 把CMD内容当成参数传给ENTRYPOINT指令

ENV

设置环境变量

env  变量名=变量值 

区别:

ENV无论在镜像构建时还是容器运行时都可以使用变量

ARG 只用于镜像构建时设置变量,容器运行时无法使用

ARG
USER

改变环境 , 用于切换用户

USER root

构建自定义镜像 

1.创建一个Dockerfile文件

FROM nginx
RUN echo '<meta charset=utf8> 测试构建dockerfile' > /usr/share/nginx/html/index.html
ENV MYSQL_VERSION=5.6
RUN yum install mysql-{$MYSQL_VERSION} -y 

2. 运行docker build .    (可执行 docker build -t  镜像名  . ,  这里直接就能对名字进行写入)

构建成功是下图这样子, 无名字 无tag的

 3. 修改镜像名

docker tag 镜像id tag名

 4. 运行查看

docker run -d -p 9555:80 my-build-nginx 

CMD的坑

CMD  systemctl start nginx       这是错误的 ,容器内的程序必须后台运行 , 当前是前台运行 , 会报错无法启动 
 这条命令是希望nginx以守护进程的形式启动, 
会转化成  CMD ["sh","-c","systemctl start nginx"] , 执行完毕就结束了 , 容器退出


CMD ["nginx","-g","daemon off;"]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苗先生的PHP记录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值