docker 形象概述及常用的命令

本文介绍了Docker的基本概念,包括为何出现Docker、与传统应用的对比,以及Docker的主要优势。详细讲解了Docker的安装过程,特别是针对CentOS7的步骤。同时,列举了一些基本的Docker命令,如查看版本和系统信息。文章还预告了进阶内容,包括如何构建Python项目的Docker镜像。
部署运行你感兴趣的模型镜像

docker 形象概述及常用的命令

Docker概述

1、Docker为什么出现?
dev-pro 2套环境(部署环境费劲)
项目带上环境安装打包
集群的服务器,不能夸平台

2、开发打包部署上线一套流程
3、app和docker对比
java–apk–发布(应用商店)-用户下载apk安装就可以用
java–jar(环境)–打包项目带上环境镜像 —(docker仓库:商店) — 下载我们的发布镜像 ----直接运行即可

4、Docker的集装箱
jar
隔离

5、历史 2010-2013-2014
后续补充

6、Docker能干嘛
快,节省资源

7、快速的交付和部署(一键运行,打包镜像发布测试)
更便捷的升级和扩容
更简单的系统运维
更高效的计算资源利用(Docker,是内核级别的虚拟化,可以在一个物理机上运行很多的容器实例,压榨服务器性能)


docker 安装

1、centos7, uname -r (系统环境在3.0以上)
1)卸载老的
2)需要的安装包
3)设置镜像的仓库(阿里的)
4)更新yum软件包索引
5)安装docker docker-ce社区
卸载docker
yum remove docker-ce docker-ce-cli containerd.io (卸载依赖)
rm -rf /var/lib/docker (删除资源,docker的默认工作路径)

阿里云镜像加速


Docker 命令

docker version 显示docker的版本信息
docker info 显示docker的系统详细的信息
docker --help

镜像的命令

docker images 
	-a 显示所有
	-q 只显示ID
	-aq
docker search 搜索镜像 mysql --help ;--filter=STARS=3000
docker pull mysql
docker rmi -f (镜像id)
docker rmi -f $(docker images -aq) 删除全部镜像
docker pull mysql:5.7,分层

容器的命令

有了镜像才可以创建容器(docker pull centos) 
	docker run [可选参数] image  
		# 参数说明
		--name="Name" 容器名字
		-d 后台方式运行
		-it  使用交互方式运行,进入容器查看内容 exit 退出容器主机(容器停止加退出)
			crtl + p + q(退出后容器不停止)
		-p 指定容器的端口 -p 8080:8080
			主机端口:容器端口  映射
		-P (大写)随机端口
	docker ps
		-a # 列出当前正在运行的容器
		-n=? # 列出显示最近创建的容器
		-q # 只显示容器的编号,所有
		-l 
	docker rm 容器id 删除不了正在运行的容器
	docker rm -f $(docker ps -q) 删除所有的容器 强制删除
	docker start 容器id
	docker stop 容器id
	docker kill 容器id 强制停止
	-------------------------其他命令
	docker run -d centos (直接停止了,因为没有运行的内容,所有死了,就停了)
		nginx 容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
		
	查看日志
	docker logs -tf 容器id 全部日志
	docker logs -tf --tail n 容器id  刷10条后,打印
	
	查看容器内部中的进程信息
	docker top 容器id
	
	容器的详细信息
	docker inspect 容器id 
	
	进入当前正在运行的容器,通常都是后台运行的
	docker  exec -it 容器id /bin/bash 打开新的终端
	docker attach  -it 容器id  进入容器中的代码,在运行的终端
	
	从容器内拷贝文件到主机内
	docker cp 容器id:容器文件目录  主机地址
	-v 卷,自动同步
	
	docker search ,在dockerhub上面看
	
	----------------- whereis nginx
	安装Nginx
	docker run -d --name nginx01  -p 3344(主机):80(容器) nginx
		-d 后台方式
		--name 给容器取名字
		-p 暴露 映射端口;外网
	curl localhost:3344
	
	docker exec -it 容器id /bin/bash 打开新的终端
	
	我们每次改动应用的Nginx的配置文件,都需要进入容器内部?十分麻烦,我们在容器外部提供一个映射路径,可以直接配置, -v 数据卷
	-----------------
	docker state 查看cpu
	安装Tomact
	docker run -it --rm tomcat:9.0 --一般用于测试,用户就删除
	docker pull tomcat
	docker run -d -p 3355:8080 tomcat1 tomcat
	测试访问没有问题,因为是最简易版本,linux的命令少了,没有webapps,阿里云镜像,默认最小的
	cp webapps.dist/* webapps/
	-----------------
	安装elastic search --吃cpu 慢
	--------------------------------------portainer (先用)
	docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -- privileged=true portainer/portainer

进阶

------------------ commit镜像
我们修改后的镜像进行提交生成新的镜像
docker commit -a="作者" -m="提交描述" 容器id 镜像名称:1.0

---------------------容器数据卷
Mounts 挂载 -v卷
---------------------mysql
docker pull mysql:5.7
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
需要配置密码
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:tag
	-v 数据卷
	-e 环境

--------------匿名挂载 /var/lib/docker/volumes下
docker run -d -P --name nginx01 -v /etc/nginx nginx
docker volume ls

--------------具名挂载 /var/lib/docker/volumes下
docker run -d -P --name nginx01 -v 具名(没有指定绝对路径):/etc/nginx nginx

docker volume inspect 具名

# 通过 -v 容器内路径 :ro,rw 改变读写权限
ro: 只读 (只能通过主机改变,无法容器内改变)
rw:可读可写
docker run -d -P --name nginx01 -v 具名(没有指定绝对路径):/etc/nginx:ro nginx
docker run -d -P --name nginx01 -v 具名(没有指定绝对路径):/etc/nginx:rw nginx

-----------------------------------------------DockerFile
用于构建docker镜像的构建文件,命令脚本
通过这个脚本可以生成镜像
-----------test
FROM centos

VOLUME ["v1","v2"]

CMD echo "-----end-----"
CMD /bin/bash
--------------
docker build -f dockerfile1(dockerfile路径) -t 镜像名称:1.0 . 
---------------------------------------------------数据卷容器(容器之间的数据共享)
docker run -it --name docker02 --volumes-from docker01 镜像名称
数据共享,只要有一个容器在使用,就不会删除。(数据的虚拟备份,物理上只有一份)

多个mysql实现数据共享
结论:容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有日期使用为止。一旦持久化到本地,本地的数据就不会删除的。

1、mysql √
2、dockerfile  √
3、centos的数据卷 √
4、挂载,的数据目录  √
5、构建自己的centos

构建一个python项目的镜像

FROM python:3.8

MAINTAINER hechengcheng<hechengcheng@styd.cn>
ENV MYPATH /usr/local
WORKDIR $MYPATH

# 添加Python
COPY pip3list.txt ./
RUN pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
RUN pip install --upgrade pip

RUN pip install --no-cache-dir -r ./pip3list.txt

COPY . .

#【生产构建】暴露端口 
EXPOSE 9090 
CMD [ "python", "./your-daemon-or-script.py" ]

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值