学习笔记(一)---Docker概述

本文介绍了Docker的基础知识,包括安装步骤、常用命令、镜像、容器、数据卷、Dockerfile以及Docker在解决环境一致性问题上的作用。通过实例演示了如何启动和管理容器,以及如何部署Nginx和ES服务。此外,还提到了使用Portainer作为可视化管理工具。
摘要由CSDN通过智能技术生成

Docker概述

Docker安装

Docker命令

容器的数据卷

容器数据库

DockerFile

网络

IDEA整合Docker

集群Docker compose

Docker swarm=简化版的k8s

CICD

Docker为什么会出现?

  • 应用在我的环境运行有问题,到你的环境怎么就运行不了了?项目能不能跟着环境一块打包?
  • 版本更新导致服务不可用?
  • es hadoop mysql jdk配置太麻烦了 不能跨环境

Docker解决哪些问题

  • 开发人员把jar包+环境打包成一个镜像->把镜像放到仓库,运维人员只需要下载我们发布的镜像,直接运行即可(docker镜像:jdk+mysql+最核心的环境)
  • 打包装箱 每个箱子都是隔离的 通过隔离机制可以将服务器利用到极致

Docker的好处

  • 秒级启动
  • 比虚拟机更轻量级

 Docker的名词

  • 镜像(image):好比是一个模板,可以通过这个镜像来创建容器服务,通过镜像可以创建多个容器,最终运行是在容器里的;
  • 容器(container):容器是通过镜像来创建的,容器可以启动、删除、停止等;
  • 仓库(repository):仓库就是用来存放镜像的地方;仓库分为共有仓库和私有仓库。

安装Docker

1. 卸载旧的版本

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2. 下载安装包

$ yum install -y yum-utils

3. 设置镜像仓库(这里采用阿里云的,国外的太慢了。。。)

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

4. 更新yum索引

$ yum makecache fast

5. 安装docker

$ yum install docker-ce docker-ce-cli containerd.io

6. 确定是否安装成功

$ docker version

7. 启动docker

$ systemctl start docker

8. 测试hello-world

$ docker run hello-world

到这一步,docker就安装完成了!!!

9. 查看下载的镜像

$ docker images

10. 卸载docker

#1. 卸载依赖
$ yum remove docker-ce docker-ce-cli containerd.io
#2. 删除docker资源(docker的默认工作路径:/var/lib/docker)
$ rm -rf /var/lib/docker

 11. 配置镜像加速器(通过修改daemon配置文件/etc/docker/daemon.json来使用加速器)---具体步骤可查看阿里云官网-容器镜像服务-镜像加速器;

输入docker run xxx后回车都经历了哪些

Docker常见命令

docker version
docker info
docker 命令 --help
docker --help  #显示docker的所有命令

镜像命令:

docker images #展示所有镜像
docker search mysql #搜索镜像
docker search mysql --filter=STARS=2000 #搜索mysql镜像并过滤出STARS数在2000及2000以上的
docker pull mysql #下载mysql镜像(不加tag默认下载最新的)
docker pull mysql:5.7 #下载mysql 5.7版本
docker rmi 镜像ID #根据镜像ID删除镜像
docker rmi -f $(docker images -aq) #删除所有镜像

容器命令:

新建容器并启动

docker run [可选参数] image
#可选参数说明
-name #容器名字
-d #后台方式运行
-it #使用交互方式运行,进入容器查看内容
-p #指定容器的端口
-P #随机指定端口

#示例
[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
centos        latest    5d0da3dc9764   4 weeks ago    231MB
hello-world   latest    d1165f221234   7 months ago   13.3kB
[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]# docker run -it centos /bin/bash
[root@ba5363b26857 /]# ll
bash: ll: command not found
[root@ba5363b26857 /]# ls
bin  etc   lib   lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr
[root@ba5363b26857 /]# exit
exit
[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]# 

列出所有正在运行的容器

docker ps #列出当前正在运行的容器
    -a #列出当前正在运行+历史运行过的容器
    -n=? #列出当前正在运行+历史运行过的容器的?个
    -q #显示正在运行的容器的编号

[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]# docker ps -a
CONTAINER ID   IMAGE         COMMAND       CREATED          STATUS                          PORTS     NAMES
ba5363b26857   centos        "/bin/bash"   8 minutes ago    Exited (0) About a minute ago             sleepy_heyrovsky
7c57c6f4c1b0   hello-world   "/hello"      41 minutes ago   Exited (0) 41 minutes ago                 great_dhawan
05d12b4589eb   hello-world   "/hello"      17 hours ago     Exited (0) 17 hours ago                   zealous_merkle
cfa3684607f2   hello-world   "/hello"      18 hours ago     Exited (0) 18 hours ago                   mystifying_bardeen
2b7d012d1685   hello-world   "/hello"      7 days ago       Exited (0) 7 days ago                     relaxed_carson
efadbddc578b   hello-world   "/hello"      2 months ago     Exited (0) 2 months ago                   hopeful_shamir
[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]# 
[root@iZ2ze2aj5v2nx1t6jk26cgZ etc]# docker ps -n=1
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                     PORTS     NAMES
ba5363b26857   centos    "/bin/bash"   12 minutes ago   Exited (0) 6 minutes ago             sleepy_heyrovsky
[root@iZ2ze2aj5v2nx1t6jk26cgZ etc]# docker ps -q
[root@iZ2ze2aj5v2nx1t6jk26cgZ etc]# docker ps -aq
ba5363b26857
7c57c6f4c1b0
05d12b4589eb
cfa3684607f2
2b7d012d1685
efadbddc578b
[root@iZ2ze2aj5v2nx1t6jk26cgZ etc]#

退出容器

exit #正常退出并关闭容器
Ctrl + P + Q #正常退出但不关闭容器

[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]# docker run -it centos /bin/bash
[root@10f9de353a54 /]# 
[root@10f9de353a54 /]# [root@iZ2ze2aj5v2nx1t6jk26cfZ etc]# ps
  PID TTY          TIME CMD
26940 pts/5    00:00:00 sudo
26941 pts/5    00:00:00 bash
31733 pts/5    00:00:00 ps
[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
10f9de353a54   centos    "/bin/bash"   2 minutes ago   Up 2 minutes             nostalgic_chandrasekhar
[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]# 

删除容器

docker rm 容器ID #删除指定的容器,该命令不能删除正在运行的容器,如果必须要删除正在运行的,用rm -f   
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有的容器

启动、停止容器

docker start 容器ID
docker restart 容器ID
docker stop 容器ID #停止当前正在运行的容器
docker kill 容器ID #强制停止当前容器

练习部署Nginx

[root@iZ2ze2aj5v2nx1t6jk26cfZ ~]# docker run -d --name nginx01 -p 3344:80 nginx
3682a81831158ac6ef0237150d411bf0ada34780825d9fceea45d7e5cdbf119c
[root@iZ2ze2aj5v2nx1t6jk26cfZ ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                  NAMES
3682a8183115   nginx     "/docker-entrypoint.…"   4 seconds ago   Up 4 seconds   0.0.0.0:3344->80/tcp   nginx01
[root@iZ2ze2aj5v2nx1t6jk26cfZ ~]# curl localhost:3344
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@iZ2ze2aj5v2nx1t6jk26cfZ ~]#
[root@iZ2ze2aj5v2nx1t6jk26cfZ ~]# docker exec -it nginx01 /bin/bash
root@3682a8183115:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@3682a8183115:/# cd /etc/nginx/
root@3682a8183115:/etc/nginx# ll
bash: ll: command not found
root@3682a8183115:/etc/nginx# ls
conf.d fastcgi_params mime.types  modules  nginx.conf  scgi_params  uwsgi_params
root@3682a8183115:/etc/nginx# 

1)部署成功之后,在阿里云上设置防火墙规则

 2)访问 公网IP:3344,即可访问成功

 练习部署ES+kibana

(ES下载运行容器后发现特别卡或者启动之后运行一会自动停止---原因:ES很消耗内存)

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.14.2 #启动es
docker stats #查看cpu的状态
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m"  elasticsearch:7.14.2 #固定参数启动

 下载运行可视化面板portainer

[root@iZ2ze2aj5v2nx1t6jk26cfZ ~]# docker search portainer |head -n 3
NAME                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
portainer/portainer              This Repo is now deprecated, use portainer/p…   2133                 
portainer/portainer-ce           Portainer CE - Making Docker and Kubernetes …   804                  
[root@iZ2ze2aj5v2nx1t6jk26cfZ ~]# docker volume create portainer_data
portainer_data
[root@iZ2ze2aj5v2nx1t6jk26cfZ ~]# docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

学习笔记(二) ---Docker镜像

备注:文章来源于视频: 遇见狂神说(Ps:狂神的课真的特别好~) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值