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" ]
本文介绍了Docker的基本概念,包括为何出现Docker、与传统应用的对比,以及Docker的主要优势。详细讲解了Docker的安装过程,特别是针对CentOS7的步骤。同时,列举了一些基本的Docker命令,如查看版本和系统信息。文章还预告了进阶内容,包括如何构建Python项目的Docker镜像。
12万+

被折叠的 条评论
为什么被折叠?



