栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker初步了解

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker初步了解

文章目录
  • Docker
  • 1、命令
    • 1.1 镜像命令
    • 1.2 容器命令
    • 1.3 其他命令
  • 2、Commit镜像
  • 3、数据卷
  • 4、挂载
  • 5、Dockerfile
  • 6、数据卷容器
  • 7、Dockerfile构建步骤
  • 8、DockerFile的指令

Docker 1、命令 1.1 镜像命令

docker search mysql --filter=stars=3000
doker pull mysql:5.7 软件:版本号

		docker rmi -f 镜像id 
		docker rmi -f #(docker images -aq) 全部删除
1.2 容器命令

docker pull centos
docker run [参数] image
–name=“Name” 容器名字
-d 以后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器端口 常用 -p主机端口:容器端口

启动并进入容器

docker run -it centos /bin/bash

从容器退回主机并停止

exit

退回主机不停止

Ctrl +q +p

当前运行容器

docker ps

历史运行容器

docker ps -a
  • 删除容器
docker rm 容器id    不能删除正在运行的容器 ,强制删除 rm -f
docker rm -f $(docker ps -aq)	       删除所有容器
docker ps -a -q|xargs docker rm     删除所有容器
docker start
docker restart
docker stop
docker kill
1.3 其他命令
  • 后台启动容器
docker run -d centos

docker ps 时发现centos没有运行,因为使用后台运行,没有前台进程,docker没有应用就会自动停止

  • 查看日志
docker logs -f -t --tail [num] id
  • 脚本一秒打印字符串
docker run -d centos /bin/sh -c "while true;do echo hmf;sleep 1;done"
  • 查看容器中进程信息ps
docker top id
  • 查看镜像的原信息
docker inspect id
  • *进入当前正在运行的容器,进入容器后会开启新的终端新的进程,可以操作(常用)
docker exec -it 容器id 命令行
  • 进入容器的代码,直接进入正在执行的终端,不会启动新的进程
docker attach 容器id
  • 从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 主机路径
  • 步骤
1、搜索镜像先去dockerhub上看版本信息  docker search 
2、下载镜像  docker pull
3、运行测试  docker run -d --name nginx01 -p 3344:80 nginx-d 后台运行  
	--name取名  -p宿主机端口:容器端口       nginx默认80端口
4、curl localhost:宿主端口  查看服务状态
5、进入容器  docker exec -it nginx01 /bin/bash
2、Commit镜像
docker commit -a="hmf" -m="add webapps app" 98c6b481759c tomcat01:1.0
3、数据卷
  • 使用数据卷(数据同步)

    docker run -v 宿主机地址:容器地址 centos /bin/bash
    
  • 启动mysql
    -d后台运行
    -p端口映射
    -v卷挂载
    -e环境配置
    –name容器名字

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
4、挂载
  • 匿名挂载

    docker run -d -p 宿主机端口:容器端口 
    --name 取名 -v 容器内路径:rw 容器 
    
  • 具名挂载(常用)

    docker run -d -p 宿主机端口:容器端口 
    --name 取名 -v 卷名:容器内路径:ro 容器 
    
  • 指定路径挂载

    docker run -d -p 宿主机端口:容器端口 
    --name 取名 -v /宿主机路径:容器内路径:ro 容器 
    
  • :ro只读 :rw可读可写(默认)

    所有的docker容器内的卷,在没有指定目录下都在 /var/lib/docker/volumes/xxxx/_data
    
5、Dockerfile

Dockerfile就是用来构建docker镜像的构建文件

通过脚本生成镜像,镜像是分层的,脚本是一个一个的命令,每个命令就是一层

创建一个dockerfile文件编写文件中内容vim dockerfileFROM centosVOLUME ["volume01","volume02"]CMD echo "----end----"CMD /bin/bash执行builddocker build -f dockerfile -t hmf/centos:1.0 .				

文件名字		容器名字	标签tag启动自己生成的容器docker run -it id /bin/bash
6、数据卷容器

多个mysql同步数据

通过自己的镜像启动三个容器:
第一个 docker01docker run -it --name docker01 hmf/centos:1.0

第二个 docker02 并挂载 docker01docker run -it --name docker02 --volumes-from docker01 hmf/centos:1.0

在docker01的vloume01中创建一个文件同步到了docker02中docker01:数据卷容器  --vloume01-from就好比继承父类

第三个 docker03 并挂载 docker01docker run -it --name docker03 --volumes-from docker01 hmf/centos:1.0

再在docker03的vloume01中创建一个文件同步到了docker01中将第一个docker01

删除 docker rm -f 474ac7ed3300

发现 docker02 docker03还具有数据,依旧可以访问

多个mysql实现数据共享

第一个	mysql01docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
第二个	mysql02docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02	--vloumes-from mysql02 mysql:5.7
这就实现了俩个容器数据同步!
  • 结论

容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止!

但是一旦持久化到了本地,这个时候,本地的数据是不会删除的!

7、Dockerfile构建步骤

1、编写一个dockerfile文件

2、docker build 构建成一个镜像

3、docker run 运行镜像

4、docker push 发布镜像(DockerHub、阿里云镜像仓库!)

开发,部署,运维…缺一不可

DockerFile:构建文件,定义了一切的步骤,源代码

Dockerimages:通过DockerFile构建生成的镜像,最终发布和运行的产品!

Docker容器:容器就是镜像运行起来提供服务器

8、DockerFile的指令

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/277123.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号