首页 > 其他分享 >docker容器技术

docker容器技术

时间:2024-03-22 10:34:23浏览次数:25  
标签:容器 yunwei -- 0.0 技术 nginx docker root

docker容器技术分享

1. 应用部署历史

我们先来看看很久以前,服务器是怎么部署应用的。

image-20240321103032039

由于物理机部署的缺点,后来出现了虚拟机

image-20240321103535130

但是虚拟化也是有局限性的,每一个虚拟机都是一个完整的操作系统,要分配系统资源,虚拟机多到一定程度时,操作系统本身资源也就消耗殆尽,或者说必须扩容。

2. docker的诞生

部署演进

  • Docker最初是DotCloud公司在法国期间发起的一个公司内部项目,后来以Apache2.0授权协议开源,代码在Github上维护。

  • Docker是基于Google公司推出的Golang语言开发而来,基于Linux内核的Cgroups、NameSpace,以及Union FS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。

  • 由于隔离的进程独立于宿主机和其他隔离的进程,也被称之为容器。

  • 利用Docker可以实现开发,测试,生产环境的部署一致性,极大的减少运维成本。

  • Docker 公司位于旧金山,原名dotCloud,底层利用了Linux容器技术(LXC)(在操作系统中实现资源隔离与限制)。为了方便创建和管理这些容器,dotCloud 开发了一套内部工具,之后被命名为“Docker”。

  • Docker就是这样诞生的。

  • Hypervisor: 一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件 。常见的VMware的 Workstation 、ESXi、微软的Hyper-V或者思杰的XenServer。

  • Container Runtime:通过Linux内核虚拟化能力管理多个容器,多个容器共享一套操作系统内核。因此摘掉了内核占用的空间及运行所需要的耗时,使得容器极其轻量与快速。

docker的强大在于通过操作系统层面的虚拟化实现进程隔离,因此docker容器进程运行后,不需要像虚拟机一样的一个完整的OS对系统资源的损耗,因此很轻量级,以及高级的资源利用率。

3. 容器和虚拟机的区别

3.1传统虚拟机技术

虚拟机是虚拟一套完整的硬件,在上面运行操作系统。比如我们使用esxi指定系统镜像,安装虚拟机,最终可以使用,在操作系统上安装所需要的应用程序。

虚拟机创建的时候至少有 cpu 、内存、硬盘等资源,虚拟机性能就比较低了。

image-20240321114540285

3.2容器技术

容器内的应用程序直接运行在宿主机的内核上。

容器内没有自己的内核。

也没有对硬件进行虚拟,因此容器比起虚拟机更为轻便。

image-20240321115114936

4. 容器技术对比虚拟化

  • 容器是直接提供宿主机的性能,而虚拟机是分配宿主机硬件资源,性能较弱
  • 同样配置的宿主机,最多可以启动10个虚拟机的话,可以启动50+的容器数量。
  • 启动一个虚拟机,得有一个完整的开机流程,花费时间较长,或许得20S,而启动一个容器只需要1S。
  • 需要硬件CPU的虚拟化支持,而容器不需要。
特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 一般为 MB 一般为 GB
性能 接近原生
系统支持量 单机支持上千个容器 一般几十个
资源隔离 安全隔离 完全隔离

5. 为什么使用docker

5.1 docker更高效的利用系统资

容器不需要进行硬件虚拟化以及运行一个完整操作系统的额外开销,docker对系统资源的利用率更高,无论是应用执行,文件存储,还是在内存消耗等方面,都比传统虚拟机更高效。因此一个同样配置的主机,可以运行处更多数量的容器实例。

5.2 更快的启动时间

传统的虚拟机启动时间较久,docker容器直接运行在宿主机的内核上,无须启动一个完整的操作系统,因此可以达到秒级启动,大大的解决开发,测试,部署的时间。

5.3 一致性的环境

在企业里,程序从开发环境,到测试服务器,到生产环境,难以保证机器环境一致性,极大可能出现系统依赖冲突,导致难以部署等Bug。

然而利用docker的容器-镜像技术,提供了除了内核以外完整的运行时环境,确保了应用环境的一致性。

5.4 持续交付和部署

还是刚才所说的一致性的环境,对于开发和运维的人员,最希望的就是环境部署迁移别处问题,利用docker可以定制镜像,以达到持续集成,持续交付和部署。

通过Dockerfile来进行镜像构建,实现系统集成测试,运维进行生产环境的部署。

且Dockerfile可以使镜像构建透明化,方便技术团队能够快速理解运行环境部署流程。

5.5 更轻松的迁移

Docker可以在很多平台运行,无论是物理机,虚拟机,云服务器等环境,运行结果都是一致的。用于可以轻松的将一个平台的应用,迁移到另一个平台,而不用担心环境的变化,导致程序无法运行。

5.6 docker能做什么

  • 可以把应用程序代码及运行依赖环境打包成镜像,作为交付介质,在各环境部署
  • 可以将镜像(image)启动成为容器(container),并且提供多容器的生命周期进行管理(启、停、删)
  • container容器之间相互隔离,且每个容器可以设置资源限额
  • 提供轻量级虚拟化功能,容器就是在宿主机中的一个个的虚拟的空间,彼此相互隔离,完全独立

5.7 docker使用情况

Google从2004年起就已经开始使用容器技术了,并于2006年发布了Cgroups 和Imctfy项目。

Imctfy 是Google开源版本的容器栈,它提供了用来代替LXC的Linux应用容器。

Google云平台的高级软件工程师Joe Beda于2014 年在Gluecon. 上做了个关于Google如何使用Linux容器技术的报告。报告中声称现在Google所有的应用都是运行在容器中的。

Google 每周要启动超过20亿个容器,每秒钟要启动超过3 000个容器,这还不包括那些长期运行的容器。Google 同样也正在将容器集成到Google云平台中。

Google于2014年推出了开源容器集群管理系统-Kubernetes, Kubernetes 就构建在Docker之上。

6. 安装docker

清华源地址:docker-ce | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

6.1 ubuntu安装docker

image-20240321134225986

for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do apt-get remove $pkg; done

apt-get update
apt-get install ca-certificates curl gnupg


install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null
  
  
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

6.2 centos 安装docker

image-20240321134320115

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
                  
                  
                  
 yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+https://download.docker.com+https://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo


yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

image-20240321142759773

6.3 docker 版本信息查询

#查看运行状态
systemctl status docker  

# 重启docker
 systemctl restart docker

#查看版本信息

root@yunwei:~# docker version
Client: Docker Engine - Community
 Version:           26.0.0
 API version:       1.45
 Go version:        go1.21.8
 Git commit:        2ae903e
 Built:             Wed Mar 20 15:17:48 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          26.0.0
  API version:      1.45 (minimum version 1.24)
  Go version:       go1.21.8
  Git commit:       8b79278
  Built:            Wed Mar 20 15:17:48 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.28
  GitCommit:        ae07eda36dd25f8a1b98dfbf587313b99c0190bb
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

6.4 配置docker加速器

 cat  > /etc/docker/daemon.json <<EOF
{ 
"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com"] 
}
EOF

systemctl restart docker

7. docker 官网

Docker 官网:https://www.docker.com/

Docker 的 github 地址:https://github.com/moby/moby

Docker hub 官网:https://registry.hub.docker.com

Dockerhub 国内可能没法访问,替代网址: https://hub-stage.docker.com/

Dockerhub:Dockerhub 是存放 docker 镜像的一个官方网站,dockerhub 上提供了很多常用的 镜像供用户下载,如 ubuntu、centos、debian 等操作系统镜像。通过 dockerhub 用户也可以存 自己的 docker 镜像,但是需要需要注册一个账号,在网站上创建一个 docker 仓库。

8. docker基本用法—操作镜像

8.1 搜索镜像

root@yunwei:~# docker search nginx
NAME                               DESCRIPTION                                     STARS     OFFICIAL
nginx                              Official build of Nginx.                        19716     [OK]
unit                               Official build of NGINX Unit: Universal Web …   25        [OK]
nginx/nginx-ingress                NGINX and  NGINX Plus Ingress Controllers fo…   89        
nginxinc/nginx-unprivileged        Unprivileged NGINX Dockerfiles                  144       
nginx/nginx-prometheus-exporter    NGINX Prometheus Exporter for NGINX and NGIN…   38        
nginxinc/nginx-s3-gateway          Authenticating and caching gateway based on …   6         
nginx/unit                         This repository is retired, use the Docker o…   64        
nginx/nginx-ingress-operator       NGINX Ingress Operator for NGINX and NGINX P…   2         
nginxinc/amplify-agent             NGINX Amplify Agent docker repository           1         
nginx/nginx-quic-qns               NGINX QUIC interop                              1         
nginxinc/ingress-demo              Ingress Demo                                    4         
nginxproxy/nginx-proxy             Automated nginx proxy for Docker containers …   132       
nginxproxy/acme-companion          Automated ACME SSL certificate generation fo…   130       
bitnami/nginx                      Bitnami nginx Docker Image                      183       
bitnami/nginx-ingress-controller   Bitnami Docker Image for NGINX Ingress Contr…   32        
ubuntu/nginx                       Nginx, a high-performance reverse proxy & we…   112       
nginxproxy/docker-gen              Generate files from docker container meta-da…   16        
nginxinc/nginmesh_proxy_debug                                                      0         


8.2 下载镜像

root@yunwei:~# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete 
a9edb18cadd1: Pull complete 
589b7251471a: Pull complete 
186b1aaa4aa6: Pull complete 
b4df32aa5a72: Pull complete 
a0bcbecc962e: Pull complete 
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
root@yunwei:~# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    605c77e624dd   2 years ago   141MB
root@yunwei:~# 

8.3 导出镜像

image-20240321144331749

root@yunwei:~# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    605c77e624dd   2 years ago   141MB
root@yunwei:~# docker save -o nginx.tar nginx:latest 
root@yunwei:~# ls
nginx.tar  snap
root@yunwei:~# 

8.4 删除镜像

root@yunwei:~# docker rmi nginx:latest 
Untagged: nginx:latest
Untagged: nginx@sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Deleted: sha256:605c77e624ddb75e6110f997c58876baa13f8754486b461117934b24a9dc3a85
Deleted: sha256:b625d8e29573fa369e799ca7c5df8b7a902126d2b7cbeb390af59e4b9e1210c5
Deleted: sha256:7850d382fb05e393e211067c5ca0aada2111fcbe550a90fed04d1c634bd31a14
Deleted: sha256:02b80ac2055edd757a996c3d554e6a8906fd3521e14d1227440afd5163a5f1c4
Deleted: sha256:b92aa5824592ecb46e6d169f8e694a99150ccef01a2aabea7b9c02356cdabe7c
Deleted: sha256:780238f18c540007376dd5e904f583896a69fe620876cabc06977a3af4ba4fb5
Deleted: sha256:2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f
root@yunwei:~# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

8.5 导入镜像

root@yunwei:~# docker load -i nginx.tar 
2edcec3590a4: Loading layer [==================================================>]  83.86MB/83.86MB
e379e8aedd4d: Loading layer [==================================================>]     62MB/62MB
b8d6e692a25e: Loading layer [==================================================>]  3.072kB/3.072kB
f1db227348d0: Loading layer [==================================================>]  4.096kB/4.096kB
32ce5f6a5106: Loading layer [==================================================>]  3.584kB/3.584kB
d874fd2bc83b: Loading layer [==================================================>]  7.168kB/7.168kB
Loaded image: nginx:latest
root@yunwei:~# docker load < nginx.tar 
Loaded image: nginx:latest
root@yunwei:~# 

8.6 查看所有镜像

root@yunwei:~# docker image list
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    605c77e624dd   2 years ago   141MB
root@yunwei:~# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    605c77e624dd   2 years ago   141MB
root@yunwei:~# 

8.7 镜像保存位置

后期大量镜像迁移的话,安装好docker,直接把这个目录直接复制过去即可。

image-20240321144754960

root@yunwei:~# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    605c77e624dd   2 years ago   141MB
root@yunwei:~#  cd /var/lib/docker/image/overlay2/imagedb/content/sha256/
root@yunwei:/var/lib/docker/image/overlay2/imagedb/content/sha256# ls
605c77e624ddb75e6110f997c58876baa13f8754486b461117934b24a9dc3a85
root@yunwei:/var/lib/docker/image/overlay2/imagedb/content/sha256# 

8.8 镜像打标签,重新给镜像起个名字

[root@rocky_docker sha256]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
busybox      latest    a416a98b71e2   3 months ago   4.26MB
[root@rocky_docker sha256]# docker tag busybox:latest busybox:v1.0
[root@rocky_docker sha256]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
busybox      latest    a416a98b71e2   3 months ago   4.26MB
busybox      v1.0      a416a98b71e2   3 months ago   4.26MB
[root@rocky_docker sha256]# 

8.9 docker命令用法

[root@rocky_docker sha256]# docker --help

Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Common Commands:
  run         Create and run a new container from an image
  exec        Execute a command in a running container
  ps          List containers
  build       Build an image from a Dockerfile
  pull        Download an image from a registry
  push        Upload an image to a registry
  images      List images
  login       Log in to a registry
  logout      Log out from a registry
  search      Search Docker Hub for images
  version     Show the Docker version information
  info        Display system-wide information

Management Commands:
  builder     Manage builds
  buildx*     Docker Buildx (Docker Inc., v0.11.2)
  compose*    Docker Compose (Docker Inc., v2.21.0)
  container   Manage containers
  context     Manage contexts
  image       Manage images
  manifest    Manage Docker image manifests and manifest lists
  network     Manage networks
  plugin      Manage plugins
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Swarm Commands:
  swarm       Manage Swarm

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  import      Import the contents from a tarball to create a filesystem image
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  wait        Block until one or more containers stop, then print their exit codes

Global Options:
      --config string      Location of client config files (default "/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context
                           set with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket to connect to
  -l, --log-level string   Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Run 'docker COMMAND --help' for more information on a command.

For more help on how to use Docker, head to https://docs.docker.com/go/guides/
[root@rocky_docker sha256]# 

9. docker部署应用

#启动一个nginx,我本机没有镜像,它会先下载一个,然后再启动
root@yunwei:~# docker run -d -p 80:80 nginx
8972475c313d3f14f7b0b25f773f8105bd549759247ca7080533f3d2e7887b68

#查看运行的容器
root@yunwei:~# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                               NAMES
8972475c313d   nginx     "/docker-entrypoint.…"   5 seconds ago   Up 2 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   mystifying_cray
root@yunwei:~# 


参数解释:

-d 让容器后台运行

-p 宿主机的本机端口80:容器内部的80端口,把容器的80端口,映射到宿主机的80端口

9.1 查看端口

root@yunwei:~# netstat -ntlup |grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4703/docker-proxy   
tcp6       0      0 :::80                   :::*                    LISTEN      4709/docker-proxy   
root@yunwei:~# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-ISOLATION-STAGE-1  all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain DOCKER (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            172.17.0.2           tcp dpt:80

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target     prot opt source               destination         
DOCKER-ISOLATION-STAGE-2  all  --  0.0.0.0/0            0.0.0.0/0           
RETURN     all  --  0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target     prot opt source               destination         
DROP       all  --  0.0.0.0/0            0.0.0.0/0           
RETURN     all  --  0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-USER (1 references)
target     prot opt source               destination         
RETURN     all  --  0.0.0.0/0            0.0.0.0/0       

9.2 访问nginx容器

访问容器有两种:

1、直接访问宿主机的IP+80

2、访问nginx容器IP+80

root@yunwei:~# curl 127.0.0.1
<!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@yunwei:~# 

image-20240321151147972

9.3 查看nginx容器的IP

docker inspect 容器ID/容器名称

image-20240321151340510

root@yunwei:~# docker inspect  9fa737927dd0  |grep  "IPAddress"^C
root@yunwei:~# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                               NAMES
8972475c313d   nginx     "/docker-entrypoint.…"   4 minutes ago   Up 4 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   mystifying_cray
root@yunwei:~# docker inspect  897  |grep  "IPAddress"
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",

9.4 给容器起个名称

root@yunwei:~# docker run -d -p 100:80 --name nginx100 nginx
c2d8a32c0e5347d25104ec107bf9f993bc1ed5fc57eeac2f6359f6438b0d17fa
root@yunwei:~# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                 NAMES
c2d8a32c0e53   nginx     "/docker-entrypoint.…"   3 seconds ago   Up 2 seconds   0.0.0.0:100->80/tcp, :::100->80/tcp   nginx100
8972475c313d   nginx     "/docker-entrypoint.…"   5 minutes ago   Up 5 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp     mystifying_cray
root@yunwei:~# 

image-20240321151500949

10 . docker常用命令

#停止容器
root@yunwei:~# docker stop nginx100 
nginx100

#查看运行的容器
root@yunwei:~#  docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                               NAMES
8972475c313d   nginx     "/docker-entrypoint.…"   7 minutes ago   Up 7 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   mystifying_cray


#查看所有容器,包括未运行的
root@yunwei:~# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS                      PORTS                               NAMES
c2d8a32c0e53   nginx     "/docker-entrypoint.…"   About a minute ago   Exited (0) 17 seconds ago                                       nginx100
8972475c313d   nginx     "/docker-entrypoint.…"   7 minutes ago        Up 7 minutes                0.0.0.0:80->80/tcp, :::80->80/tcp   mystifying_cray



# 启动容器 
root@yunwei:~# docker start nginx100 
nginx100

 #重启启动容器 
root@yunwei:~#  docker restart nginx100 
nginx100

# #查看容器日志
root@yunwei:~# docker logs nginx100 
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh


 # 修改容器名称
root@yunwei:~# docker rename nginx100 nginx200
root@yunwei:~# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                 NAMES
c2d8a32c0e53   nginx     "/docker-entrypoint.…"   4 minutes ago    Up 3 minutes    0.0.0.0:100->80/tcp, :::100->80/tcp   nginx200
8972475c313d   nginx     "/docker-entrypoint.…"   10 minutes ago   Up 10 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp     mystifying_cray
root@yunwei:~# 

# #进入容器内部
root@yunwei:~# docker exec -it nginx200 /bin/sh
# nginx -V
nginx version: nginx/1.21.5
built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
built with OpenSSL 1.1.1k  25 Mar 2021
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -ffile-prefix-map=/data/builder/debuild/nginx-1.21.5/debian/debuild-base/nginx-1.21.5=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'
# 

# #退出容器
# exit 
[root@rocky_docker sha256]# 

11. docker图形化界面

docker run --name fastos --restart always -p 8081:8081 -p 8082:8082 -e TZ=”Asia/Shanghai” -d -v /var/run/docker.sock:/var/run/docker.sock -v /etc/docker/:/etc/docker/ -v /root/data:/fast/data wangbinxingkong/fast:latest


#从公司仓库下载需要先配置  13里面的流程
cat > docker-compose-docker-destop.yaml <<EOF
version: '3.3'
services:
    fast:
        image: '10.20.220.230/ae/wangbinxingkong/fast:latest'
        volumes:
            - '/root/data:/fast/data'
            - '/etc/docker/:/etc/docker/'
            - '/var/run/docker.sock:/var/run/docker.sock'
        environment:
            - TZ=”Asia/Shanghai”
        ports:
            - '8082:8082'
            - '8081:8081'
        restart: always
        container_name: fastos

EOF

image-20240321152254932

image-20240321152330907

12 部署IT-tools


docker run -d --name it-tools --restart unless-stopped -p 8080:80 corentinth/it-tools:latest


#从公司仓库下载需要先配置  13里面的流程
# 修改称yaml文件
cat  > docker-compose-ittools.yaml <<EOF
version: '3.3'
services:
    it-tools:
        image: '10.20.220.230/ae/corentinth/it-tools:latest'  #如果内网下载不下来,删除10.20.220.230/ae/,从公网下载
        ports:
            - '8087:80'
        restart: unless-stopped
        container_name: it-tools
EOF


docker-compose -f docker-compose-ittools.yaml up -d

image-20240321180949842

13 修改docker可以从自建仓库下载镜像

root@yunwei:~# 
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://eih8mpot.mirror.aliyuncs.com"],
  "insecure-registries":["http://10.20.220.230"]
}
EOF

标签:容器,yunwei,--,0.0,技术,nginx,docker,root
From: https://www.cnblogs.com/9527com/p/18088902

相关文章

  • DIC技术用于船模六自由度运动模拟姿态测量(三维全场应变测量)
    六自由度平台可实现空间六自由度运动模拟,六自由度平台运动模拟系统是对舰船、飞机、宇航和车载设备等不同状态时的行动进行模拟,是对这些运行状态可靠性进行研究的重要模拟试验装置。▲六自由度运动仿真实验平台六自由度三维空间姿态测量,传统的接触式位姿测量方法具有事先......
  • 程序员群体对《三国演义》与《三国志》的独特情愫——从技术到人文的双重解读
            在现代科技领域中,程序员以其独特的职业特质和思维方式,在古典文学与史学著作中找到了与自身专业理念相融合的交汇点,其中,《三国演义》与《三国志》两部作品尤为受到程序员群体的青睐。本文将深入剖析程序员对这两部作品的热爱,以及这种喜好如何反映其职业特点与人......
  • 解决三维模型的立体裁剪的主要技术方法
    解决三维模型的立体裁剪的主要技术方法 三维模型的立体裁剪是指在三维空间中对物体进行裁剪,以便在渲染、动画和虚拟现实等应用中获得所需的效果。立体裁剪技术在计算机图形学和计算机辅助设计领域有着广泛的应用。本文将介绍三维模型立体裁剪的主要技术方法。 体素化......
  • 【ai技术】(3):树莓派4,成功安装ollama软件,内存4G,推荐使用命令行界面安装,使用raspi-config
    1,关于raspberrypi4项目https://www.bilibili.com/video/BV1K2421P71h/【ai技术】(3):树莓派4,成功安装ollama软件,内存4G,安装命令行版本,使用raspi-config配置wifi,速度9t/s2,下载raspberrypi镜像项目地址:https://www.raspberrypi.com/software/operating-systems/#r......
  • <爬虫部署,进阶Docker>----第十章 探究一下Docker Compose
    前言:        DockerCompose是一个用于定义和运行多容器应用程序的工具,它提供了一种简化和自动化容器编排的方式。在理解DockerCompose的背景之前,让我们先回顾一下容器化技术的发展。容器化技术的出现使得应用程序的部署和管理变得更加轻松和灵活。容器化通过......
  • 多机器人协同SLAM论文解读系列1——多机器人协同导航技术综述
    多机器人协同导航技术综述期刊:无人系统技术(综合影响因子2.018)第一作者:张辰Content多机器人协同定位技术概率估计方法优化方法地图匹配方法多机器人路径规划技术耦合式方法解耦式方法多机器人任务分配技术基于行为的分配方法市场机制方法群体智能方法人......
  • AJAX 前端开发利器:实现网页动态更新的核心技术
    AJAXAJAX是开发者的梦想,因为你可以:在不重新加载页面的情况下更新网页在页面加载后请求来自服务器的数据在页面加载后接收来自服务器的数据在后台向服务器发送数据HTML页面<!DOCTYPEhtml><html><body><divid="demo"><h2>让AJAX更改这段文字</h2><buttontype=......
  • 多机器人协同SLAM论文解读系列1——多机器人协同导航技术综述
    多机器人协同导航技术综述期刊:无人系统技术(综合影响因子2.018)第一作者:张辰Content多机器人协同定位技术概率估计方法优化方法地图匹配方法多机器人路径规划技术耦合式方法解耦式方法多机器人任务分配技术基于行为的分配方法市场机制方法群体智能方法人......
  • 2024.3.18-隐私计算-隐语-数据可信流通,从运维信任到技术信任
    学习感受本节课从背景介绍、可信/非可信与数据流通之间的关系、提出关于技术实现数据流通安全的解决方案笔记1:可信与非可信之间的关系可信:身份可确认、利益可依赖、能力有预期、行为有后果关于可信的定义/规则,其实在外循环当中其实很难去遵守,因为身份追踪是比......
  • 《Java核心技术·卷 II(原书第11版)》PDF
    本书针对Java11进行了修订,涵盖了完整的对高级UI特性、企业编程、网络、安全和Java强大的模块系统等内容的讨论。书中对Java复杂的新特性进行了深入而全面的研究,展示了如何使用它们来构建具有专业品质的应用程序,作者所设计的经过全面完整测试的示例反映了当今的Java风格和*佳实践......