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

相关推荐

  1. [Docker] 命令

    2024-04-15 07:36:03       26 阅读
  2. docker 命令

    2024-04-15 07:36:03       30 阅读
  3. docker 命令

    2024-04-15 07:36:03       33 阅读
  4. Docker 命令

    2024-04-15 07:36:03       35 阅读
  5. docker 命令

    2024-04-15 07:36:03       37 阅读
  6. docker 命令

    2024-04-15 07:36:03       15 阅读
  7. Docker命令

    2024-04-15 07:36:03       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-15 07:36:03       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-15 07:36:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-15 07:36:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-15 07:36:03       18 阅读

热门阅读

  1. excel表导入导出

    2024-04-15 07:36:03       17 阅读
  2. Linux kernel 墙上时间

    2024-04-15 07:36:03       30 阅读
  3. Spark开窗函数之ROW

    2024-04-15 07:36:03       14 阅读
  4. C#去掉字符串中所有匹配的字符String.Replace方法

    2024-04-15 07:36:03       15 阅读
  5. 最短路计数

    2024-04-15 07:36:03       48 阅读