docker 个人学习笔记

Docker的常用命令
帮助命令
docker version	# 显示docker的版本信息
docker info		# 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help	
镜像命令
查看本地主机所有镜像
docker images 	# 查看本地主机所有镜像
-a				# 列出所有的镜像
-q				# 只显示镜像id
搜索镜像
docker search xxx	# 搜索镜像
--filter=STARS=3000	# 搜索出来的镜像就是STARS大于3000的
下载镜像
docker pull xxx			# 下载镜像
#例
docker pull mysql		# 下载最新版mysql镜像
docker pull mysql:5.7	# 下载5.7版本的mysql镜像
删除指定镜像
docker rmi -f 镜像id					# 删除指定镜像
docker rmi -f 镜像id 镜像id 镜像id	 # 删除多个镜像
docker rmi -f $(docker images -aq)	 # 删除所有镜像
容器命令
新建容器并启动
docker run [可选参数] image

# 参数说明
--name='Name'		# 容器名字如:tomcat01 tomcat02 用来区分容器
-d					# 后台方式运行
-it					# 使用交互方式运行,进入容器查看内容
-p					# 指定容器的端口 -p 8080:8080
	-p ip:主机端口:容器端口
	-p 主机端口:容器端口(常用)
	-p 容器端口
	容器端口
-P					# 随机指定端口

# 例
docker run -it centos /bin/bash	# 启动并进入容器
列出所运行的容器
docker ps	# 列出当前正在运行的容器
-a			# 列出当前正在运行的容器+带出历史运行过的容器
-n=?		# 显示最近创建的容器
-q			# 只显示容器的编号
退出容器
exit			# 直接容器停止并退出
ctrl + P + Q	# 容器不停止退出
删除容器
docker rm 容器id					# 删除指定的容器不能删除正在运行的容器,如果要强制删除 rm -f
docker rm -f $(docker ps -aq)	 # 删除所有的容器	
docker ps -a -q|xargs docker rm
启动和停止容器的操作
docker start 容器id	# 启动容器
docker restart 容器id	# 重启容器
docker stop 容器id	# 停止当前容器 
后台启动容器
docker run -d centos

# 问题docker ps,发现centos 停止了

# 常见的坑,docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
查看日志
docker logs -f -t --tail 数字 容器
# 例子
docker logs -tf --tail 10 容器id

-tf				# 显示日志
--tail number	# 要显示日志条数	
查看容器中进程信息
docker top 容器id
查看镜像的元数据
docker inspect 容器id
进入容器
# 方式一
docker exec -it 容器id bashShell

# 例
docker exec -it dce7b8617bf /bin/bahs

# 方式二
docker attach 容器id

# 例
docker attach dce7b8617bf

# 区别
docker exec 	# 进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach	# 进入容器正在执行的终端,不会启动新的进程 
从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 目的主机路径
# 例
docker cp b78456025116:/home/test.java /home
几个注意点
docker run -it --rm tomcat:9.0	#一般用来测试,用完立刻删除
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2 #增加内存限制,修改配置文件-e 环境配置修改
commit镜像
docker commit 提交容器成为一个新的副本

docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]
容器数据卷
使用数据卷
docker run -it -v 主机目录:容器内目录
# 例
docker run -it -v /home/ceshi:/home centos /bin/bash
具名挂载和匿名挂载
# 匿名挂载
-v 容器内路径
docker run -d -P --name nginx01 -v /etc/nginx nginx

# 查看所有的卷的情况
docker volume ls

# 具名挂载
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx

# 查看一下这个卷
docker volume inspect juming-nginx


# 区分具名挂载还是匿名挂载,还是指定路径挂载
-v 容器内路径		 	# 匿名挂载
-v 卷名:容器内路径 		# 具名挂载
-v /宿主机路径:容器内路径		# 指定路径挂载

拓展
# 通过 -v 容器内路径:ro rw 改变读写权限
ro	readonly	# 只读
rw	readwrite	# 可读可写

# 例
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx

# ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部无法操作
数据卷容器
# 例 多个mysql实现数据共享
docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql:5.7
Dockerfile
初识Dockerfile

Dockerfile就是用来构建docker 镜像的构建文件,命令脚本!

# 创建一个dockerfile文件,名字可以随机 建议 Dockerfile
# 文件中的内容 指令(大写) 参数
FROM centos

VOLUME ["volume01","volume02"]

CMD echo "----end-----"

CMD /bin/bash
docker build -f /home/docker-test-volume/dockerfile1 -t kuangshen/centos:1.0 .
Dockerfile指令
FROM		# 基础镜像,一切从这里开始构建
MAINTAINER 	# 镜像是谁写的,姓名+邮箱
RUN			# 镜像构建的时候需要运行的指令
ADD			# 步骤,tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR		# 镜像的工作目录
VOLUME		# 挂载的目录
EXPOSE		# 保留端口配置
CMD			# 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT	# 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD		# 当构建一个被继承DockerFile这个时候就会运行ONBUILD的命令,触发指令。
COPY		# 类似ADD,将我们文件拷贝到镜像中
ENV			# 构建的时候设置环境变量
# 编写Dockerfile的一个示例
FROM centos
MAINTAINER xxxx<123456@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

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

EXPOSE 80

CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash


# 通过这个文件构建镜像
docker build -f dockerfile文件路径 -t 镜像名:[tag]
docker build -f mydockerfile-centos -t mycentos:0.1 .
# 列出本地进行的变更历史
docker history 镜像id
发布镜像
# dockerhub
docker login -u username
Password:

# 增加一个tag
docker tag 镜像id kuangshen/tomcat:1.0

# push上去
docker push kuangshen/tomcat:1.0
Docker网络
容器互联
–link
docker run -d -P --name tomcat03 --link tomcat02 tomcat
# 如果这么配置只能03ping02 反过来ping不通
# ping测试
docker exec -it tomcat03 ping tomcat02
network
docker network ls# 查看当前一些网络
docker inspect 网卡id # 查看网卡下一些东西
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值