Docker快速入门教程

1.docker简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。

1.1、Docker虚拟化有三个概念需要理解

  1. 镜像(Image):docker的镜像其实就是模板,跟我们常见的ISO镜像类似,是一个样板。
  2. 容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用。
  3. 仓库(Repository):仓库是存放镜像的地方,分为公开仓库(Public)和私有仓库(Private)两种形式。

1.2、Docker 优点

  • 持续集成
    在项目快速迭代情况下,轻量级容器对项目快速构建、环境打包、发布等流程就能提高工作效率。
  • 版本控制
    每个镜像就是一个版本,在一个项目多个版本时可以很方便管理。
  • 可移植性
    容器可以移动到任意一台Docker主机上,而不需要过多关注底层系统。
  • 标准化
    应用程序环境及依赖、操作系统等问题,增加了生产环境故障率,容器保证了所有配置、依赖始终不变。
  • 隔离性与安全
    容器之间的进程是相互隔离的,一个容器出现问题不会影响其他容器

2.Centos下docker安装

  • centos版本查看

    Docker 要求 CentOS 系统的内核版本高于 3.10,通过 uname -r 命令查看你当前的内核版本

    通过cat /etc/centos-release命令查看centos系统版本命令。

  • 确保 yum 包更新到最新。

    yum update
    
  • 卸载旧版本(如果安装过旧版本的话)

    yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
    
  • 安装依赖包

    yum install -y yum-utils device-mapper-persistent-data lvm2
    
  • 设置yum源

    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    

    可以查看所有仓库中所有docker版本,并选择特定版本安装

    yum list docker-ce --showduplicates | sort -r
    
  • 安装docker

    # 安装最新版本
    yum install docker-ce 
    
    # 指定版本安装
    yum install <docker-version>  # 例如:sudo yum install docker-ce-17.12.0.ce
    
  • 启动docker

     # 启动
    systemctl start docker 
    
    #停止
    systemctl stop docker
    
    #开机启动
    systemctl enable docker  
    
  • 测试 Docker 是否安装正确

    docker run hello-world
    

    或者使用docker version验证,有client和service两部分表示docker安装启动都成功了

  • 镜像加速

    如果在拉取镜像的过程中速度比较慢,此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务

    道客镜像站_DaoCloud道客 https://www.daocloud.io/mirror (配置最方便,一行命令搞定)

    阿里云Docker镜像加速 https://help.aliyun.com/document_detail/60750.html

    腾讯云Docker镜像加速 https://cloud.tencent.com/document/product/1207/45596

    根据我的的体验,现在不配置国内的镜像源,镜像(Image)的拉取速度也是不慢的(也可能与我公司网络比较快有关系😜)

3.Docker镜像 (Image)

Docker镜像仓库地址:https://hub.docker.com/

简单说, Docker镜像是一个不包含Linux内核而又精简的Linux操作系统。

3.1.获取镜像

从 Docker 镜像仓库获取镜像的命令是 docker pull。其命令格式为:

docker pull [Options] NAME[:TAG]
  • 如果不显式指定TAG, 则默认会选择last标签

  • 常用参数[Options]

    -a, --all-tags=true|false : 是否获取仓库中所有镜像,默认为否;

    --disable-content-trust : 跳过镜像内容的校验,默认为 true;

例子:拉取一个redis的镜像,指定安装版本为5.0.14,如果不指定默认为最新版

docker pull redis:5.0.14

# 不指定TAG默认拉取最新的
docker pull redis

3.2 .镜像操作常用命令

  • 查看镜像

    通过使用docker image ls命令,列出本机已有的镜像:

    [root@localhost ~]# docker image ls 
    REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
    redis         5.0.14    c5da061a611a   2 days ago     110MB
    hello-world   latest    feb5d9fea6a5   3 months ago   13.3kB
    

    各个选项说明:

    REPOSITORY:表示镜像的仓库源

    TAG:镜像的标签

    IMAGE ID:镜像ID

    CREATED:镜像创建时间

    SIZE:镜像大小

    # 列出所有本机已有的镜像
    docker image ls
    
    #列出指定的镜像
    docker image ls redis 
    
  • 删除本地镜像

    如果要删除本地的镜像,可以使用 docker image rm 命令或者docker rmi命令,其格式为:

    docker image rm [Options] <Image1> [<Image2> ...]
    
    docker rmi [Options] <Image1> [<Image2> ...]
    
    

    常用参数

    -f, -force : 强制删除镜像,即便有容器引用该镜像;

    -no-prune : 不要删除未带标签的父镜像。

    例如:根据IMAGE ID或者镜像名称删除

    # 根据ID删除
    docker image rm  c5da061a611a #  docker rmi  c5da061a611a
    
    #根据名称删除
    docker image rm redis:5.0.14 #  docker rmi  redis:5.0.14
    
    
  • 镜像的保存(save)和载入(load)

    使用saveload命令,可以对镜像保存和载入

    save命令格式为:

    docker save [OPTIONS] IMAGE [IMAGE...]
    

    OPTIONS 说明:

    • **-o 😗*输出到的文件。

    保存Redis镜像到redis.tar

    docker save redis:5.0.14 -o redis.tar
    

    load命令

    载入保存的镜像

    docker load - i redis.tar
    

    常用参数:

    --input , -i : 指定导入的文件。

    --quiet , -q : 精简输出信息。

  • 查找镜像

    命令格式为:

    docker search [OPTIONS] IMAGE
    

    OPTIONS 说明:

    • **–automated 😗*只列出 automated build类型的镜像;
    • **–no-trunc 😗*显示完整的镜像描述;
    • **-f <过滤条件>:**比如列出收藏数不小于指定值的镜像。
    # 列出收藏数不小于10的java镜像
    docker search -f stars=10 java
    
    #不加参数
    docker search java
    

4.Docker容器(container )

简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。

4.1 新建并启动容器

命令格式如下:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

比如,启动一个redis容器

docker run -d -it --name redis_test -p 6379:6379 redis:5.0.14

OPTIONS 常用参数:

-d, --detach=false: 后台运行容器,并返回容器ID

-i, --interactive=false: 以交互模式运行容器,通常与 -t 同时使用

-t, --tty=false: 为容器重新分配一个伪输入终端,通常与 -i 同时使用

-P, --publish-all=false: 随机端口映射,容器内部端口随机映射到主机的端口

-p, --publish=[]: 指定端口映射,格式为:主机(宿主)端口:容器端口

--name="redis-test": 为容器指定一个名称

-h , --hostname="test": 指定容器的hostname

-e , --env=[]: 设置环境变量,容器中可以使用该环境变量

--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型

-v, --volume : 绑定一个卷

--restart=no:指定容器停止后的重启策略 no:容器退出时不重启 on-failure:容器故障退出(返回值非零)时重启 always:容器退出时总是重启

--rm=false: 指定容器停止后自动删除容器,不能以docker run -d启动的容器

4.2 查看容器

命令格式如下:

docker ps [OPTIONS]
# 列出所有容器
docker ps -a 

输出详情介绍:

  • CONTAINER ID: 容器 ID。
  • IMAGE: 使用的镜像。
  • COMMAND: 启动容器时运行的命令。
  • CREATED: 容器的创建时间。
  • STATUS: 容器状态。
  • PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
  • NAMES: 自动分配或者指定的容器名称。

4.3 启动、重启、终止容器

docker start :启动一个或多个已经被停止的容器

docker stop :停止一个运行中的容器

docker restart :重启容器

命令格式如下:

docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]

例子

#停止
docker stop 6a3e80cb0a27 # 根据容器ID
# 启动 
docker start 6a3e80cb0a27 # 根据容器ID
#重启 
docker restart 6a3e80cb0a27 # 根据容器ID

4.4 删除容器

docker rm :删除一个或多个容器。docker rm命令只能删除处于终止或退出状态的容器,并不能删除 还处于运行状态的容器

#停止
docker stop 6a3e80cb0a27 # 根据容器ID停止
# 删除容器
docker rm 6a3e80cb0a27 

4.5 创建容器

docker create :创建一个新的容器但不启动它。用法同 docker run命令。

命令格式:

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

大部分参数用法与docker run命令参数相同

例子,创建一个tomcat容器

docker create -it --name tomcat8 -p 8080:8080 tomcat:8.5-jre17-temurin

4.6 查看容器日志

docker logs : 获取容器的日志 语法

命令格式:

docker logs [OPTIONS] CONTAINER

常用参数

  • -f : 跟踪日志输出
  • –tail :仅列出最新N条容器日志

查看tomcat运行日志

#查看最新的日志
docker logs -f --tail 1 tomcat8

4.7 进入容器

命令格式:

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS常用参数:

  • -i :即使没有附加也保持STDIN 打开
  • -t :分配一个伪终端

例子,进入redis终端

docker exec -it redis_test redis-cli

进入到bash终端

docker exec -it tomcat8 /bin/bash

使用exit命令可以退出终端

5. Docker实战-常用软的安装

5.1 tomcat安装

  • 拉取tomcat镜像

    docker pull tomcat:8.5.45-jdk8-corretto  #拉取镜像
    
    docker image ls  #查看镜像
    
  • 启动容器

    docker run -itd -p 8080:8080 tomcat:8.5.45-jdk8-corretto --name tomcat8 
    

    启动容器后,就可以在浏览器访问了,http://IP:8080

  • 进入到容器

    docker exec -it t /bin/bash  
    
  • 部署一个简单的html页面

    进入容器后,进入到tomcat的webapps目录

    bash-4.2#  cd /usr/local/tomcat/webapps/
    
    # 在webapps目录下新建一个test目录
    
    mkdir test
    

    在test目录下新建一个html文件

    vi index.html
    

    浏览器访问,http://IP:8080/test/index.html

  • 把文件拷贝到容器

    使用docker cp命令,可以把文件copy到容器的指定目录

     # 把服务器上的test.war 拷贝到tomcat8容器里webapps目录下
     docker cp test.war tomcat8:/usr/local/tomcat/webapps
    

5.2 Mysql安装

参考 https://blog.csdn.net/u014576291/article/details/105890286

  • 拉取镜像

    docker pull mysql:5.7.36
    
  • 启动容器

    docker run -itd --name mysql --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.36 --character-set-server=utf8 --collation-server=utf8_general_ci
    

    docker run -e 设置环境变量,容器中可以使用该环境变量

    参数说明:

    -e MYSQL_ROOT_PASSWORD=123456 参数设置mysql的root的密码123456

    --privileged=true 参数:使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。甚至允许你在docker容器中启动docker容器。

  • 测试Mysql

    # 进入mysql容器终端
    docker exec -it mysql /bin/bash
    
    # 登录mysql
    mysql -uroot -p123456 
    
    # 查看数据库
    show databases;
    

    5.3 Redis安装

    docker pull redis:5.0.14 #拉取redis镜像
    
    docker run -itd --name redis_test -p 6379:6379 redis:5.0.14 #启动redis容器
    
    #连接redis客户端
    docker exec -it redis_test redis_cli 
    
    # 或者进入到终端后链接
    docker exec -it redis_test /bin/bash
    # 执行命令
    ./redis-cli
    docker stop redis_test #停止实例
    

5.4 安装Nginx

参考

 #拉取redis镜像
docker pull nginx:1.21.4-perl

#启动nginx容器
docker run -itd --name nginx -p 80:80 nginx:1.21.4-perl 

# 进入nginx容器终端
docker exec -it nginx /bin/bash

# 查看html目录
cd /usr/share/nginx/html


#配置文件目录
cat /etc/nginx/nginx.conf
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

warybee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值