docker的常用命令

docker的常用命令

#执行docker程序

service docker start

#关闭docker程序

service docker start

#查看docker镜像

docker images

#查看docker版本

docker version

#拉取nginx镜像

docker pull nginx

查看有哪些docker容器在运行

docker ps

#删除 sc-nginx-1 容器

[root@docker ~]# docker rm sc-nginx-1

sc-nginx-1

#移除 sc-nginx-1 镜像

[root@docker ~]# docker rmi sc-nginx-1

sc-nginx-1

#查看docker的状态

docker stats

##镜像的导入导出

  • 静态镜像

  • 导出:docker save -o 文件名.tar 镜像名称

#docker save 用于将 Docker 镜像保存到文件中。

docker save -o scbusybox1.tar scbusybox:1.0

  • 导入:docker load -i 文件名.tar

#docker load 用于从文件加载镜像到 Docker 中。

[root@docker Dockerfile]# docker load -i scbusybox1.tar

  • 动态镜像:
  • 导出:docker export -o 容器名 文件名.tar

#导出正在运行的容器里的文件系统成一个归档文档

docker export -o my_nginx.tar my_nginx

  • 导入:cat <文件名.tar> | docker import - <镜像名称:标签>
  • 表示标准输入

# start开启docker 容器

docker start sc-nginx-1

#run创建-启动容器

[root@docker ~]# docker run --name sc-nginx-1 -p 8080:80 -d --cpu-shares 10 --cpu-shares 2 --cpuset-cpus 0 -m 10000000 nginx

宿主机: 虚拟机

容器跑在宿主机里

docker run 启动容器

--name sc-nginx-1 指定名字

-p 8080:80 指定端口映射 8080是宿主机(本机)的端口 后面的80是容器的端口

-d 将容器放到后台运行 daemon 守护进程

--cpu-shares 10

docker将整个cpu资源的算力当做1,分为1000m份

无论你有几个cpu,多少核心都当做1,然后分配成1000份

10

100

--cpus 1 指定只能使用1个cpu核心

--cpuset-cpus 0 指定在哪个cpu核心里运行

-m 10000000 指定可以使用的内存 memory 默认单位的字节

-c, --cpu-shares int CPU shares (relative weight)

--cpus decimal Number of CPUs

--cpuset-cpus string CPUs in which to allow execution (0-3, 0,1)

##跑的python

docker run -it --rm --name sc-python3-1 python:3

--rm 当我们退出容器的时候,自动删除容器 remove

--it 当进入容器的时候开启一个终端,可以输入内容 interactive terminal

#进入交互式模式镜像

docker exec -it xie-centos-2 /bin/bash

#查看镜像的资源使用率

docker stats

#查找镜像源--》下载镜像

docker search go

#启动golang 的镜像

[root@docker ~]# docker run -it --rm --name sc-golang-1 golang

#进入mysql 的镜像

[root@docker ~]# docker exec -it cf703956bfa3 bash

bash-4.2#

#docker run =docker pull 、create 、start

#查看日志logs

[root@docker ~]# docker logs sc-mysql-1

#进入容器 exec

[root@wangyong cgroup]# docker exec -it sc-nginx-1 bash

#查看容器的信息 inspect

[root@wangyong cgroup]# docker inspect sc-nginx-1

Docker0 网卡 - 桥接网络接口

作用:

容器之间

容器和宿主机之间

容器和外部网络之间

#docker cp -》容器和主机之间的文件传输

要将本地文件复制到运行中的容器中,可以使用以下命令:

docker cp /file.txt container_id:/file.txt

要将容器中的文件复制到本地主机上,可以使用以下命令:

docker cp container_id:/containerfile.txt /file.txt

#查看当前bash进程关联的Namespace

ls -l /proc/$$/ns

#namesplace-cgroups

##必看docker资料

cgroup 和 nameplace

++++https://mp.weixin.qq.com/s?__biz=Mzg2MDc2OTYxMQ==&mid=2247484310&idx=1&sn=4acce4911c86676bd15a7445729e6740&chksm=ce201fb2f95796a44cc0d2da4360deb62d5a84393e0e7fdc507bfcc02b1c1b63b9f8f7dff7a2&mpshare=1&scene=23&srcid=01094gEzrpgdzwxsNbIxgfiw&sharer_shareinfo=39826d4ea509d1bd8a28b653c2b436d0&sharer_shareinfo_first=39826d4ea509d1bd8a28b653c2b436d0#rd++++

++++https://mp.weixin.qq.com/s?__biz=MzIxMTgzMjE4Mw==&mid=2247499272&idx=1&sn=81f3a5cfb854c9bed904869cdc54afa3&chksm=974de210a03a6b066a1b021e1435d5793cfe29efba64d4b1065b3b557cd731b3422415a2964d&mpshare=1&scene=23&srcid=0109kdBACwepnMyfUCziNuFx&sharer_shareinfo=f923cfd46568c2ddf4cb5c1c69044292&sharer_shareinfo_first=f923cfd46568c2ddf4cb5c1c69044292#rd++++

#查看docker容器详情(网络)

[root@docker wangtest]# docker network inspect sc-net

#查看卷volume ->数据的存放文件夹

[root@docker ~]# docker volume ls

DRIVER VOLUME NAME

local 23ff1b21ba93b8ab6d8a3897130dcb14aaa0cf1431953713b6b0131585696313

#执行容器挂载

# --mount

[root@docker ~]# docker run -d --name wangguangtest --mount source=my-vol,target=/app nginx:lates

#-v的详细介绍

[root@docker _data]# docker run -d --name wangguangtest4 -v my-vol:/app nginx:latest

00c28032ad35b564f58f8d9b28154528f93e3c25ca0c289bc8815f4922169594

docker run: 运行一个 Docker 容器。

-d: 指定容器在后台以守护进程模式(detached mode)运行。

--name wangguangtest4: 将该容器命名为 "wangguangtest4",方便后续对容器的管理。

-v my-vol:/app: 将名为 "my-vol" 的卷挂载到容器内的 "/app" 目录。这样做可以实现数据持久化,容器内的 "/app" 目录中的数据将存储在名为 "my-vol" 的卷中。

nginx:latest: 使用 nginx 镜像的最新版本作为容器的基础镜像。

Bind mounts --》直接挂载到系统文件分区上

--mount和-v都是在文件系统(磁盘)里面找到对应的docker 容器分区

#限制只读readonly

docker run -d -it --name devtest --mount type=bind,source="$(pwd)"/target,target=/app,readonly nginx:latest

#卷的作用

解决容器和容器之间的数据共享

解决容器和宿主机之间的文件共享

#存储服务器NSA、CDN、SAN

NAS(Network Attached Storage)服务器是一种专门用于存储和共享文件的设备,通常连接到网络中以便多台设备可以访问其中的数据

CDN(Content Delivery Network)即内容分发网络,是一种通过部署位于全球各地的服务器节点来提高互联网内容传输速度和用户访问体验的服务。

SAN(Storage Area Network)即存储区域网络,是一种专门用于数据存储的高速网络架构。

#NFS

NFS(Network File System)是一种允许网络上的计算机之间分享文件系统的协议

#基于busybox制作镜像

[root@docker Dockerfile]# docker build -t scbusybox:1.0 .

[+] Building 18.2s (8/8) FINISHED docker:default

=> [internal] load build definition from Dockerfile 0.0s

=> => transferring dockerfile: 626B 0.0s

=> [internal] load metadata for docker.io/library/busybox:lat 5.4s

=> [internal] load .dockerignore 0.0s

=> => transferring context: 2B 0.0s

=> [internal] load build context 0.0s

=> => transferring context: 754B 0.0s

=> [1/4] FROM docker.io/library/busybox:latest@sha256:650fd57 2.2s

=> => resolve docker.io/library/busybox:latest@sha256:650fd57 0.0s

=> => sha256:650fd573e056b679a5110a70aabeb01e 6.76kB / 6.76kB 0.0s

=> => sha256:4be429a5fbb2e71ae7958bfa558bc637cf3a 610B / 610B 0.0s

=> => sha256:ba5dc23f65d4cc4a4535bce55cf9e63b068e 372B / 372B 0.0s

=> => sha256:7b2699543f22d5b8dc8d66a5873eb246 2.15MB / 2.15MB 2.0s

=> => extracting sha256:7b2699543f22d5b8dc8d66a5873eb246767bc 0.1s

=> [2/4] COPY . / 0.0s

=> [3/4] RUN touch sc.txt && mkdir sanchuang && sleep 10 10.4s

=> exporting to image 0.0s

=> => exporting layers 0.0s

=> => writing image sha256:e6cae04f1407b58b760b62db3122696cf9 0.0s

=> => naming to docker.io/library/scbusybox:1.0 0.0s

#制作文件

[root@docker Dockerfile]# cat Dockerfile

#指定基础镜像

FROM busybox

#指定进入容器的时候,进入哪个文件夹 docker exec 能看到效果

WORKDIR /

#复制宿主机当前目录下的所有文件和文件夹到容器里的/目录下 docker cp

COPY . /

#制作镜像的时候,需要执行的命令,这些文件会留着做好的镜像里-->是在制>作容器的过程中的操作系统里运行的,在制作镜像的过程中会产生临时的容器

RUN touch sc.txt && mkdir sanchuang && sleep 10

#指定容器启动的时候需要执行的命令

#/bin/sh while.sh

ENTRYPOINT ["/bin/sh","/while.sh"]

#基于go语言制作镜像

案例2: 使用go语言的编译好的代码制作镜像

[root@scdocker Dockerfile]# ls

Dockerfile while.sh

[root@scdocker Dockerfile]# mkdir shell

[root@scdocker Dockerfile]# ls

Dockerfile shell while.sh

[root@scdocker Dockerfile]# mv while.sh Dockerfile shell/

[root@scdocker Dockerfile]# ls

shell

[root@scdocker Dockerfile]# mkdir go

[root@scdocker Dockerfile]# ls

go shell

[root@scdocker Dockerfile]# cd go

[root@scdocker go]# pwd

/Dockerfile/go

[root@scdocker go]#

2.1 获得go语言程序的核心代码,编写的一个简单的web服务器代码server.go

[root@scdocker go]# pwd

/Dockerfile/go

[root@scdocker go]# ls

apiserver.tar.gz

[root@scdocker go]#

[root@scdocker go]# vim server.go

package main

//server.go是主运行文件

import (

"net/http"

"github.com/gin-gonic/gin"

)

//gin-->go中的web框架

//入口函数

func main(){

//创建一个web服务器

r:=gin.Default()

// 当访问/sc=>返回{"message":"hello, sanchuang"}

r.GET("/",func(c *gin.Context){

//200,返回的数据

c.JSON(http.StatusOK,gin.H{

"message":"hello,sanchuanger 2024 nice",

})

})

//运行web服务

r.Run()

}

[root@scdocker go]#

安装go语言的环境

[root@scdocker yum.repos.d]# yum install epel-release -y

[root@scdocker yum.repos.d]# yum install golang -y

在宿主机里开始编译server.go成一个二进制文件

[root@scdocker yum.repos.d]# cd /Dockerfile/go/

[root@scdocker go]# ls

apiserver.tar.gz server.go

[root@scdocker go]#

[root@scdocker go]# go env -w GOPROXY=https://goproxy.cn,direct

[root@scdocker go]# go mod init web

[root@scdocker go]# go mod tidy

运行代码,默认监听的是8080,这个步骤只是测试我们的server.go能否正常运行

[root@scdocker go]# go run server.go

[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.

  • using env: export GIN_MODE=release

  • using code: gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET / --> main.main.func1 (3 handlers)

[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.

Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.

[GIN-debug] Environment variable PORT is undefined. Using port :8080 by default

[GIN-debug] Listening and serving HTTP on :8080

真正的编译server.go成hnweb二进制文件

[root@scdocker go]# go build -o hnweb .

[root@scdocker go]# ls

apiserver.tar.gz go.mod go.sum hnweb server.go

[root@scdocker go]#

hnweb 是我们编译好的二进制程序

[root@scdocker go]# ./hnweb

[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.

  • using env: export GIN_MODE=release

  • using code: gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET / --> main.main.func1 (3 handlers)

[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.

Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.

[GIN-debug] Environment variable PORT is undefined. Using port :8080 by default

[GIN-debug] Listening and serving HTTP on :8080

[GIN] 2023/08/11 - 16:53:07 | 200 | 6.785225ms | 192.168.223.1 | GET "/"

[GIN] 2023/08/11 - 16:53:07 | 200 | 25.458µs | 192.168.223.1 | GET "/"

[GIN] 2023/08/11 - 16:53:07 | 200 | 25.421µs | 192.168.223.1 | GET "/"

[GIN] 2023/08/11 - 16:53:07 | 200 | 32.671µs | 192.168.223.1 | GET "/"

^C

[root@scdocker go]#

2.编写Dokerfile文件

[root@scdocker go]# vim Dockerfile

[root@scdocker go]# cat Dockerfile

FROM centos:7

WORKDIR /go

COPY . /go

RUN ls /go && pwd

ENTRYPOINT ["/go/hnweb"]

[root@scdocker go]#

3.制作镜像

[root@scdocker go]# docker build -t hnweb:1.0

[root@scdocker go]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

hnweb 1.0 8fbb96328262 25 seconds ago 221MB

scbusybox 1.0 eff749ec3ffc 41 minutes ago 1.24MB

mysql 5.7.43 92034fe9a41f 8 days ago 581MB

busybox latest beae173ccac6 19 months ago 1.24MB

nginx latest 605c77e624dd 19 months ago 141MB

golang latest 276895edf967 19 months ago 941MB

redis latest 7614ae9453d1 19 months ago 113MB

python latest a5d7930b60cc 19 months ago 917MB

[root@scdocker go]#

4.启动容器使用镜像hnweb

[root@scdocker go]#

[root@scdocker go]# docker run -d --name hnweb-1 -p 7788:8080 hnweb:1.0

e92ca716ac94604dc3fcf92202eb0141462dd95a5c3a9e8207188eb4c081234c

[root@scdocker go]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

e92ca716ac94 hnweb:1.0 "/go/hnweb" 4 seconds ago Up 2 seconds 0.0.0.0:7788->8080/tcp, :::7788->8080/tcp hnweb-1

d38655459dbb nginx "/docker-entrypoint...." 6 hours ago Up 6 hours 0.0.0.0:5588->80/tcp, :::5588->80/tcp lizx-web-1

[root@scdocker go]#

5.去宿主机的浏览器里访问

http://192.168.223.143:7788/

#基于python 制作镜像

====

使用python代码来制作镜像

===

第1步:编辑app.py文件,我们的程序文件

[root@sc-docker-server mydocker]# vim app.py

from flask import Flask

from redis import Redis, RedisError

import os

import socket

Connect to Redis

redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)

app = Flask(name)

@app.route("/")

def hello():

try:

visits = redis.incr("counter")

except RedisError:

visits = "<i>cannot connect to Redis, counter disabled</i>"

html = "<h3>Hello {name}!</h3>" \

"<b>Hostname:</b> {hostname}<br/>" \

"<b>Visits:</b> {visits}"

return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)

if name == "main":

app.run(host='0.0.0.0', port=80)

第2步:编辑requirements.txt文件

[root@sc-docker-server mydocker]# vim requirements.txt

Flask

Redis

第3步:编辑Dockerfile

[root@sc-docker-server ~]# mkdir /mydocker/

[root@sc-docker-server ~]# cd /mydocker/

[root@sc-docker-server mydocker]#

[root@docker python]# cat Dockerfile

FROM python:3.9

WORKDIR /app

COPY . /app

RUN pip install --trusted-host pypi.python.org -r requirements.txt

EXPOSE 80

ENV NAME World

ENV AUTHOR cali

CMD ["python","app.py"]

[root@docker python]#

第4步:生成镜像文件

[root@docker python]# docker build -t sc_sayhello:1.0 .

[+] Building 159.4s (9/9) FINISHED docker:default

=> [internal] load build definition from Dockerfile 0.0s

=> => transferring dockerfile: 218B 0.0s

=> [internal] load .dockerignore 0.0s

=> => transferring context: 2B 0.0s

=> [internal] load metadata for docker.io/library/python:3.9 6.7s

=> [1/4] FROM docker.io/library/python:3.9@sha256:51155b171174dcb535d05b87e739f792e9cc1292c714227d6276b0278607b643 96.5s

=> => resolve docker.io/library/python:3.9@sha256:51155b171174dcb535d05b87e739f792e9cc1292c714227d6276b0278607b643 0.0s

=> => sha256:51155b171174dcb535d05b87e739f792e9cc1292c714227d6276b0278607b643 1.86kB / 1.86kB 0.0s

=> => sha256:3689fc6de1fb539c75e0397401dade00853f80223323d9b63ae2857a51a21633 2.01kB / 2.01kB 0.0s

=> => sha256:1b13d4e1a46e5e969702ec92b7c787c1b6891bff7c21ad378ff6dbc9e751d5d4 49.56MB / 49.56MB 20.8s

=> => sha256:1c74526957fc2157e8b0989072dc99b9582b398c12d1dcd40270fd76231bab0c 24.05MB / 24.05MB 9.7s

=> => sha256:6c98275ba382f148576ece0386055948599024a793487adcd5a667e9be485450 7.51kB / 7.51kB 0.0s

=> => sha256:8d55d1cb1ffb0c7e0438b372a96cc0f23a76c21571fa3e7b7b38e3fbc66a8c3a 64.14MB / 64.14MB 18.2s

=> => sha256:aa8e0026efede8b3da7364fd0ec879657b2c9be209b5cc1e2ec83bed6dfcf6a9 211.10MB / 211.10MB 46.7s

=> => sha256:a000d2c561b3e5538d3abf2f9bb93a61fa101a369efe94eb53d8f3b9e5f385ac 6.39MB / 6.39MB 21.1s

=> => sha256:ea0e489eccac14d78ebd8126fe370d653aae4819e2bd429997ab4e53f19be542 15.82MB / 15.82MB 25.7s

=> => extracting sha256:1b13d4e1a46e5e969702ec92b7c787c1b6891bff7c21ad378ff6dbc9e751d5d4 8.7s

=> => sha256:6f85223502896fcaa9a3b2132d5d84cec61a144025c5180dae502d7b3a3f30b6 244B / 244B 22.1s

=> => sha256:cd0448a734b26b5e96572a2b9172b59d0108eb398ceb085c657c9b5309c3244f 2.85MB / 2.85MB 24.3s

=> => extracting sha256:1c74526957fc2157e8b0989072dc99b9582b398c12d1dcd40270fd76231bab0c 3.0s

=> => extracting sha256:8d55d1cb1ffb0c7e0438b372a96cc0f23a76c21571fa3e7b7b38e3fbc66a8c3a 13.4s

=> => extracting sha256:aa8e0026efede8b3da7364fd0ec879657b2c9be209b5cc1e2ec83bed6dfcf6a9 43.8s

=> => extracting sha256:a000d2c561b3e5538d3abf2f9bb93a61fa101a369efe94eb53d8f3b9e5f385ac 1.2s

=> => extracting sha256:ea0e489eccac14d78ebd8126fe370d653aae4819e2bd429997ab4e53f19be542 2.6s

=> => extracting sha256:6f85223502896fcaa9a3b2132d5d84cec61a144025c5180dae502d7b3a3f30b6 0.1s

=> => extracting sha256:cd0448a734b26b5e96572a2b9172b59d0108eb398ceb085c657c9b5309c3244f 0.9s

=> [internal] load build context 0.0s

=> => transferring context: 978B 0.0s

=> [2/4] WORKDIR /app 1.4s

=> [3/4] COPY . /app 0.1s

=> [4/4] RUN pip install --trusted-host pypi.python.org -r requirements.txt 54.2s

=> exporting to image 0.4s

=> => exporting layers 0.4s

=> => writing image sha256:1c58385cbc650ca2a919525202736bf0617cb7c7f393fd4c61add76dc40455f0 0.0s

=> => naming to docker.io/library/sc_sayhello:1.0 0.0s

[root@docker python]#

完成的镜像,查看下

[root@docker python]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

sc_sayhello 1.0 1c58385cbc65 About a minute ago 1.01GB

第5步使用镜像,启动容器

[root@docker python]# docker run -d -p 5080:80 --name sc-sayhello-1 sc_sayhello:1.0

3cee16df951fba72b4b6104b685841ec7d55fa47d734d45de9f1c44534b25917

[root@docker python]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

3cee16df951f sc_sayhello:1.0 "python app.py" 7 seconds ago Up 5 seconds 0.0.0.0:5080->80/tcp, :::5080->80/tcp sc-sayhello-1

15a97f75f0e3 hnweb:1.0 "/go/hnweb" 3 hours ago Up 3 hours 0.0.0.0:7788->8080/tcp, :::7788->8080/tcp huweb-1

[root@docker python]#

第6步:访问容器的web服务

curl或者chrome浏览器访问

宿主机ip:5080

Hello World!

Hostname: f4aeb5d5305a

Visits: cannot connect to Redis, counter disabled

因为redis数据库容器没有启动,flask web服务不能连接到redis数据库

第7步: 启动redis容器

docker run -d -p 6379:6379 --name sc-redis-1 redis

root@docker python]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

44b61a3079b2 redis "docker-entrypoint.s..." 7 seconds ago Up 4 seconds 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp sc-redis-1

第8步: 再次启动一个自己制作镜像的容器,链接到redis容器

[root@docker python]# docker run -d -p 5081:80 --name sc-sayhello-2 --link sc-redis-1:redis sc_sayhello:1.0

--link sc-redis-1:redis

sc-redis-1 是前面启动的容器的名字

redis 是一个别名

3827b7bf111bed7d0670b48731c8193529630691c346178345260e45be78309f

[root@docker python]#

[root@docker python]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

3827b7bf111b sc_sayhello:1.0 "python app.py" 13 seconds ago Up 11 seconds 0.0.0.0:5081->80/tcp, :::5081->80/tcp sc-sayhello-2

44b61a3079b2 redis "docker-entrypoint.s..." 2 minutes ago Up 2 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp sc-redis-1

第9步:访问容器的web服务

curl或者chrome浏览器访问

宿主机ip:5081

Hello World!

Hostname: aad7da1892b5

Visits: 15

#compose

--》只能管理同一个宿主机容器的软件

执行的时候必须基于在compose.yaml 文件夹下才可以执行docker compose

#wordpress--》nginx

类似于nginx的做网站的软件

#harbor-->私人仓库

#更新镜像的流程

  1. 代码修改后
  2. 进行docker 镜像制作 , 进入含有Dockerfile文件的文件夹
  3. 制作docker bulid -t docker-name:版本号
  4. docker tag 源docker-name:版本号 标签-name:版本号
  5. docekr login 主机号
  6. 登录后,docker push 标签-name:版本号
  7. 其他主机登录到 本主机号后 ,docker pull 标签-name:版本号

#容器监控的常用命令

CPU

top作用

.cpu

内存

sar安装 yum install sysstat -y

memory

top作用

.cpu

内存

free -h #查看内存的

sar

network

glances (network,cpu,memory,disk磁盘 )

dstat -am

iftop #安装 yum install iftop -y ->交互式检测网络

nethogs 则可以按进程级别显示网络流量的使用情况

disk

df -Th 查看磁盘分区的使用情况(文件系统 容量 已用 可用 已用% 挂载点)

glances (network,cpu,memory,disk磁盘 )

sar -b 1 10

iostat -x

#全能命令(网络、内存、CPU、磁盘)

glances

sar

查看 CPU 使用情况:

sar -u

查看内存使用情况:

sar -r

查看网络活动情况:

sar -n DEV

查看磁盘 I/O 活动情况:

sar -b

查看系统负载情况:

sar -q

显示指定时间段内的数据(例如,显示过去一小时的数据):

sar -s 09:00:00 -e 10:00:00

dstat -am

#docker的安装细节

Docker Engine 是docker的核心软件,是服务器上安装使用的。

安装文档

https://docs.docker.com/engine/install/centos/

https://docs.docker.com/engine/install/ubuntu/

修改下主机名为docker

[root@localhost ~]# hostnamectl set-hostname docker

[root@localhost ~]# su

[root@docker ~]#

1.卸载原来安装过的docker,如果没有安装可以不需要卸载

yum remove docker \

docker-client \

docker-client-latest \

docker-common \

docker-latest \

docker-latest-logrotate \

docker-logrotate \

docker-engine

2.安装yum相关的工具,下载docker-ce.repo文件

[root@cali ~]#

[root@cali ~]# yum install -y yum-utils -y

[root@cali ~]#yum-config-manager \

--add-repo \

https://download.docker.com/linux/centos/docker-ce.repo

下载docker-ce.repo文件存放在/etc/yum.repos.d

[root@cali yum.repos.d]# pwd

/etc/yum.repos.d

[root@cali yum.repos.d]# ls

CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo docker-ce.repo

CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-x86_64-kernel.repo nginx.repo

[root@cali yum.repos.d]#

3.安装docker-ce软件

container engine 容器引擎

docker是一个容器管理的软件

docker-ce 是服务器端软件 server

docker-ce-cli 是客户端软件 client

docker-compose-plugin 是compose插件,用来批量启动很多容器,在单台机器上

containerd.io 底层用来启动容器的

docker-compose-plugin 对docker-ce-cli的支持的插件

[root@cali yum.repos.d]#yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

[root@localhost yum.repos.d]# docker version 查看docker版本

Client: Docker Engine - Community

Version: 23.0.1

API version: 1.42

Go version: go1.19.5

Git commit: a5ee5b1

Built: Thu Feb 9 19:51:00 2023

OS/Arch: linux/amd64

Context: default

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

[root@localhost yum.repos.d]#

4.启动docker服务

[root@cali yum.repos.d]# systemctl start docker

[root@cali yum.repos.d]# ps aux|grep docker

root 1892 1.4 1.5 1095108 58972 ? Ssl 11:39 0:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

root 2029 0.0 0.0 112824 976 pts/0 S+ 11:40 0:00 grep --color=auto docker

[root@cali yum.repos.d]#

查看启动后的进程

[root@docker yum.repos.d]# sudo systemctl start docker

[root@docker yum.repos.d]# ps aux|grep docker

root 8584 0.4 0.6 1116960 50368 ? Ssl 11:14 0:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

root 8733 0.0 0.0 112824 980 pts/0 S+ 11:15 0:00 grep --color=auto docker

[root@docker yum.repos.d]#

5.设置docker服务开机启动

[root@cali yum.repos.d]# systemctl enable docker

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

[root@cali yum.repos.d]#

6.关闭firewalld服务和selinux

[root@docker yum.repos.d]# service firewalld stop

Redirecting to /bin/systemctl stop firewalld.service

[root@docker yum.repos.d]# systemctl disable firewalld

Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.

Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

[root@docker yum.repos.d]#

[root@docker yum.repos.d]# vi /etc/selinux/config

SELINUX=disabled

7.重启linux系统

[root@docker yum.repos.d]# reboot

docker启动的每一个容器背后就是一个linux进程

[root@cali yum.repos.d]# docker ps 查看有哪些docker容器在运行

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

[root@cali yum.repos.d]#

[root@cali yum.repos.d]# docker images 查看镜像

REPOSITORY TAG IMAGE ID CREATED SIZE

[root@cali yum.repos.d]#

安装docker软件的机器叫宿主机

寄宿

使用docker容器启动软件,颠覆了我们安装软件的方式

常见的应用软件都可以使用docker容器去启动

常见的应用软件都有对应的镜像(镜像是人制作出来的)

http://hub.docker.com/ 是docker官方提供的镜像的下载网站,里面有很多的镜像--》全球最大的镜像文件集散地。

容器: container

#负载均衡

负载均衡:lvs 四层:ip+port

ingress: 负载均衡--》一般是做七层负载均衡

nginx:七层负载均衡:http

四层:ip+port

#metrics和cadvisor

都是进行性能监控容器的工具

可以收集数据,分析,监控

#压力测试工具

mysql: sysbench

docker+k8s: hpa-example

相关推荐
PcVue China2 小时前
PcVue + SQL Grid : 释放数据的无限潜力
大数据·服务器·数据库·sql·科技·安全·oracle
舞动CPU4 小时前
linux c/c++最高效的计时方法
linux·运维·服务器
皮锤打乌龟5 小时前
(干货)Jenkins使用kubernetes插件连接k8s的认证方式
运维·kubernetes·jenkins
钰@5 小时前
小程序开发者工具的network选项卡中有某域名的接口请求,但是在charles中抓不到该接口
运维·服务器·小程序
wanhengwangluo5 小时前
云服务器和物理服务器的区别有哪些?
运维·服务器
南猿北者6 小时前
docker Network(网络)
网络·docker·容器
秦jh_6 小时前
【Linux】多线程(概念,控制)
linux·运维·前端
yaosheng_VALVE7 小时前
稀硫酸介质中 V 型球阀的材质选择与选型要点-耀圣
运维·spring cloud·自动化·intellij-idea·材质·1024程序员节
sam-1237 小时前
k8s上部署redis高可用集群
redis·docker·k8s
看山还是山,看水还是。7 小时前
Redis 配置
运维·数据库·redis·安全·缓存·测试覆盖率