docker容器

1.容器认识

容器是打包APP一家子的东西。

镜像是月饼模子,容器是月饼,仓库是月饼盒子。

虚拟机开机自启

设置开机自启:

systemctl enable docker

查看开机自启:

systemctl is-enabled docker

2.镜像命令

搜索镜像:

docker search 镜像名

获取镜像:

docker pull 仓库名称:【标签】

例如:cnetos:7.5

镜像是一个联合系统。

查看镜像信息:

docker images(查看本地所有镜像)

docker inspect 镜像id

删除镜像:

docker rmi 镜像名称:标签

docker rmi 镜像ID

镜像改标签(重命名):

docker tag
例如:docker tag nginx nginx:nginx-test1

由nginx改为nginx-test1

删除单个:

docker rmi -f 镜像ID

-f:表示强制删除

删除多个:

docker rmi -f 镜像名1:tag 镜像名2:tag

全部删除:

docker rmi -f $(docker images -qa)

3.容器命令

列出所有正在运行的容器:

docker ps

-a:列出当前所有正在运行的容器+历史上运行过得

-l:显示最近创建的容器

-n:显示最近n个创建的容器

-q:静默模式,只显示容器编号

--no-trunc:不截断输出

启动容器 :

docker start 容器的id/容器名

创建并启动容器:

docker run

docker run -it --name

两种启动方式:

-it:交互式(直接进去)

-d:守护式(没有进去)

创建容器:

docker create

退出容器:

exit(Ctrl+d):退出容器就会停止。

Ctrl+p+Q:退出容器,容器还在运行。

进入容器:

docker attach:一个直接进入终端。(必须进入)

docker exec:可以进入也可以不进入,返回结果到宿主机。

启动容器:

docker start 容器名或容器ID

重启容器:

systemctl restart docker

停止容器:

docker stop 容器名或容器ID

强行停止:

dokcer kill 容器名或容器ID

容器改名字:

docker rename 容器旧名字 容器新名字

删除已停止容器:

docker rm 容器ID

docker rm -f $(docker ps -a -q)

一次性删除多个容器:

docker ps -a -q lxargs docker rm

查看容器日志:

docker logs -f -t -t --tail 容器ID

-t:是加入时间

-f:跟随最新的日志打印

--tail:数字显示最后多少条

基于容器创建镜像:

docker commit [option] 容器id 镜像名

将容器转换成文件:

docker export 容器id/容器名 > 文件名

将文件转换成镜像:

docker 文件名 |docker import - 镜像名[标签]

查看容器内部细节:

docker inspect

4.Dockerfile

先创建一个目录或文件夹:

在里面创建一个Dockerfile文件

vi Dockerfile

FROM centos:7

RUN yum install -y vim

RUN mkdir aa

RUN echo "build by Dockerfile">aa/1.txt(RUN表示运行)

RUN是创建时运行命令

CMD和NETRYPOINT是在容器内运行的

运行命令:

docker build .

docker build -t 标签名 .

docker build -f 要运行文本文件的目录 . (.代表当前路径)

指定目录:

文本文件内输入:

WORKDIR (所指定的目录)

多次设置WORKDIR绝对路径,结果为最后一个

若前一个绝对路径后面添加一个相对路径,则会在绝对路径后加上相对路径。

查看容器网络:

docker network ls

查看bridge网络的底层细节:

docker network inspect bridge

创建单机桥接网络:名为localnet

docker network create -d bridge localnet

驱动设置为bridge

安装工具查看brctl网桥:

yum install bridge-utils

brctl show
docker network creade -d bridge locanat

docker run --name --network local

查看localnet详细信息:

docker network inspect localnet

创建单机桥接网络,名字为localnet:

docker network create -d bridge localnet
docker run -d --name c1 --network locanet alpine sleep 1d

保护式进入:-d 容器名字:c1 网络:locanet 镜像名字:sleep 1d
docker run -it --name c2 --network localnet alpine sh

创建名为“c2”的容器,并接入“c1”所在的localnet网络。
docker run -d --name test1 --nework none nginx /bin/sh -c "while true;do sleep 3600;done"

网络:none 镜像:nginx

单主机网络模式:

host:使用宿主机的ip和端口。

none:该模式关闭了容器的网络功能,与宿主机、与其他容器都不连通。(手动配置)

docker network create -d macvlan \

--subnet=主机ip/24 \

--gateway=主机网关 \

-o parent=ens33 mac1

查看容器位置:

ls /var/lib/docker

ls /var/lib/docker/containers

创建和管理容器卷:

卷是持久化。

docker volume create(创建卷) 卷名

docker volume inspect(查看卷) 卷名

使用prune会询问是否要删除

使用rm则会直接删除

docker volume prune(删除所有不用的)

docker volume rm(删除一个或多个)

挂载卷:

-v

--mount <键>=<值>,<键>=<值>

docker run -it --mount source=myvol2,destination=/vol --name c03 centos

键是固定的。

docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名

docker run -it -v /var/log:/word centos

容器内创建的文本文件与宿主机相关联

更改容器内的文本文件或宿主机的文本文件,容器和宿主机都会发生改变。

就算删除容器,文本文件也会保留在宿主机里面。

卷就是文件夹,在宿主机里面和容器里面存在。

compose文件:

每个冒号与后面的参数之间都要加一个空格。

version:3.5(版本号)(compose的版本)

service:服务

  web-fu:

    build:.

    command(相当于CMD):python app.py(打开python文件)

    ports:(端口)

    network:(这个服务的网络)

    volumes:(卷)

  redis:

networks:

volumes:

(用空格空开)

分成了三层key。

可以用-f来制定

docker-compute up(构建所需的镜像,创建容器和卷)

停止应用并删除(容器和网络删除):

docker-compose down

查看应用状态:

docker-compose ps

查看进程:

docker-compose top

停止应用:

docker-compose stop

对于已停止的应用,进行删除。

docker-compose rm

重启应用:

docker-compose restart

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值