Docker简介及常用指令

Docker简介

 在理解docker之前,先来理解一下容器这个概念。我们这里所说的容器就是装代码或者软件的工具。在docker未诞生之前同一套代码会经过开发、测试、运维部署这三套大的流程,这么做会有一个缺点:同样的代码在我这里运行没问题,怎么在你那里就有错了呢?这个原因可以归结为两者之间的运行环境不同。为了解决这个问题google公司使用go语言开发了docker。

Docker组件

  1. Docker是一个客户端-服务器(C/S)架构程序。客户端只需要向服务端,服务器或者守护进程将完成所有工作并返回结果。
  2. Docker镜像,镜像是构建docker的基石,也是容器的“源代码”,镜像体积小易于分享、存储、和更新。
  3. 注册中心(Registry),Docker用注册中心来保存镜像,可以理解为maven的中央仓库。
  4. Docker容器,Docker可以帮助你构建和部署容器,你只需要把自己的应用程序或者服务打包放进容器即可。容器是基于镜像启动起来的,容器可以运行一个或多个进程。一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件或者服务。

Docker安装与启动

所处环境Centos7
1. 安装: yum install docker -y,安装之后通过docker -v查看docker版本号
2. 启动:systemctl start docker
3. 停止:systemctl stop docker
4. 重启:systemctl restart docker
5. 查看状态:systemctl status docker
6. 开机启动:systemctl enable docker
此图表示docker启动
上图表示docker已启动

Docker镜像操作

 Docker镜像是由文件系统叠加而成(是一种文件的存储形式)。最低端是一个文件引导系统,即bootfs,这很像典型的Linux/Unix的引导文件系统。当一个容器启动后,它将会被移动到内存中,而引导文件系统则会被卸载,以流出更多的内存供磁盘镜像使用。Docker容器启动是需要一些文件的,而这些文件就可以称为Docker镜像。下面介绍镜像相关指令:
1. 列出所有镜像:docker images
images

  • REPOSITORY:镜像所在的仓库名称
  • TAG:镜像标签
  • IMAGE ID:镜像 ID
  • CREATED:镜像的创建日期(不是获取该镜像的日期)
  • SIZE:镜像大小
    为了区分同一仓库下的不同镜像,Docker提供了一种能称为标签的功能(Tag)。这种机制使得同一仓库中可以存储多个版本镜像。

2.搜索镜像:docker search 镜像名称
search

  • NAME:仓库名称
  • DESCRIPTION:镜像描述
  • STARS:用户评价,反应一个镜像的受欢迎程度
  • OFFICIAL:是否官方

3.拉取镜像:docker pull 镜像名称
4.删除镜像:docker rmi 镜像ID

Docker容器操作

查看容器

  • 查看正在运行的容器:docker ps
  • 查看所有的容器(启动过的历史容器):docker ps -a
    ps-a

创建与启动容器

创建容器常用的参数说明:

  • 创建容器命令:docker run
  • -i:表示运行容器
  • -t:表示容器启动后会进入命令行,加上这个参数后,容器创建就能登陆进去。即分配了一个伪终端。
  • --name:为创建的容器命名
  • -v:表示目录映射关系(前者是宿主机目录,后者是容器中的目录)
  • -d:创建一个守护式容器在后台运行
  • -p:端口映射,前者是宿主机端口,后者是容器内端口

1.交互式容器:docker run -it --name=mycentos centos:7 /bin/bash,该类型容器退出容器之后容器就停止。
2.守护式容器:docker run -di --name=mycentos2 centos:7,登录守护式容器docker exec -it container_name /bin/bash,退出容器后不会停止容器

停止与启动容器

  • 停止正在运行的容器:docker stop $CONTAINER_NAME/ID
  • 启动已运行过的容器:docker start $CONTAINER_NAME/ID

文件拷贝

将宿主机的文件拷贝到容器内:docker cp 需要拷贝的文件或者目录 容器名称:容器目录
将文件从容器拷贝到宿主机:docker cp 容器名称:容器目录 需要拷贝的文件或者目录

目录挂载

我们可以在创建容器的时候,将宿主机与容器内的目录进行映射,这样就可以通过修改宿主机某个目录文件从而去影响容器。
语法:docker run -di -v 宿主机目录:容器目录 --name=容器名 镜像名:标签 --privileged=true

查看容器IP地址

docker inspect 容器名,之后会有IPAddress 这个key就是容器的IP

删除容器

docker rm $CONTAINER_ID/NAME

部署应用

MySql部署

  1. 拉取镜像:docker pull mysql
  2. 查看镜像:docker images
  3. 创建mysql容器:docker run -di --name 容器名 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql,33306为宿主机端口映射为容器内端口3306,也可以将宿主机的3306端口映射给容器的3306端口,mysql密码为123456
  4. 进入mysql容器,登陆mysql:docker exec -it my_mysql /bin/bash,登陆mysqlmysql -u root -p 密码为:123456
  5. 远程登陆mysql,直接连接宿主机的ip及端口(33306)

Tomcat部署

  1. 拉取镜像:docker pull tomcat
  2. 查看镜像:docker images
  3. 创建tomcat容器:docker run -di --name=my_tomcat -p 9000:8080
    -v /usr/local/myhtml:/usr/local/tomcat/webapps --privileged=true tomcat:7-jre7
    ,之后直接访问宿主机的9000端口即可。

Nginx部署

  1. 拉取镜像:docker pull nginx
  2. 创建 Nginx 容器:docker run -di --name=pinyougou_nginx -p 80:80 nginx/
  3. 测试:在浏览器地址栏输入宿主机IP即可

Redis部署

  1. 拉取镜像:docker pull redis
  2. 创建 Nginx 容器:docker run -di --name=my_redis -p 6379:6379 redis
  3. 测试:打开本机的redis目录,在命令行输入:redis-cli -h 宿主机IP
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值