Linux下安装及使用Docker

一、Docker简介

    1、简单说一下

              Docker是一个开源的、性能非常好(好到毫秒级别)的、能给使用者带来极大方便的 应用容器引擎。

     2、那,什么是应用容器引擎呢?

              有好多应用软件,比如tomcat,比如mysql等等,我们拿到一台新的电脑,很干净,上面什么也没有,作为一个开发人员,你势必要把你需要的软件全都安装在你的新电脑上。在以前,那么多的软件,你需要一个一个去安装、去配置,浪费时间又浪费精力。现在呢,如果你使用Docker,那么这么多的工作都不需要你去做了,docker会帮你做好。

      3、Docker功能

               Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,并将镜像发布出去,其他使用者可以直接使用这个镜像。运行中的这个镜像则称之为容器,容器的启动是非常快速的,类似Windows里面的ghost操作系统,安装好之后什么都有了。

       4、Docker的核心概念:

                Docker主机(Host):安装了docker程序的机器(Docker直接安装在操作系统之上)

                Docker客户端(Client):客户端连接docker主机进行操作(可通过命令行或其他工具使用docker)

                Docker仓库(Registry):用来保存各种打包好的软件镜像

                Docker镜像(Images):软件打包好的镜像,放在Docker仓库中

                Docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用

二、使用Docker的步骤

      1、安装Docker(以CentOS为例进行安装)

           a、查看CentOS内核版本:(Docker要求CentOS系统内核版本需要高于或至少为3.10)

[root@app1 ~]# uname -r
3.10.0-693.2.2.el7.x86_64

           b、若内核版本低于3.10则需要升级内核(选做)

[root@app1 ~]# yum update

             这个命令执行时间较长,需要安装很多东西。耐心等待吧。

           c、安装Docker

[root@app1 ~]# yum install docker

           安装期间需要选择y进行确认安装。当出现“complete!”字样即安装成功。

           d、启动Docker

[root@app1 ~]# systemctl start docker
[root@app1 ~]# 

#查看docker版本号
[root@app1 ~]# docker -v
Docker version 1.13.1, build 07f3374/1.13.1

           e、我们的机器有可能会经常手动关机或者有时候会异常关闭,当我们每次重启之后再去启动Docker可能会比较麻烦,我们可以设置其开机自启动。

[root@app1 ~] systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

           f、停止Docker

[root@app1 ~]# systemctl stop docker
[root@app1 ~]# 

      2、镜像操作

           a、搜索镜像:去Docker仓库找到这个软件对应的镜像(以tomcat为例)

[root@app1 ~]# docker search tomcat
INDEX       NAME                                                 DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/tomcat                                     Apache Tomcat is an open source implementa...   2224      [OK]       
docker.io   docker.io/tomee                                      Apache TomEE is an all-Apache Java EE cert...   59        [OK]       
docker.io   docker.io/dordoka/tomcat                             Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 ba...   50                   [OK]
docker.io   docker.io/davidcaste/alpine-tomcat                   Apache Tomcat 7/8 using Oracle Java 7/8 wi...   31                   [OK]
docker.io   docker.io/bitnami/tomcat                             Bitnami Tomcat Docker Image                     27                   [OK]
docker.io   docker.io/consol/tomcat-7.0                          Tomcat 7.0.57, 8080, "admin/admin"              16                   [OK]
docker.io   docker.io/cloudesire/tomcat                          Tomcat server, 6/7/8                            14                   [OK]
docker.io   docker.io/tutum/tomcat                               Base docker image to run a Tomcat applicat...   11                   
docker.io   docker.io/meirwa/spring-boot-tomcat-mysql-app        a sample spring-boot app using tomcat and ...   10                   [OK]
docker.io   docker.io/aallam/tomcat-mysql                        Debian, Oracle JDK, Tomcat & MySQL              9                    [OK]
docker.io   docker.io/jeanblanchard/tomcat                       Minimal Docker image with Apache Tomcat         8                    
docker.io   docker.io/arm32v7/tomcat                             Apache Tomcat is an open source implementa...   6                    
docker.io   docker.io/maluuba/tomcat7-java8                      Tomcat7 with java8.                             3                    
docker.io   docker.io/rightctrl/tomcat                           CentOS , Oracle Java, tomcat application s...   3                    [OK]
docker.io   docker.io/amd64/tomcat                               Apache Tomcat is an open source implementa...   2                    
docker.io   docker.io/arm64v8/tomcat                             Apache Tomcat is an open source implementa...   2                    
docker.io   docker.io/fabric8/tomcat-8                           Fabric8 Tomcat 8 Image                          2                    [OK]
docker.io   docker.io/99taxis/tomcat7                            Tomcat7                                         1                    [OK]
docker.io   docker.io/1and1internet/debian-9-java-8-tomcat-8.5   Our tomcat 8.5 image                            0                    [OK]
docker.io   docker.io/cfje/tomcat-resource                       Tomcat Concourse Resource                       0                    
docker.io   docker.io/jelastic/tomcat                            An image of the Tomcat Java application se...   0                    
docker.io   docker.io/oobsri/tomcat8                             Testing CI Jobs with different names.           0                    
docker.io   docker.io/picoded/tomcat7                            tomcat7 with jre8 and MANAGER_USER / MANAG...   0                    [OK]
docker.io   docker.io/s390x/tomcat                               Apache Tomcat is an open source implementa...   0                    
docker.io   docker.io/swisstopo/service-print-tomcat             backend tomcat for service-print "the true...   0                    

            其实此命令相当于从https://hub.docker.com(Docker Hub)下Search.

可以在此处看版本号,即TAGS

            其中,name看io/后面的内容,description是镜像的描述,stars表示有多少千人正在关注,official表示该镜像是否是官方提供,automated表示该镜像是否是自动构建的,有[ok]的是自动构建,没有的需要我们自定义构建。

        b、拉取镜像

[root@app1 ~] docker pull tomcat

            等待其下载完成。这个命令下载的默认的tomcat,默认标签 latest。

            当然也可以下载指定版本的软件镜像。

#指定版本的写法,以7-jre7-slim为例
[root@app1 ~] docker pull tomcat:7-jre7-slim

        c、查看所有本地镜像

[root@app1 ]~ docker images
REPOSITORY         TAG          IMAGE ID             CREATED          SIZE
docker.io/tomcat   7-jre7-slim  016bbb6bd994         2 days ago       107.2 MB
docker.io/tomcat   latest       108db0e7c85e         3 days ago       94.8 MB

        d、删除指定的本地镜像

​#docker rmi image-id
[root@app1 ]~ docker rmi 016bbb6bd994

      3、容器操作:

             使用Docker运行这个镜像,这个镜像就会生成一个Docker容器。对容器的启动、停止即对软件的启动或停止

          a、运行容器

# docker run --name container-name -d image-name
# 其实这是错误的写法,后面会说到正确的写法
[root@app1 ~]# docker run --name mytomcat -d tomcat:latest
1235c491d49aa4428fcaf1a48986403af71a01f48bb3e9700f7871b0418f0a11

                --name:自定义容器名

                -d:后台运行

                image-name:指定镜像模板

          b、查看运行中的容器

[root@app1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
1235c491d49a        tomcat:latest       "catalina.sh run"   About a minute ago   Up About a minute   8080/tcp            mytomcat

#显示所有docker,包括已经停止的
[root@app1 ~]# docker ps -a

               加上-a可以查看所有正在运行的容器。但现在的tomcat是不能使用的,得做端口映射,所以需要先停止、删除这个容器。

          c、停止、启动当前运行中的容器

#停止
#docker stop container-name或者docker stop container-id
[root@app1 ~]# docker stop 1235c491d49a
1235c491d49a

#启动
[root@app1 ~]# docker start 1235c491d49a
1235c491d49a

          e、删除指定容器

#删除docker容器
#docker rm container-id
[root@app1 ~]# docker rm 1235c491d49a
1235c491d49a

          f、启动一个做了端口映射的tomcat

#重新启动一个带端口映射的tomcat容器 --name mytomcat也可以不指定
[root@app1 ~]# docker run --name mytomcat -d -p 8082:8080 tomcat
95c181142c3a98323158e3879f5a81085b5b46452f97287de60623f126178e30

            将主机(linux)8082端口映射到容器的8080端口。配置好后即可使用IP:8082访问tomcat首页(需要关闭防火墙)。

          h、容器日志

#docker logs container-name或container-id
[root@app1 ~]# docker logs 1235c491d49a

          g、更多命令

              https://docs.docker.com/engine/reference/commandline/docker/

三、扩展

   安装mysql值得注意的地方:

docker run --name mysqldev -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

               ↑ mysql容器的启动:-p 3306:3306指定端口映射, -e MYSQL_ROOT_PASSWORD=123456,指定mysql的root用户的密码为123456。若不指定,mysql不能正常运行。 

docker run --name mysql02 -p 3306:3306 -v /mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql:tag

               ↑ 把主机的/mysql/conf文件夹挂载到mysql docker容器的/etc/mysql/conf.d文件夹里面,以后修改mysql的配置文件只需要把mysql配置文件放在/mysql/conf文件夹下即可。

docker run -p 3307:3306 --name mysql03 -e MYSQL_ROOT_PASSWORD=123456 -d msyql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicaode_ci

               ↑ 设置一些参数,使mysql的编码为utf-8

四、结束

      对Docker容器的启动、停止即对软件的启动、停止。

      我们可以在一台服务器上生成多个容器,使用不同端口访问即可。

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值