Docker 入门

Docker

安装Docker

环境准备

  1. 查看系统版本

    [root@VM-12-10-centos ~]# cat /etc/redhat-release
    CentOS Linux release 7.9.2009 (Core)
    
    [root@VM-12-10-centos ~]# cat /etc/os-release
    NAME="CentOS Linux"
    VERSION="7 (Core)"
    ID="centos"
    ID_LIKE="rhel fedora"
    VERSION_ID="7"
    PRETTY_NAME="CentOS Linux 7 (Core)"
    ANSI_COLOR="0;31"
    CPE_NAME="cpe:/o:centos:centos:7"
    HOME_URL="https://www.centos.org/"
    BUG_REPORT_URL="https://bugs.centos.org/"
    
    CENTOS_MANTISBT_PROJECT="CentOS-7"
    CENTOS_MANTISBT_PROJECT_VERSION="7"
    REDHAT_SUPPORT_PRODUCT="centos"
    REDHAT_SUPPORT_PRODUCT_VERSION="7"
    
  2. 查看内核版本

    [root@VM-12-10-centos ~]# uname -r
    3.10.0-1160.15.2.el7.x86_64
    

安装

安装流程

  1. 卸载旧的版本
  2. 需要的安装包
  3. 设置镜像的仓库
  4. 安装docker
  5. 启动docker systemctl start docker
  6. 启动hello-world镜像 docker run hello-world
  7. 查看是否存在hello-world镜像 docker images
  8. 镜像加速

底层原理

Docker 是怎么工作的

Docker是Client-Server结构的的系统

Docker 的常用命令

docker version # 版本信息
docker info # 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help # 帮助命令

一、 镜像命令

  1. docker images
docker images
[root@VM-12-10-centos ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    d1165f221234   2 weeks ago   13.3kB

# 解释
REPOSITORY 镜像的仓库源
TAG			 镜像的标签
IMAGE ID	镜像的ID
CREATED		镜像的创建时间
SIZE		 镜像的大小
Options:
  -a, --all             Show all images (default
                        hides intermediate images)
      --digests         Show digests
  -f, --filter filter   Filter output based on
                        conditions provided
      --format string   Pretty-print images using a
                        Go template
      --no-trunc        Don't truncate output
  -q, --quiet           Only show image IDs
  1. docker search
[root@VM-12-10-centos ~]# docker search mysql
  1. docker pull 下载镜像

    如果不写版本默认为latest,下载方式为分层下载(docker image的核心 联合文件系统)

    指定版本下载:docker pull mysql:5.7

  2. docker rmi 删除镜像

    docker rmi -f $(docker images -aq) 删除所有的镜像


二、容器命令

有了镜像才可以创建容器,下载一个centos来测试学习

  1. 新建容器并启动docker pull centos

    docker run [可选参数] image
    
    # 参数说明
    --name="Name"		容器的名字,用来区分容器
    -d					  后台方式运行
    -it 				  使用交互方式运行,进入容器查看内容
    -p					  指定容端口 -p 8080:8080
    	-p 主机端口:容器端口 (常用)
    	-p 容器端口
    	容器端口
    -P					  随机指定端口
    
    #测试
    # 启动并进入容器
    [root@VM-12-10-centos ~]# docker run -it centos /bin/bash
    [root@b3d28c7229f1 /]#
    
  2. 查看运行的容器

    docker ps 查看运行中的容器

    docker ps -a 查看包括运行过的容器

    docker ps -a -n=? 列出包括运行过的n个容器

    docker ps -q 只显示容器的编号

  3. 退出容器

    exit # 容器停止退出
    Ctrl + P + Q # 容器不停止退出
    
  4. 删除容器

    docker rm 容器id
    docker rm -f $(docker ps -aq) 删除所有的容器
    
  5. 启动和停止容器的操作

    start restart stop kill

三、常用其他命令

start 是启动docker里面创建过的容器,run 是新建容器并运行

  1. 后台启动容器

    # 命令 docker run -d 镜像名
    
    # 问题:docker ps 发现 容器停止了
    # 常见的坑:docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用就会自动停止。
    
  2. docker logs 查看日志信息

  3. docker top 查看容器中的信息

  4. 进入当前正在运行的容器

    # 我们通常容器都是使用后台的方式运行的,需要进入容器,修改一些配置
    
    # 命令
    docker exec -it 容器id bashshell
    
  5. 从容器内拷贝文件到主机上

    docker cp 容器id:容器内路径 目的主机路径

实例

一、安装 nginx

# 1. 搜索镜像
docker search nginx
# 2. 下载镜像
docker pull nginx
# 3. 查看是否已下载
docker images

二、安装 tomcat

# 官方的使用
$ docker run -it --rm tomcat:9.0

# 我们之前的启动都是后台,停止容器之后,容器还是可以查到 docker run -it --rm, 一般用来测试,用完就删除

思考:我们以后部署项目,如果每次都要进入容器就会非常麻烦,是否可以在容器外部提供一个映射路径,在外部放置项目,就自动同步到内部。

三、部署 es + kibana

# 部署的端口很多
# es 十分的耗内存
# es 的数据一般需要放到安全目录 挂载
# --net somenetwork 网络配置
# 启动
$ docker run -d --name elasticsearch  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag

# 通过修改内存限制来处理内存占用过大的问题

可视化

  • portainer (先用这个)

    docker run -d -p 8080:9000 
    --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
    
  • Rancher(CI/CD再用)

什么是portainer

Docker图形化界面管理工具,提供一个后台面板供我们操作,运行,并访问公网

界面

选择本地:

进入之后的面板:

可视化面板平时不会使用。

Docker镜像

特点

Docker镜像是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部,这一层就是我们通常说的容器层,容器之下的都叫镜像层(镜像层无法改变)

提交一个自己的镜像(commit)

docker commit 提交容器成为一个新的副本

# 命令和git类型
docker commit -m="提交容器的描述信息" -a="作者" 容器id 目标镜像名 [TAG]

实战测试:

# 启动默认的Tomcat
# 发现webapps下没有文件
原文地址:https://www.cnblogs.com/mayapony/p/14606061.html