docker部署搭建使用

简介

什么是Docker?

Docker是开发人员和系统管理员使用容器开发、部署和运行应用程序的平台。使用Linux容器来部署应用程序称为集装箱化。使用docker轻松部署应用程序

Docker将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了Docker,就不用担心环境问题。

总体来说,Docker的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样

部署安装

Centos7上安装docker

依赖安装:

yum install -y yum-utils device-mapper-persistent-data lvm2

-阿里源安装:

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

docker安装:

 yum install docker-ce   # 安装指定版本,例如yum install -y docker-ce-18.09

启动并加入开机自启

systemctl start docker
systemctl enable docker

修改docker数据存放目录位置(默认目录是/var/lib/docker,这里防止/目录满我修改到数据盘内)和镜像加速

vim /etc/docker/daemon.json

{
  "graph": "/data/docker",
  "registry-mirrors": ["https://01xxgaft.mirror.aliyuncs.com"]
}

重启docker载入新配置:

systemctl restart docker

基本使用

这里可以docker --help查看所有用法,下面是比较常用的

镜像获取查看

镜像搜索:

  • docker search 想搜索的镜像包名 (例如:docker search nginx
  • 镜像下载:docker pull 想下载的镜像包名 (例如:docker pull nginx
  • 查看本地所有的镜像:docker image ls

容器启动和管理

  • 容器启动:docker run -d 镜像名 (直接后台启动容器 例如:docker run -d nginx
  • 容器交互模式启动:docker run -d -ti 镜像名 /bin/bash (使用交互模式启动容器 例如:docker run -d -ti centos /bin/bash
  • 容器启动打上标记名:docker run -d --name=标记名 镜像名 (给容器打上标记名 例如:docker run -d --name=test_nginx nginx
  • 容器启动映射端口:docker run -d -p 需要映射的宿主机端口:容器端口 镜像名 (将容器端口映射到宿主机 例如:docker run -d -p 8080:80 nginx 这里就将容器的80端口映射到了宿主机的8080端口)
  • 进入容器内部:docker exec -ti 镜像名 /bin/bash (进入容器内部 例如:docker exec -ti centos /bin/bash 推出时按住ctrl不放,另一个只手按p,然后再按q,这样就是安全退出,容器也不会死掉,如果是用交互模式运行的,直接exit退出就行)

镜像和容器的查看停止与删除

  • 查看正在运行的容器,这里会显示各种信息:docker ps 在这里插入图片描述

  • 显示所有的容器,包括已经停止运行的:docker ps -a

  • 停止容器:docker stop 容器id或者标记的name (这里id可以docker ps 看到,标记的name是启动时你设置的,例如停止上图的nginx:docker stop 7baea3ea0701docker stop nginx_test1

  • 删除容器:docker rm 容器id或者标记的name (主要用于删除已经停止运行的容器,但是容器必须是停止状态才能删除,例如:docker rm 7baea3ea0701docker rm nginx_test1

  • 删除镜像:docker rmi 镜像名 (主要用于删除镜像 例如:docker rmi nginx

镜像的各种打包

  • 将当前运行的容器状态打包成镜像:docker commit -m '提交内容' -a '提交人' 已启动并修改过的容器名 新的镜像名以及版本号 已启动并修改过的容器名 新的镜像名以及版本号 (主要用于将运行中的容器进入内部修改后将其打包成新的镜像)
    • 这里我拿上图的nginx来打包 例如:docker commit -m 'test' -a 'test' nginx_test1 nginx:testv1.0.0
  • 使用dockerfile打包:docker build -t 新的镜像名以及版本号 目录位置 (这里是使用dockerfile进行打包,需要新建一个目录并在里面创建一个Dockerfile文件)
    • 例如,我新建一个nginxfile目录 mkdir nginxfile &&; cd nginxfile && touch Dockerfile

    • 编辑Dockerfile内容,格式为docker部署搭建使用_第1张图片

    • FROM 镜像名 RUN 打包过程中执行的命令,可以有多个,当有多个时用一条RUN,然后用 && 和 \ 来连接,否则或创建多层镜像 CMD 运行容器时执行的命令,只能有一个生效

    • 注意:CMD内的内容必须是前台运行的程序,否则后台后容器会挂掉,因为容器启动时会记住CMD后面这个命令执行的pid,并将其标识为1,如果该进程没有存活,容器会认为任务已经运行结束,会自动挂掉,上面我将nginx前台启动

镜像的导入导出

  • 镜像文件导出:docker save -o 保存的文件位置 镜像名 (例如:docker save -o /tmp/nginx.tar.gz nginx
  • 镜像文件导入:docker load < 镜像包位置 (例如 docker load < /tmp/nginx.tar.gz nginx

容器和宿主机的数据交互

  • 拷贝文件:docker cp 文件位置 容器id或标记的name:容器内位置 (将宿主机内文件拷贝到容器内,也可以反着来将容器内文件拷贝出来,例如:docker cp /tmp/1.txt nginx_name:/tmp/ 反向拷贝:docker cp nginx_name:/tmp/ /tmp/1.txt
  • 挂载本地目录:docker run d -v 宿主机目录:容器内目录 镜像名(将本地目录映射挂载到容器内目录,例如:docker run d -v /tmp/logs:/data/logs nginx

如果觉得该文章对你有帮助的话请给我点个吧,感谢

你可能感兴趣的:(k8s学习,docker,容器,运维)