docker 常用命令 -- 个人笔记

一 容器与镜像的基础命令

docker run -it centos bash 进入一个centos 容器命令 进入交互模式
docker run -d centos 后台启动
问题 会发现centos 停止了
docker 容器使用后台运行,就必须有一个前台程序,docker没有发现前台应用的时候会发现centos停止了
exit 退出并停止容器
ctrl + P +Q 只是退出容器
docker rm 容器id 删除指定容器
docker rm -f $(docker ps -aq) 删除所有的容器
docker start 容器id 启动一个容器
dicker restart 容器id 重启一个容器
docker stop 容器id 停止一个容器
docker kill 容器id 强制停止当前容器

docker top 容器id 查看容器里的进程

[重要]docker inspect 容器id 查看容器的元数据

docker exec -it 4ccb6627930a bash 进入已运行的容器的命令 开始一个新的终端 可以在里面才做

docker attach 4ccb6627930a 进入已运行的容器的命令 进入容器当前的终端,不会进入一个新的终端

docker cp 容器id:容器内路径 目的主机路径 文件从容器里拷贝到目的主机路径

案例一 docker 部署nginx

docker run -d --name nginx01 -p 8080:80 nginx 运行一个端口映射为8080的nginx

参数说明:

​ -d 后台运行

​ --name 起一个名字

​ -p 暴露的端口

本机访问http://localhost:8080/ 可查看部署是否成功

案例二 docker部署一个tomcat

用完即删除

docker run -it -rm tomcat:9.0

docker run -d --name tomcat01 -p 3355:8080 tomcat

有以下问题:

映射的3355 端口访问的时候 不会出现tomcat而是404

  • webapps目录下的都是空的 因为是阿里云镜像的原因

    解决办法

    cp -r webapps.dist/* webapps 将dist目录下的都拷贝到webapp下

项目的部署 每次都要进去nginx都会非常麻烦 ,我们在容器外部提供一个映射路径,webapps,在外部放置项目,就可以自动同步就ok了

案例三 docker 上部署es和kibana

es暴露的端口很多

es 十分的消耗内存

es 的数据一般都需要放置到安全目录 也就是宿主机里 挂载技术

docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.12.0
参数说明:
	--net somenetwork 网络配置 可暂时忽略
	docker run -d --name elasticsearch  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"* -e ES_JAVA_OPTS="-Xms2g -Xmx2g"  elasticsearch:7.12.0
	 -e ES_JAVA_OPTS="-Xms2g -Xmx2g"   配置文件中设置堆内存 

二 数据卷

将centos的home目录挂载到本机的D盘下的docker目录下

双向绑定

docker run -it -v D:\docker:/home centos bash

docker inspect 容器id 通过下面的mounts 查看是否挂载成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P2gVlcWC-1619703023221)(C:\Users\HQ-F\AppData\Roaming\Typora\typora-user-images\image-20210414235410945.png)]

实战案例【mysql数据同步】:

-v 容器内路径 匿名挂载

-v 卷名:容器内路径 具名 挂载

-v 宿主机路径:容器内路径 指定路径挂载

2.1 指定路径挂碍

挂载的目录 G:\mysql\conf 一定要携程 /G/mysql/conf 不然链接的时候会出现一些错导致连接不上

docker run -d -p 3310:3306 -v /G/mysql/conf:/etc/mysql/conf.d -v /G/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=142212 -d mysql:5.7

2.2 匿名挂载

-v 容器路径

-P 随机映射端口

docker run -it -d -P --name nginx -v /etc/nginx nginx

查看所有的 volume 的情况

docker volume ls

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zd2Ck9A0-1619703023231)(C:\Users\HQ-F\AppData\Roaming\Typora\typora-user-images\image-20210418131143781.png)]

查看匿名挂载目录的外路径

docker volume inspect volume_name

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kruyH6aU-1619703023232)(C:\Users\HQ-F\AppData\Roaming\Typora\typora-user-images\image-20210418131532255.png)]

拓展:

通过 -v 容器内路径:ro/rw 改变读写权限

ro readonly 只读 一旦设定了 容器内路径权限 容器对我们挂出来的内容就有限定了 只能从宿主机进行读写操作 不能从容器内进行写操作

rw readwrite 可读可写(默认的)

三 DockerFile
3.1 介绍:

1、 每个保留关键字(指令) 都必须是大写字母

2、 执行从上到下

3、# 表示注释

4、每一个指令都会创建提交一个新的镜像曾,并提交

3.2 DockerFile的指令

FROM # 基础镜像,一切从这里开始

MAINTAINER #镜像是谁写的,姓名+邮箱

RUN # 镜像的构建需要运行的命令

ADD # 步骤,tomcat镜像 这个tomcat的压缩吧就是需要add进去的内容

WORKDIR # 镜像的工作目录 /bin 或者 /bin/bash

VOLUME # 挂载的目录

EXPOSE # 暴露的端口

CMD # 指定这个容器启动的时候要运行的命令 只有最后一个会生效,可被替代

ENTERYPOINT # 指定这个容器启动的时候要运行的命令 可以追加命令

ONBUILD # 触发指令

COPY # 类似ADD,将我们的文件拷贝到镜像

ENV # 构建的时候设置环境变量

3.3 DockerFile 就是构建docker镜像的构建文件 命令脚本 没有后缀名

dockerfile:

FROM centos
VOLUME [“volume01”,“volume02”]
CMD echo “-------end-------”
CMD /bin/bash

构建命令

【注意】后面有一个点

docker build -f G:\docker-file-volume\dockerfile -t hq/centos:1.0 .

3.4 DockerFile实战测试 构建一个centos

FROM scratch #scratch 是一个最基础的镜像 ,99%的镜像都来自他

1 编写dockerfile文件

FROM centos
MAINTAINER hq1422127065@qq.com

EVN MYPATH / #就是centos进去后的当前目录定义
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo “—dnd----”
CMD /bin/bash

  1. 构建dockerfile

    docker build -f C:\Users\HQ-F\Desktop\centos -t centos2.0

四 数据卷容器

容器之间的同步 (数据卷的同步)

–volumes-from 主容器

这里我们启动我们自己制作的镜像

实现步骤1 、启动一个centos容器

docker run -it --name centos1 hq/centos:1.0

实现步骤2、再启动一个容器实现数据卷的挂载

docker run -it --name centos2 --volumes-from centos1 hq/centos:1.0

检验步骤:

在主容器中的两个数据卷中新建一个文件 然后在次容器中的数据卷中进行查看

同理 次容器数据卷中有任何的改变 主容器一样会进行同步

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值