docker容器技术分享
1. 应用部署历史
我们先来看看很久以前,服务器是怎么部署应用的。
由于物理机部署的缺点,后来出现了虚拟机
但是虚拟化也是有局限性的,每一个虚拟机都是一个完整的操作系统,要分配系统资源,虚拟机多到一定程度时,操作系统本身资源也就消耗殆尽,或者说必须扩容。
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 、内存、硬盘等资源,虚拟机性能就比较低了。
3.2容器技术
容器内的应用程序直接运行在宿主机的内核上。
容器内没有自己的内核。
也没有对硬件进行虚拟,因此容器比起虚拟机更为轻便。
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
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
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
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 导出镜像
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,直接把这个目录直接复制过去即可。
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:~#
9.3 查看nginx容器的IP
docker inspect 容器ID/容器名称
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:~#
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
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
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