一、Docker
KuangStudy
Docker学习视频:狂神说Docker教程
一、Docker概述
一、Docker为什么出现?
一款产品: 开发–上线 两套环境!应用环境,应用配置!
开发 — 运维。 问题:我在我的电脑上可以允许!版本更新,导致服务不可用!对于运维来说考验十分大?
环境配置是十分的麻烦,每一个及其都要部署环境(集群Redis、ES、Hadoop…) !费事费力。
发布一个项目( jar + (Redis MySQL JDK ES) ),项目能不能带上环境安装打包!
之前在服务器配置一个应用的环境 Redis MySQL JDK ES Hadoop 配置超麻烦了,不能够跨平台。
开发环境Windows,最后发布到Linux!
传统:开发jar,运维来做!
现在:开发打包部署上线,一套流程做完!
安卓流程:java — apk —发布(应用商店)一 张三使用apk一安装即可用!
docker流程: java-jar(环境) — 打包项目帯上环境(镜像) — ( Docker仓库:商店)-----
Docker给以上的问题,提出了解决方案!
Docker的思想就来自于集装箱!
JRE – 多个应用(端口冲突) – 原来都是交叉的!
隔离:Docker核心思想!打包装箱!每个箱子是互相隔离的。
Docker通过隔离机制,可以将服务器利用到极致!
本质:所有的技术都是因为出现了一些问题,我们需要去解决,才去学习!
二、Docker历史
2010年,几个的年轻人,就在美国成立了一家公司 dotcloud
做一些pass的云计算服务!LXC(Linux Container容器)有关的容器技术!
Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。
他们将自己的技术(容器化技术)命名就是 Docker
Docker刚刚延生的时候,没有引起行业的注意!dotCloud,就活不下去!
2013年,Docker开源!
越来越多的人发现docker的优点!火了。Docker每个月都会更新一个版本!
2014年4月9日,Docker1.0发布!
docker为什么这么火?十分的轻巧!
在容器技术出来之前,我们都是使用虚拟机技术!
虚拟机:在window中装一个VMware,通过这个软件我们可以虚拟出来一台或者多台电脑!笨重!
虚拟机也属于虚拟化技术,Docker容器技术,也是一种虚拟化技术!
1、vm : linux centos 原生镜像(一个电脑!) 隔离、需要开启多个虚拟机! 几个G 几分钟
2、docker: 隔离,镜像(最核心的环境 4m + jdk + mysql)十分的小巧,运行镜像就可以了!小巧! 几个M 秒级启动!1\
三、 聊聊Docker
Docker基于Go语言开发的!开源项目!
docker官网:https://www.docker.com/
docker文档:https://docs.docker.com/
docker仓库:https://hub.docker.com/
四、Docker能干嘛
1、之前的虚拟机技术!
虚拟机技术缺点:
1、 资源占用十分多
2、 冗余步骤多
3、 启动很慢!
2、容器化技术
容器化技术不是模拟一个完整的操作系统
比较Docker和虚拟机技术的不同:
- 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
- 容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了
- 每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响
3、 DevOps(开发、运维)
1、应用更快速的交付和部署
传统:一对帮助文档,安装程序。
Docker:打包镜像发布测试一键运行。
2、更便捷的升级和扩缩容
使用了 Docker之后,我们部署应用就和搭积木一样
项目打包为一个镜像,扩展服务器A!服务器B
3、更简单的系统运维
在容器化之后,我们的开发,测试环境都是高度一致的
4、更高效的计算资源利用
Docker是内核级别的虚拟化,可以在一个物理机上可以运行很多的容器实例!服务器的性能可以被压榨到极致。
二、Docker安装
一、Docker的基本组成
1、镜像(image):
docker镜像就好比是一个目标,可以通过这个目标来创建容器服务,tomcat镜像==>run==>容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。
2、容器(container):
Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的.
启动,停止,删除,基本命令
目前就可以把这个容器理解为就是一个简易的 Linux系统。
3、仓库(repository):
仓库就是存放镜像的地方!
仓库分为公有仓库和私有仓库。(很类似git)
Docker Hub是国外的。
阿里云、网易云…都有容器服务器(配置镜像加速!)
二、安装Docker
1、查看环境
#系统内核是3.10以上的
[root@Jin ~]# uname -r
3.10.0-1127.19.1.el7.x86_64
#系统版本
[root@Jin ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
2、安装Docker
官网
1、点击Develpoers中的Docs,跳转到doc页面
2、点击Guides
3、点击Get Docker,再带你几Docker for Linux,跳转页面
4、点击Install on CentOS
5、按照文档说明卸载旧的版本
#1、卸载旧版本
[root@Jin /]# yum remove docker \
> docker-client \
> docker-client-latest \
> docker-common \
> docker-latest \
> docker-latest-logrotate \
> docker-logrotate \
> docker-engine
Loaded plugins: fastestmirror
No Match for argument: docker
No Match for argument: docker-client
No Match for argument: docker-client-latest
No Match for argument: docker-common
No Match for argument: docker-latest
No Match for argument: docker-latest-logrotate
No Match for argument: docker-logrotate
No Match for argument: docker-engine
No Packages marked for removal
6、按照文档说明安装需要的安装包
#2、安装需要的安装包
[root@Jin /]# yum install -y yum-utils
7、按照文档说明设置镜像仓库
#3、按照文档说明设置镜像仓库(文档上是国外的,可以找阿里云的镜像)
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
[root@Jin /]# yum-config-manager \
> --add-repo \
> https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
8、按照docker的最新版引擎(docker-ce 社区版,docker-ee企业版)
#4、按照之前更新也下索引yum
[root@Jin /]# yum makecache fast
#5、按照docker引擎(docker-ce 社区版,docker-ee企业版)
[root@Jin /]# yum install docker-ce docker-ce-cli containerd.io
9、启动docker
#6、启动docker
[root@Jin /]# systemctl start docker
#7、查看docker版本
[root@Jin /]# docker version
10、测试hello-world
#8、测试hello-world(证明docker下载成功)
[root@Jin /]# docker run hello-world
11、查看hello-world镜像
#9、查看hello-world镜像
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 3 months ago 13.3kB
12、了解一下卸载docker
#1、停止运行docker
systemctl stop docker
#2、卸载 Docker 引擎、CLI 和 Containerd 软件包:
yum remove docker-ce docker-ce-cli containerd.io
#3、主机上的映像、容器、卷或自定义配置文件不会自动删除。要删除所有映像、容器和卷:
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
3、阿里云镜像加速
1、点击产品与服务
2、在产品与服务里的弹性计算中找到容器镜像服务,点击
3、找到镜像加速器,点击CentOS
4、配置使用
[root@Jin /]# sudo mkdir -p /etc/docker
[root@Jin /]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["https://k143aj4e.mirror.aliyuncs.com"]
> }
> EOF
{
"registry-mirrors": ["https://k143aj4e.mirror.aliyuncs.com"]
}
[root@Jin /]# sudo systemctl daemon-reload
[root@Jin /]# sudo systemctl restart docker
[root@Jin /]# docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
4、回顾run一个镜像的流程
5、底层原理
1、Docker是怎么工作的?
Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问!
Docker-Server接收到Docker-Client的指令,就会执行这个命令!
2、为什么Docker比Vm(虚拟机)快
1、docker有着比虚拟机更少的抽象层。由于docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。
2、docker利用的是宿主机的内核,而不需要Guest OS。
GuestOS: VM(虚拟机)里的的系统(OS);
HostOS:物理机里的系统(OS);
因此,当新建一个 容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。仍而避免引导、加载操作系统内核返个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载GuestOS,返个新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了这个复杂的过程,因此新建一个docker容器只需要几秒钟。
三、Docker的常用命令
一、帮助命令
docker version #显示docker的版本信息。
docker info #显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help #帮助命令
帮助文档地址:https://docs.docker.com/reference/
二、镜像命令
docker images #查看所有本地主机上的镜像 可以使用docker image ls代替
docker search #搜索镜像
docker pull #下载镜像 docker image pull
docker rmi #删除镜像 docker image rm
1、docker images
[root@Jin /]# docker images --help
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
List images
Options:
-a, --all Show all images (default hides intermediate images)
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q, --quiet Only show image IDs
#查看所有本地主机上的镜像 可以使用docker image ls代替
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 3 months ago 13.3kB
# 解释
#REPOSITORY # 镜像的仓库源
#TAG # 镜像的标签
#IMAGE ID # 镜像的id
#CREATED # 镜像的创建时间
#SIZE # 镜像的大小
[root@Jin /]# docker images -a #查看docker的所有镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 3 months ago 13.3kB
[root@Jin /]# docker images -q #查看docker的镜像id
feb5d9fea6a5
[root@Jin /]# docker images -aq #查看docker的所有镜像id
feb5d9fea6a5
2、docker search
[root@Jin /]# docker search --help
Usage: docker search [OPTIONS] TERM
Search the Docker Hub for images
Options:
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print search using a Go template
--limit int Max number of search results (default 25)
--no-trunc Don't truncate output
#搜索镜像
[root@Jin /]# docker search mysql
#下方图片
# --filter=STARS=3000 #搜索出来的镜像就是STARS大于3000的
[root@Jin /]# docker search mysql --filter=STARS=3000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11995 [OK]
mariadb MariaDB Server is a high performing open sou… 4591 [OK]
3、docker pull
[root@Jin /]# docker pull --help
Usage: docker pull [OPTIONS] NAME[:TAG|@DIGEST]
Pull an image or a repository from a registry
Options:
-a, --all-tags Download all tagged images in the repository
--disable-content-trust Skip image verification (default true)
--platform string Set platform if server is multi-platform capable
-q, --quiet Suppress verbose output
#下载镜像 docker image pull
#下载镜像 docker pull 镜像名[:tag]
[root@Jin /]# docker pull mysql
Using default tag: latest #如果不写tag,默认就是latest
latest: Pulling from library/mysql #分层下载: docker image 的核心 联合文件系统
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709 # 签名 防伪
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址
#docker pull mysql:5.7 #等价于 #docker pull docker.io/library/mysql:5.7
#指定版本下载
[root@Jin /]# docker pull mysql:5.7
5.7: Pulling from library/mysql
72a69066d2fe: Already exists #docker里的高明之处,节省内存,共用
93619dbc5b36: Already exists
99da31dd6142: Already exists
626033c43d70: Already exists
37d5d7efb64e: Already exists
ac563158d721: Already exists
d2ba16033dad: Already exists
0ceb82207cd7: Pull complete #docker这里只下载需要的
37f2405cae96: Pull complete
e2482e017e53: Pull complete
70deed891d42: Pull complete
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
4、docker rmi 镜像id
[root@Jin /]# docker rmi --help
Usage: docker rmi [OPTIONS] IMAGE [IMAGE...]
Remove one or more images
Options:
-f, --force Force removal of the image
--no-prune Do not delete untagged parents
#删除镜像 docker image rm
docker rmi -f 镜像id #删除指定的镜像
docker rmi -f 镜像id 镜像id 镜像id 镜像id #删除指定的镜像
docker rmi -f $(docker images -aq) #递归删除全部的镜像
三、容器命令
docker run 镜像id #新建容器并启动
docker ps #列出所有运行的容器 docker container list
exit #退出容器
docker rm 容器id #删除指定容器
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
1、下载一个centos来练习测试学习
[root@Jin /]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
2、docker run 镜像id
#新建容器并启动
[root@Jin /]# docker run --help
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Run a command in a new container
Options:
--add-host list Add a custom host-to-IP mapping (host:ip)
-a, --attach list Attach to STDIN, STDOUT or STDERR
--blkio-weight uint16 Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)
--blkio-weight-device list Block IO weight (relative device weight) (default [])
--cap-add list Add Linux capabilities
--cap-drop list Drop Linux capabilities
--cgroup-parent string Optional parent cgroup for the container
--cgroupns string Cgroup namespace to use (host|private)
'host': Run the container in the Docker host's cgroup namespace
'private': Run the container in its own private cgroup namespace
'': Use the cgroup namespace as configured by the
default-cgroupns-mode option on the daemon (default)
--cidfile string Write the container ID to the file
--cpu-period int Limit CPU CFS (Completely Fair Scheduler) period
--cpu-quota int Limit CPU CFS (Completely Fair Scheduler) quota
--cpu-rt-period int Limit CPU real-time period in microseconds
--cpu-rt-runtime int Limit CPU real-time runtime in microseconds
-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)
--cpuset-mems string MEMs in which to allow execution (0-3, 0,1)
-d, --detach Run container in background and print container ID
--detach-keys string Override the key sequence for detaching a container
--device list Add a host device to the container
--device-cgroup-rule list Add a rule to the cgroup allowed devices list
--device-read-bps list Limit read rate (bytes per second) from a device (default [])
--device-read-iops list Limit read rate (IO per second) from a device (default [])
--device-write-bps list Limit write rate (bytes per second) to a device (default [])
--device-write-iops list Limit write rate (IO per second) to a device (default [])
--disable-content-trust Skip image verification (default true)
--dns list Set custom DNS servers
--dns-option list Set DNS options
--dns-search list Set custom DNS search domains
--domainname string Container NIS domain name
--entrypoint string Overwrite the default ENTRYPOINT of the image
-e, --env list Set environment variables
--env-file list Read in a file of environment variables
--expose list Expose a port or a range of ports
--gpus gpu-request GPU devices to add to the container ('all' to pass all GPUs)
--group-add list Add additional groups to join
--health-cmd string Command to run to check health
--health-interval duration Time between running the check (ms|s|m|h) (default 0s)
--health-retries int Consecutive failures needed to report unhealthy
--health-start-period duration Start period for the container to initialize before starting health-retries countdown (ms|s|m|h)
(default 0s)
--health-timeout duration Maximum time to allow one check to run (ms|s|m|h) (default 0s)
--help Print usage
-h, --hostname string Container host name
--init Run an init inside the container that forwards signals and reaps processes
-i, --interactive Keep STDIN open even if not attached
--ip string IPv4 address (e.g., 172.30.100.104)
--ip6 string IPv6 address (e.g., 2001:db8::33)
--ipc string IPC mode to use
--isolation string Container isolation technology
--kernel-memory bytes Kernel memory limit
-l, --label list Set meta data on a container
--label-file list Read in a line delimited file of labels
--link list Add link to another container
--link-local-ip list Container IPv4/IPv6 link-local addresses
--log-driver string Logging driver for the container
--log-opt list Log driver options
--mac-address string Container MAC address (e.g., 92:d0:c6:0a:29:33)
-m, --memory bytes Memory limit
--memory-reservation bytes Memory soft limit
--memory-swap bytes Swap limit equal to memory plus swap: '-1' to enable unlimited swap
--memory-swappiness int Tune container memory swappiness (0 to 100) (default -1)
--mount mount Attach a filesystem mount to the container
--name string Assign a name to the container
--network network Connect a container to a network
--network-alias list Add network-scoped alias for the container
--no-healthcheck Disable any container-specified HEALTHCHECK
--oom-kill-disable Disable OOM Killer
--oom-score-adj int Tune host's OOM preferences (-1000 to 1000)
--pid string PID namespace to use
--pids-limit int Tune container pids limit (set -1 for unlimited)
--platform string Set platform if server is multi-platform capable
--privileged Give extended privileges to this container
-p, --publish list Publish a container's port(s) to the host
-P, --publish-all Publish all exposed ports to random ports
--pull string Pull image before running ("always"|"missing"|"never") (default "missing")
--read-only Mount the container's root filesystem as read only
--restart string Restart policy to apply when a container exits (default "no")
--rm Automatically remove the container when it exits
--runtime string Runtime to use for this container
--security-opt list Security Options
--shm-size bytes Size of /dev/shm
--sig-proxy Proxy received signals to the process (default true)
--stop-signal string Signal to stop a container (default "SIGTERM")
--stop-timeout int Timeout (in seconds) to stop a container
--storage-opt list Storage driver options for the container
--sysctl map Sysctl options (default map[])
--tmpfs list Mount a tmpfs directory
-t, --tty Allocate a pseudo-TTY
--ulimit ulimit Ulimit options (default [])
-u, --user string Username or UID (format: <name|uid>[:<group|gid>])
--userns string User namespace to use
--uts string UTS namespace to use
-v, --volume list Bind mount a volume
--volume-driver string Optional volume driver for the container
--volumes-from list Mount volumes from the specified container(s)
-w, --workdir string Working directory inside the container
#参书说明
docker run [可选参数] image | docker container run [可选参数] image
--name="Name" 容器名字 tomcat01 tomcat02 用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p(小写) 指定容器的端口 -p 8080(宿主机):8080(容器)
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P(大写) 随机指定端口
#测试,启动并进入容器
[root@Jin /]# docker images #查看docker里的centos镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764 4 months ago 231MB
[root@Jin /]# docker run -it centos /bin/bash #使用交互方式运行启动并进入容器
[root@e50fd4a491b5 /]# ls #查看docker内centos容器的目录(内部命令不完善)
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@e50fd4a491b5 /]# exit #从docker的centos容器退回主机(退出容器)
exit
[root@Jin /]# ls #查看主机目录
bin boot dev etc home install.sh lib lib64 lost+found media mnt opt patch proc root run sbin srv sys tmp usr var www
3、docker ps
[root@Jin /]# docker ps --help
Usage: docker ps [OPTIONS]
List containers
Options:
-a, --all Show all containers (default shows just running)
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print containers using a Go template
-n, --last int Show n last created containers (includes all states) (default -1)
-l, --latest Show the latest created container (includes all states)
--no-trunc Don't truncate output
-q, --quiet Only display container IDs
-s, --size Display total file sizes
#列出所有运行的容器 docker container list
[root@Jin /]# docker ps #列出当前正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker ps -a #列出当前正在运行的容器+带出历史运行过的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e50fd4a491b5 centos "/bin/bash" 6 minutes ago Exited (0) 3 minutes ago competent_maxwell
669777e459f5 feb5d9fea6a5 "/hello" 2 hours ago Exited (0) 2 hours ago mystifying_murdock
f1acebcbbae2 feb5d9fea6a5 "/hello" 2 hours ago Exited (0) 2 hours ago vigorous_williams
[root@Jin /]# docker ps -a -n=1 #显示最近创建的1个容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e50fd4a491b5 centos "/bin/bash" 7 minutes ago Exited (0) 4 minutes ago competent_maxwell
[root@Jin /]# docker ps -aq #只显示容器的编号
e50fd4a491b5
669777e459f5
f1acebcbbae2
#docker ps 命令
#列出当前正在运行的容器
-a #列出当前正在运行的容器+带出历史运行过的容器
-n=? #显示最近创建的?个容器
-q #只显示容器的编号
4、exit
exit #容器直接退出
ctrl +P +Q #容器不停止退出
4、docker rm 容器id
[root@Jin /]# docker rm --help
Usage: docker rm [OPTIONS] CONTAINER [CONTAINER...]
Remove one or more containers
Options:
-f, --force Force the removal of a running container (uses SIGKILL)
-l, --link Remove the specified link
-v, --volumes Remove anonymous volumes associated with the container
#删除指定容器
docker rm 容器id #删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -f
docker rm -f $(docker ps -aq) #删除指定的容器
docker ps -a -q|xargs docker rm #删除所有的容器
5、docker start 容器id
[root@Jin /]# docker start --help
Usage: docker start [OPTIONS] CONTAINER [CONTAINER...]
Start one or more stopped containers
Options:
-a, --attach Attach STDOUT/STDERR and forward signals
--detach-keys string Override the key sequence for detaching a container
-i, --interactive Attach container's STDIN
#启动容器
[root@Jin /]# docker ps #列出当前正在运行的容器,为空
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker ps -a #列出当前正在运行的容器+带出历史运行过的容器,历史为空
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker run -it centos /bin/bash #运行一个centos容器
[root@cdf5f1835e5a /]# exit #退出centos容器,让它停止运行
exit
[root@Jin /]# docker ps #查看当前正在运行的容器,为空
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker ps -a #查看当前正在运行的容器+带出历史运行过的容器,历史运行1个
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cdf5f1835e5a centos "/bin/bash" 19 seconds ago Exited (0) 15 seconds ago nifty_booth
[root@Jin /]# docker start cdf5f1835e5a #启动该历史容器
cdf5f1835e5a
[root@Jin /]# docker ps #查看当前正在运行的容器,可以看到历史容器已经启动运行
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cdf5f1835e5a centos "/bin/bash" About a minute ago Up 6 seconds nifty_booth
[root@Jin /]# docker ps -a #查看当前正在运行的容器+带出历史运行过的容器,历史运行1个
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cdf5f1835e5a centos "/bin/bash" 10 minutes ago Up 34 seconds nifty_booth
6、docker stop 容器id
[root@Jin /]# docker stop --help
Usage: docker stop [OPTIONS] CONTAINER [CONTAINER...]
Stop one or more running containers
Options:
-t, --time int Seconds to wait for stop before killing it (default 10)
#停止当前正在运行的容器
[root@Jin /]# docker stop cdf5f1835e5a #停止当前正在运行的容器
cdf5f1835e5a
[root@Jin /]# docker ps #查看当前正在运行的容器,为空
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker ps -a #查看当前正在运行的容器+带出历史运行过的容器,已成历史
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cdf5f1835e5a centos "/bin/bash" 4 minutes ago Exited (0) 9 seconds ago nifty_booth
7、docker restart 容器id
[root@Jin /]# docker restart --help
Usage: docker restart [OPTIONS] CONTAINER [CONTAINER...]
Restart one or more containers
Options:
-t, --time int Seconds to wait for stop before killing the container (default 10)
#重启容器
[root@Jin /]# docker restart cdf5f1835e5a #重启当前容器
cdf5f1835e5a
[root@Jin /]# docker ps #查看当前正在运行的容器,可以看到历史容器已经启动运行
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cdf5f1835e5a centos "/bin/bash" 10 minutes ago Up 3 seconds nifty_booth
[root@Jin /]# docker ps -a #查看当前正在运行的容器+带出历史运行过的容器,历史运行1个
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cdf5f1835e5a centos "/bin/bash" 10 minutes ago Up 34 seconds nifty_booth
8、docker kill 容器id
[root@Jin /]# docker kill --help
Usage: docker kill [OPTIONS] CONTAINER [CONTAINER...]
Kill one or more running containers
Options:
-s, --signal string Signal to send to the container (default "KILL")
#强制停止当前容器
root@Jin /]# docker kill cdf5f1835e5a #强制停止当前容器
cdf5f1835e5a
[root@Jin /]# docker ps #查看当前正在运行的容器,为空
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker ps -a #查看当前正在运行的容器+带出历史运行过的容器,已成历史
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cdf5f1835e5a centos "/bin/bash" 15 minutes ago Exited (137) 6 seconds ago nifty_booth
四、常用的其他命令
1、docker run -d 镜像名 #后台启动容器
2、docker logs 容器id #查看日志
3、docker top 容器id #查看容器中进程信息 ps
4、docker inspect 容器id #查看镜像的元数据
5、docker exec -it 容器id bashShell #进入容器后开启一个新的终端,可以在里面操作(常用)
6、docker attach 容器id #进入容器正在执行的终端,不会启动新的进程
7、docker cp 容器id:容器内路劲 目的的主机路劲 #从容器内拷贝文件到主机上
1、docker run -d 镜像名
#后台启动容器
[root@Jin /]# docker run -d centos #后台启动centos容器
804ff690c53fa2206cfcc486b76ce375f8d4b9659dbf8d1622babf8521f03bc8
[root@Jin /]# docker ps #列出当前正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker ps -a #列出当前正在运行的容器+带出历史运行过的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
804ff690c53f centos "/bin/bash" 7 seconds ago Exited (0) 6 seconds ago amazing_curie
# 问题docker ps. 发现centos 停止了
# 常见的坑,docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止
# nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
2、docker logs 容器id
[root@Jin /]# docker logs --help
Usage: docker logs [OPTIONS] CONTAINER
Fetch the logs of a container
Options:
--details Show extra details provided to logs
-f, --follow Follow log output
--since string Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
-n, --tail string Number of lines to show from the end of the logs (default "all")
-t, --timestamps Show timestamps
--until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
#查看日志
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
804ff690c53f centos "/bin/bash" 18 minutes ago Exited (0) 18 minutes ago amazing_curie
[root@Jin /]# docker run -d centos /bin/sh -c "while true;do echo Jin;sleep 1;done"
147cf5252b46ed8190faca361e7c60f5c2e07f36931261c2299dcec1ce839496
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
147cf5252b46 centos "/bin/sh -c 'while t…" 4 seconds ago Up 3 seconds hopeful_blackburn
[root@Jin /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
147cf5252b46 centos "/bin/sh -c 'while t…" 11 seconds ago Up 10 seconds hopeful_blackburn
804ff690c53f centos "/bin/bash" 22 minutes ago Exited (0) 22 minutes ago amazing_curie
[root@Jin /]# docker logs -tf --tail 10 147cf5252b46
2022-01-20T09:28:12.152771473Z Jin
2022-01-20T09:28:13.154941667Z Jin
2022-01-20T09:28:14.157061463Z Jin
2022-01-20T09:28:15.159186164Z Jin
2022-01-20T09:28:16.161556094Z Jin
2022-01-20T09:28:17.163631824Z Jin
2022-01-20T09:28:18.165699169Z Jin
2022-01-20T09:28:19.167913722Z Jin
2022-01-20T09:28:20.170283854Z Jin
2022-01-20T09:28:21.172387225Z Jin
#显示日志
-tf #显示日志信息(一直更新)
--tail number #需要显示日志条数
docker logs -t --tail n 容器id #查看n行日志
docker logs -ft 容器id #跟着日志
3、docker top 容器id
#查看容器中进程信息
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
147cf5252b46 centos "/bin/sh -c 'while t…" 11 minutes ago Up 11 minutes hopeful_blackburn
[root@Jin /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
147cf5252b46 centos "/bin/sh -c 'while t…" 11 minutes ago Up 11 minutes hopeful_blackburn
[root@Jin /]# docker top 147cf5252b46
UID PID PPID C STIME TTY TIME CMD
root 28423 28405 0 17:27 ? 00:00:00 /bin/sh -c while true;do echo Jin;sleep 1;done
root 30493 28423 0 17:39 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
4、docker inspect 容器id
#查看镜像的元数据
[root@Jin /]# docker inspect --help
Usage: docker inspect [OPTIONS] NAME|ID [NAME|ID...]
Return low-level information on Docker objects
Options:
-f, --format string Format the output using the given Go template
-s, --size Display total file sizes if the type is container
--type string Return JSON for specified type
#查看镜像的元数据
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
147cf5252b46 centos "/bin/sh -c 'while t…" 33 minutes ago Up 33 minutes hopeful_blackburn
[root@Jin /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
147cf5252b46 centos "/bin/sh -c 'while t…" 33 minutes ago Up 33 minutes hopeful_blackburn
[root@Jin /]# docker inspect 147cf5252b46
[
{
"Id": "147cf5252b46ed8190faca361e7c60f5c2e07f36931261c2299dcec1ce839496",
"Created": "2022-01-20T09:27:41.742911618Z",
"Path": "/bin/sh",
"Args": [
"-c",
"while true;do echo Jin;sleep 1;done"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 28423,
"ExitCode": 0,
"Error": "",
"StartedAt": "2022-01-20T09:27:42.086397147Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
"ResolvConfPath": "/var/lib/docker/containers/147cf5252b46ed8190faca361e7c60f5c2e07f36931261c2299dcec1ce839496/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/147cf5252b46ed8190faca361e7c60f5c2e07f36931261c2299dcec1ce839496/hostname",
"HostsPath": "/var/lib/docker/containers/147cf5252b46ed8190faca361e7c60f5c2e07f36931261c2299dcec1ce839496/hosts",
"LogPath": "/var/lib/docker/containers/147cf5252b46ed8190faca361e7c60f5c2e07f36931261c2299dcec1ce839496/147cf5252b46ed8190faca361e7c60f5c2e07f36931261c2299dcec1ce839496-json.log",
"Name": "/hopeful_blackburn",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": {},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": null,
"CapDrop": null,
"CgroupnsMode": "host",
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": [],
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DeviceCgroupRules": null,
"DeviceRequests": null,
"KernelMemory": 0,
"KernelMemoryTCP": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": false,
"PidsLimit": null,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/ab96a59f4d2ff35c697f844ba02421b67fb39aa8d371b9092bc0ae2d021d86c5-init/diff:/var/lib/docker/overlay2/062d86c5e366ca0ececd1c38ff44dee264283b594189692994d190dd67fee589/diff",
"MergedDir": "/var/lib/docker/overlay2/ab96a59f4d2ff35c697f844ba02421b67fb39aa8d371b9092bc0ae2d021d86c5/merged",
"UpperDir": "/var/lib/docker/overlay2/ab96a59f4d2ff35c697f844ba02421b67fb39aa8d371b9092bc0ae2d021d86c5/diff",
"WorkDir": "/var/lib/docker/overlay2/ab96a59f4d2ff35c697f844ba02421b67fb39aa8d371b9092bc0ae2d021d86c5/work"
},
"Name": "overlay2"
},
"Mounts": [],
"Config": {
"Hostname": "147cf5252b46",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/sh",
"-c",
"while true;do echo Jin;sleep 1;done"
],
"Image": "centos",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.label-schema.build-date": "20210915",
"org.label-schema.license": "GPLv2",
"org.label-schema.name": "CentOS Base Image",
"org.label-schema.schema-version": "1.0",
"org.label-schema.vendor": "CentOS"
}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "abd457c1d26b17b9ed9dc337dc51332ddcf8040730c279e9a74a1a965b476204",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {},
"SandboxKey": "/var/run/docker/netns/abd457c1d26b",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "236ee46e9c4e2db362215c37fcaee68912266fb73b4553098c6f35e104c01775",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:02",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "48b70a1d71f00b2fc81e5cc7552d7baf620ad160932904552f0e5df1c62caaa1",
"EndpointID": "236ee46e9c4e2db362215c37fcaee68912266fb73b4553098c6f35e104c01775",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null
}
}
}
}
]
5、docker exec -it 容器id bashShell
#进入当前正在运行的容器
#进入容器后开启一个新的终端,可以在里面操作(常用)
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
147cf5252b46 centos "/bin/sh -c 'while t…" 17 hours ago Up 17 hours hopeful_blackburn
[root@Jin /]# docker exec -it 147cf5252b46 /bin/bash #进入当前正在运行的容器
[root@147cf5252b46 /]# ps -ef #
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Jan20 ? 00:00:20 /bin/sh -c while true;do echo Jin;sleep 1;done
root 27421 0 0 02:08 pts/0 00:00:00 /bin/bash
root 27444 1 0 02:08 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
root 27445 27421 0 02:08 pts/0 00:00:00 ps -ef
[root@147cf5252b46 /]# exit
exit
[root@Jin /]#
6、docker attach 容器id
#进入当前正在运行的容器
#进入容器正在执行的终端,不会启动新的进程
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
147cf5252b46 centos "/bin/sh -c 'while t…" 17 hours ago Up 17 hours hopeful_blackburn
[root@Jin /]# docker attach 147cf5252b46
Jin
Jin
Jin
Jin
Jin
7、docker cp 容器id:容器内路劲 目的的主机路劲
#从容器内拷贝文件到主机上
[root@Jin /]# cd home #查看root下的/home目录下文件
[root@Jin home]# ls
Jin JinTest Jin.txt redis test www
[root@Jin home]# cd /
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764 4 months ago 231MB
[root@Jin /]# docker run -it centos /bin/bash #交互运行centos镜像,并进入该容器
[root@25a7baa32d3b /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@25a7baa32d3b /]# cd /home
[root@25a7baa32d3b home]# ls
[root@25a7baa32d3b home]# touch copy.java #在容器的/home目录下创建一个copu.java文件
[root@25a7baa32d3b home]# ls
copy.java
[root@25a7baa32d3b home]# exit #exit退出容器,容器停止运行
exit
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker ps -a #但只要容器还在(历史上,没有被rm -f),数据就还在
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
25a7baa32d3b centos "/bin/bash" 55 seconds ago Exited (0) 14 seconds ago dazzling_thompson
[root@Jin /]# docker cp 25a7baa32d3b:/home/copy.java /home #将容器/home下的copy.java文件copy到/home下
[root@Jin /]# ls
bin boot dev etc home install.sh lib lib64 lost+found media mnt opt patch proc root run sbin srv sys tmp usr var www
[root@Jin /]# cd /home
[root@Jin home]# ls
copy.java Jin JinTest Jin.txt redis test www
五、小结
[root@Jin /]# docker --help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
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(s) 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
Management Commands:
app* Docker App (Docker Inc., v0.9.1-beta3)
builder Manage builds
buildx* Docker Buildx (Docker Inc., v0.7.1-docker)
config Manage Docker configs
container Manage containers
context Manage contexts
image Manage images
manifest Manage Docker image manifests and manifest lists
network Manage networks
node Manage Swarm nodes
plugin Manage plugins
scan* Docker Scan (Docker Inc., v0.12.0)
secret Manage Docker secrets
service Manage services
stack Manage Docker stacks
swarm Manage Swarm
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes
Commands:
attach Attach local standard input, output, and error streams to a running container
build Build an image from a Dockerfile
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
exec Run a command in a running container
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
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
login Log in to a Docker registry
logout Log out from a Docker registry
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
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive (streamed to STDOUT by default)
search Search the Docker Hub for images
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
version Show the Docker version information
wait Block until one or more containers stop, then print their exit codes
Run 'docker COMMAND --help' for more information on a command.
四、docker部署应用
Dockerhub的地址:https://hub.docker.com/
1、服务器添加安全组开发端口:
2、宝塔面板放行端口
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xqASnPMe-1679562589551)(https://gitee.com/happy_sad/typora-image/raw/master/images/1642742542354.png)]
一、部署Nginx
1、Xshell执行部署与启动
# -d 后台运行
# --name 给容器命名
# -p 宿主机端口:
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764 4 months ago 231MB
[root@Jin /]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 16161 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 2109 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 821 [OK]
jc21/nginx-proxy-manager Docker container for managing Nginx proxy ho… 314
linuxserver/nginx An Nginx container, brought to you by LinuxS… 160
tiangolo/nginx-rtmp Docker image with Nginx using the nginx-rtmp… 151 [OK]
jlesage/nginx-proxy-manager Docker container for Nginx Proxy Manager 150 [OK]
alfg/nginx-rtmp NGINX, nginx-rtmp-module and FFmpeg from sou… 114 [OK]
nginxdemos/hello NGINX webserver that serves a simple page co… 82 [OK]
privatebin/nginx-fpm-alpine PrivateBin running on an Nginx, php-fpm & Al… 62 [OK]
nginx/nginx-ingress NGINX and NGINX Plus Ingress Controllers fo… 59
nginxinc/nginx-unprivileged Unprivileged NGINX Dockerfiles 57
nginxproxy/nginx-proxy Automated Nginx reverse proxy for docker con… 34
staticfloat/nginx-certbot Opinionated setup for automatic TLS certs lo… 25 [OK]
nginx/nginx-prometheus-exporter NGINX Prometheus Exporter for NGINX and NGIN… 23
schmunk42/nginx-redirect A very simple container to redirect HTTP tra… 19 [OK]
centos/nginx-112-centos7 Platform for running nginx 1.12 or building … 16
centos/nginx-18-centos7 Platform for running nginx 1.8 or building n… 13
flashspys/nginx-static Super Lightweight Nginx Image 12 [OK]
bitwarden/nginx The Bitwarden nginx web server acting as a r… 12
mailu/nginx Mailu nginx frontend 10 [OK]
sophos/nginx-vts-exporter Simple server that scrapes Nginx vts stats a… 7 [OK]
ansibleplaybookbundle/nginx-apb An APB to deploy NGINX 3 [OK]
wodby/nginx Generic nginx 1 [OK]
arnau/nginx-gate Docker image with Nginx with Lua enabled on … 1 [OK]
[root@Jin /]# 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@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 3 weeks ago 141MB
centos latest 5d0da3dc9764 4 months ago 231MB
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker run -d --name nginx01 -p 39000:80 nginx
17faa6fdbd46c73ec29cc88aa9a34967ac2224c75a66b79e1f55303aa1d61af2
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
17faa6fdbd46 nginx "/docker-entrypoint.…" 10 seconds ago Up 9 seconds 0.0.0.0:39000->80/tcp, :::39000->80/tcp nginx01
[root@Jin /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
17faa6fdbd46 nginx "/docker-entrypoint.…" 14 seconds ago Up 13 seconds 0.0.0.0:39000->80/tcp, :::39000->80/tcp nginx01
[root@Jin /]# curl localhost:39000
<!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>
2、-p 端口映射
3、查看运行效果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XC08S8IE-1679562589553)(https://gitee.com/happy_sad/typora-image/raw/master/images/1642743588404.png)]
4、进入容器和停止容器
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
17faa6fdbd46 nginx "/docker-entrypoint.…" 31 minutes ago Up 31 minutes 0.0.0.0:39000->80/tcp, :::39000->80/tcp nginx01
[root@Jin /]# docker exec -it nginx01 /bin/bash
root@17faa6fdbd46:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@17faa6fdbd46:/# cd /etc/nginx
root@17faa6fdbd46:/etc/nginx# ls
conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
root@17faa6fdbd46:/etc/nginx# exit
exit
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
17faa6fdbd46 nginx "/docker-entrypoint.…" 33 minutes ago Up 33 minutes 0.0.0.0:39000->80/tcp, :::39000->80/tcp nginx01
[root@Jin /]# docker stop 17faa6fdbd46
17faa6fdbd46
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
17faa6fdbd46 nginx "/docker-entrypoint.…" 34 minutes ago Exited (0) 26 seconds ago nginx01
二、部署Tomcat
1、Xshell执行部署与启动
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 3 weeks ago 141MB
centos latest 5d0da3dc9764 4 months ago 231MB
[root@Jin /]# docker search tomcat
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tomcat Apache Tomcat is an open source implementati… 3232 [OK]
tomee Apache TomEE is an all-Apache Java EE certif… 94 [OK]
dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base… 57 [OK]
kubeguide/tomcat-app Tomcat image for Chapter 1 33
consol/tomcat-7.0 Tomcat 7.0.57, 8080, "admin/admin" 18 [OK]
cloudesire/tomcat Tomcat server, 6/7/8 15 [OK]
aallam/tomcat-mysql Debian, Oracle JDK, Tomcat & MySQL 12 [OK]
arm32v7/tomcat Apache Tomcat is an open source implementati… 11
andreptb/tomcat Debian Jessie based image with Apache Tomcat… 10 [OK]
rightctrl/tomcat CentOS , Oracle Java, tomcat application ssl… 7 [OK]
arm64v8/tomcat Apache Tomcat is an open source implementati… 7
unidata/tomcat-docker Security-hardened Tomcat Docker container. 5 [OK]
jelastic/tomcat An image of the Tomcat Java application serv… 3
amd64/tomcat Apache Tomcat is an open source implementati… 3
fabric8/tomcat-8 Fabric8 Tomcat 8 Image 2 [OK]
cfje/tomcat-resource Tomcat Concourse Resource 2
oobsri/tomcat8 Testing CI Jobs with different names. 2
camptocamp/tomcat-logback Docker image for tomcat with logback integra… 1 [OK]
picoded/tomcat7 tomcat7 with jre8 and MANAGER_USER / MANAGER… 1 [OK]
ppc64le/tomcat Apache Tomcat is an open source implementati… 1
99taxis/tomcat7 Tomcat7 1 [OK]
chenyufeng/tomcat-centos tomcat基于centos6的镜像 1 [OK]
secoresearch/tomcat-varnish Tomcat and Varnish 5.0 0 [OK]
s390x/tomcat Apache Tomcat is an open source implementati… 0
softwareplant/tomcat Tomcat images for jira-cloud testing 0 [OK]
[root@Jin /]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
0e29546d541c: Pull complete
9b829c73b52b: Pull complete
cb5b7ae36172: Pull complete
6494e4811622: Pull complete
668f6fcc5fa5: Pull complete
dc120c3e0290: Pull complete
8f7c0eebb7b1: Pull complete
77b694f83996: Pull complete
0f611256ec3a: Pull complete
4f25def12f23: Pull complete
Digest: sha256:9dee185c3b161cdfede1f5e35e8b56ebc9de88ed3a79526939701f3537a52324
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
centos latest 5d0da3dc9764 4 months ago 231MB
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
17faa6fdbd46 nginx "/docker-entrypoint.…" About an hour ago Exited (0) 33 minutes ago nginx01
[root@Jin /]# docker run -d --name tomcat01 -p 39001:8080 tomcat
d5845263bcba21bafc7e1969db91bd9e6a6c96df5a5e4d1bf294f72d7bd176f6
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d5845263bcba tomcat "catalina.sh run" 4 seconds ago Up 3 seconds 0.0.0.0:39001->8080/tcp, :::39001->8080/tcp tomcat01
[root@Jin /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d5845263bcba tomcat "catalina.sh run" 7 seconds ago Up 6 seconds 0.0.0.0:39001->8080/tcp, :::39001->8080/tcp tomcat01
17faa6fdbd46 nginx "/docker-entrypoint.…" About an hour ago Exited (0) 38 minutes ago nginx01
[root@Jin /]# curl localhost:39001
<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – Not Found</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Description</b> The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.</p><hr class="line" /><h3>Apache Tomcat/10.0.14</h3></body></html>[root@Jin /]#
2、处理问题
[root@Jin /]# docker exec -it tomcat01 /bin/bash
root@d5845263bcba:/usr/local/tomcat# ls
BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
root@d5845263bcba:/usr/local/tomcat# cd webapps
root@d5845263bcba:/usr/local/tomcat/webapps# ls
root@d5845263bcba:/usr/local/tomcat/webapps# cd ..
root@d5845263bcba:/usr/local/tomcat# ls
BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
root@d5845263bcba:/usr/local/tomcat# cd webapps.dist
root@d5845263bcba:/usr/local/tomcat/webapps.dist# ls
ROOT docs examples host-manager manager
root@d5845263bcba:/usr/local/tomcat/webapps.dist# cd ..
root@d5845263bcba:/usr/local/tomcat# ls
BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
root@d5845263bcba:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@d5845263bcba:/usr/local/tomcat# cd webapps
root@d5845263bcba:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
root@d5845263bcba:/usr/local/tomcat/webapps# exit
exit
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d5845263bcba tomcat "catalina.sh run" 49 minutes ago Up 2 seconds 0.0.0.0:39001->8080/tcp, :::39001->8080/tcp tomcat01
[root@Jin /]# docker stop d5845263bcba
d5845263bcba
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d5845263bcba tomcat "catalina.sh run" 50 minutes ago Exited (143) 9 seconds ago tomcat01
17faa6fdbd46 nginx "/docker-entrypoint.…" 2 hours ago Exited (0) About an hour ago nginx01
3、查看运行结果
三、部署ES和kibana
1、Xshell执行部署与启动
# 启动 elasticsearch
[root@Jin /]# docker run -d --name elasticsearch01 -p 39002:9200 -p 39003:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
Unable to find image 'elasticsearch:7.6.2' locally
7.6.2: Pulling from library/elasticsearch
ab5ef0e58194: Pull complete
c4d1ca5c8a25: Pull complete
941a3cc8e7b8: Pull complete
43ec483d9618: Pull complete
c486fd200684: Pull complete
1b960df074b2: Pull complete
1719d48d6823: Pull complete
Digest: sha256:1b09dbd93085a1e7bca34830e77d2981521a7210e11f11eda997add1c12711fa
Status: Downloaded newer image for elasticsearch:7.6.2
6b475296fdf0543cd8d5327fbc9fb79dc15e72d02e8dde507e10fff18785e866
[root@Jin /]# docker ps
[root@Jin /]# docker ps -a
# 查看内存占用情况
[root@Jin /]# docker stats
[root@Jin /]# docker stop es的容器id
[root@Jin /]# docker ps
[root@Jin /]# docker ps -a
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
centos latest 5d0da3dc9764 4 months ago 231MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
2、优化方法
[root@Jin /]# docker run -d --name elasticsearch02 -p 39001:9200 -p 39002:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
90cb39473aff8f9a57557e05f6fa210afbad48b3782e22e29e1be7e804063e0a
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90cb39473aff elasticsearch:7.6.2 "/usr/local/bin/dock…" 6 seconds ago Up 5 seconds 0.0.0.0:39001->9200/tcp, :::39001->9200/tcp, 0.0.0.0:39002->9300/tcp, :::39002->9300/tcp elasticsearch02
[root@Jin /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90cb39473aff elasticsearch:7.6.2 "/usr/local/bin/dock…" 10 seconds ago Up 10 seconds 0.0.0.0:39001->9200/tcp, :::39001->9200/tcp, 0.0.0.0:39002->9300/tcp, :::39002->9300/tcp elasticsearch02
cf8ebbd2dd64 feb5d9fea6a5 "/hello" 7 minutes ago Exited (0) 7 minutes ago ecstatic_ramanujan
6b475296fdf0 elasticsearch:7.6.2 "/usr/local/bin/dock…" 50 minutes ago Exited (255) 8 minutes ago 0.0.0.0:39002->9200/tcp, :::39002->9200/tcp, 0.0.0.0:39003->9300/tcp, :::39003->9300/tcp elasticsearch01
d5845263bcba tomcat "catalina.sh run" 2 hours ago Exited (143) 57 minutes ago tomcat01
17faa6fdbd46 nginx "/docker-entrypoint.…" 3 hours ago Exited (0) 2 hours ago nginx01
[root@Jin /]# docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
90cb39473aff elasticsearch02 2.91% 348.2MiB / 1.795GiB 18.95% 656B / 0B 177MB / 246kB 23
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
90cb39473aff elasticsearch02 98.91% 355.1MiB / 1.795GiB 19.32% 656B / 0B 180MB / 246kB 26
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
90cb39473aff elasticsearch02 98.91% 355.1MiB / 1.795GiB 19.32% 656B / 0B 180MB / 246kB 26
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
90cb39473aff elasticsearch02 98.91% 355.1MiB / 1.795GiB 19.32% 656B / 0B 180MB / 246kB 26
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
90cb39473aff elasticsearch02 96.20% 364.1MiB / 1.795GiB 19.81% 656B / 0B 181MB / 246kB 26
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
90cb39473aff elasticsearch02 96.20% 364.1MiB / 1.795GiB 19.81% 656B / 0B 181MB / 246kB 26
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
90cb39473aff elasticsearch02 97.76% 373MiB / 1.795GiB 20.30% 656B / 0B 183MB / 246kB 26
^C
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90cb39473aff elasticsearch:7.6.2 "/usr/local/bin/dock…" 46 seconds ago Up 45 seconds 0.0.0.0:39001->9200/tcp, :::39001->9200/tcp, 0.0.0.0:39002->9300/tcp, :::39002->9300/tcp elasticsearch02
[root@Jin /]# docker stop 90cb39473aff
90cb39473aff
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
centos latest 5d0da3dc9764 4 months ago 231MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@Jin /]#
五、可视化面板
1、部署可视化面板
docker run -d -p 39000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker --privileged=true portainer/portainer
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90cb39473aff elasticsearch:7.6.2 "/usr/local/bin/dock…" 44 minutes ago Exited (143) 43 minutes ago elasticsearch02
6b475296fdf0 elasticsearch:7.6.2 "/usr/local/bin/dock…" 2 hours ago Exited (255) 53 minutes ago 0.0.0.0:39002->9200/tcp, :::39002->9200/tcp, 0.0.0.0:39003->9300/tcp, :::39003->9300/tcp elasticsearch01
d5845263bcba tomcat "catalina.sh run" 3 hours ago Exited (143) 2 hours ago tomcat01
17faa6fdbd46 nginx "/docker-entrypoint.…" 4 hours ago Exited (0) 3 hours ago nginx01
[root@Jin /]# docker run -d -p 39000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker --privileged=true portainer/portainer
492115c699358c0d9dcf1bbf4dcd11ae9ad43842777a41bbecd3f2138bd2afac
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
492115c69935 portainer/portainer "/portainer" 17 seconds ago Up 16 seconds 0.0.0.0:39000->9000/tcp, :::39000->9000/tcp charming_mclean
[root@Jin /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
492115c69935 portainer/portainer "/portainer" 21 seconds ago Up 20 seconds 0.0.0.0:39000->9000/tcp, :::39000->9000/tcp charming_mclean
90cb39473aff elasticsearch:7.6.2 "/usr/local/bin/dock…" 45 minutes ago Exited (143) 44 minutes ago elasticsearch02
6b475296fdf0 elasticsearch:7.6.2 "/usr/local/bin/dock…" 2 hours ago Exited (255) 53 minutes ago 0.0.0.0:39002->9200/tcp, :::39002->9200/tcp, 0.0.0.0:39003->9300/tcp, :::39003->9300/tcp elasticsearch01
d5845263bcba tomcat "catalina.sh run" 3 hours ago Exited (143) 2 hours ago tomcat01
17faa6fdbd46 nginx "/docker-entrypoint.…" 4 hours ago Exited (0) 3 hours ago nginx01
2、页面展示
username:admin
password:123456789
confirm password:123456789
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dcUT6pGA-1679562589556)(https://gitee.com/happy_sad/typora-image/raw/master/images/1642756721109.png)]
六、 Docker镜像
一、镜像是什么
镜像是一种轻量级、可执行的独立软件保,用来打包软件运行环境和基于运行环境开发的软件,他包含运行某个软件所需的所有内容,包括代码、运行时库、环境变量和配置文件
二、 Docker镜像加载原理
1、UnionFS 联合文件系统
UnionFs(联合文件系统):Union文件系统(UnionFs)是一种分层、轻量级并且高性能的文件系统,他支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下( unite several directories into a single virtual filesystem)。Union文件系统是 Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像
特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录
2、Docker镜像加载原理
docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。
boots(boot file system)主要包含 bootloader和 Kernel, bootloader主要是引导加 kernel, Linux刚启动时会加bootfs文件系统,在 Docker镜像的最底层是 boots。这一层与我们典型的Linux/Unix系统是一样的,包含boot加載器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由 bootfs转交给内核,此时系统也会卸载bootfs。
rootfs(root file system),在 bootfs之上。包含的就是典型 Linux系统中的/dev,/proc,/bin,/etc等标准目录和文件。 rootfs就是各种不同的操作系统发行版,比如 Ubuntu, Centos等等。
3、平时我们安装进虚拟机的CentOS都是好几个G,为什么Docker这里才200M?
对于个精简的OS,rootfs可以很小,只需要包合最基本的命令,工具和程序库就可以了,因为底层直接用Host的kernel,自己只需要提供rootfs就可以了。由此可见对于不同的Linux发行版, boots基本是一致的, rootfs会有差別,因此不同的发行版可以公用bootfs.
虚拟机是分钟级别,容器是秒级
三、分层理解
1、为什么Docker镜像要采用这种分层的结构呢?
- 最大的好处,我觉得莫过于资源共享了!比如有多个镜像都从相同的Base镜像构建而来,那么宿主机只需在磁盘上保留一份base镜像,同时内存中也只需要加载一份base镜像,这样就可以为所有的容器服务了,而且镜像的每一层都可以被共享。
- 查看镜像分层的方式可以通过docker image inspect 命令
2、 下载一个redis镜像
注意观察下载的日志输出,可以看到是一层层的在下载
[root@Jin /]# docker search redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 10459 [OK]
grokzen/redis-cluster Redis cluster 3.0, 3.2, 4.0, 5.0, 6.0, 6.2 83
sameersbn/redis 83 [OK]
rediscommander/redis-commander Alpine image for redis-commander - Redis man… 73 [OK]
redislabs/redisearch Redis With the RedisSearch module pre-loaded… 48
redislabs/rejson RedisJSON - Enhanced JSON data type processi… 40
redislabs/redisinsight RedisInsight - The GUI for Redis 35
redislabs/redis Clustered in-memory database engine compatib… 32
oliver006/redis_exporter Prometheus Exporter for Redis Metrics. Supp… 31
arm32v7/redis Redis is an open source key-value store that… 24
arm64v8/redis Redis is an open source key-value store that… 19
redislabs/rebloom A probablistic datatypes module for Redis 18 [OK]
redislabs/redisgraph A graph database module for Redis 17 [OK]
redislabs/redismod An automated build of redismod - latest Redi… 17 [OK]
webhippie/redis Docker image for redis 11 [OK]
s7anley/redis-sentinel-docker Redis Sentinel 10 [OK]
redislabs/redistimeseries A time series database module for Redis 10
insready/redis-stat Docker image for the real-time Redis monitor… 10 [OK]
goodsmileduck/redis-cli redis-cli on alpine 9 [OK]
centos/redis-32-centos7 Redis in-memory data structure store, used a… 6
clearlinux/redis Redis key-value data structure server with t… 3
tiredofit/redis Redis Server w/ Zabbix monitoring and S6 Ove… 1 [OK]
wodby/redis Redis container image with orchestration 1 [OK]
xetamus/redis-resource forked redis-resource 0 [OK]
flant/redis-sentinel-proxy Redis sentinel proxy by enriclluelles writte… 0 [OK]
[root@Jin /]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
a2abf6c4d29d: Already exists
c7a4e4382001: Pull complete
4044b9ba67c9: Pull complete
c8388a79482f: Pull complete
413c8bb60be2: Pull complete
1abfd3011519: Pull complete
Digest: sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest
[root@Jin /]# docker image inspect redis
[
{
"Id": "sha256:7614ae9453d1d87e740a2056257a6de7135c84037c367e1fffa92ae922784631",
"RepoTags": [
"redis:latest"
],
"RepoDigests": [
"redis@sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339"
],
"Parent": "",
"Comment": "",
"Created": "2021-12-21T12:42:49.755107412Z",
"Container": "13d25f53410417c5220c8dfe8bd49f06abdbcd69faa62a9b877de02464bb04a3",
"ContainerConfig": {
"Hostname": "13d25f534104",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"6379/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GOSU_VERSION=1.12",
"REDIS_VERSION=6.2.6",
"REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-6.2.6.tar.gz",
"REDIS_DOWNLOAD_SHA=5b2b8b7a50111ef395bf1c1d5be11e6e167ac018125055daa8b5c2317ae131ab"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) ",
"CMD [\"redis-server\"]"
],
"Image": "sha256:e093f59d716c95cfce82c676f099b960cc700432ab531388fcedf79932fc81ec",
"Volumes": {
"/data": {}
},
"WorkingDir": "/data",
"Entrypoint": [
"docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {}
},
"DockerVersion": "20.10.7",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"6379/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GOSU_VERSION=1.12",
"REDIS_VERSION=6.2.6",
"REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-6.2.6.tar.gz",
"REDIS_DOWNLOAD_SHA=5b2b8b7a50111ef395bf1c1d5be11e6e167ac018125055daa8b5c2317ae131ab"
],
"Cmd": [
"redis-server"
],
"Image": "sha256:e093f59d716c95cfce82c676f099b960cc700432ab531388fcedf79932fc81ec",
"Volumes": {
"/data": {}
},
"WorkingDir": "/data",
"Entrypoint": [
"docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 112691373,
"VirtualSize": 112691373,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/d11a7ad84c40c6d666f556ce80024890a138b0a45170c37b9ae389e025a02d84/diff:/var/lib/docker/overlay2/a1589372955ff65774a113cd71249d06c71aa7185369346fcdf0dded5040d61f/diff:/var/lib/docker/overlay2/b5d49d3d8933b9a0997465e9479541ac8ddfa1c829e45a449ea0414850a49986/diff:/var/lib/docker/overlay2/e12127840416a40f62641daa073920654819b790343f8dd15d95afec3ddc7a9b/diff:/var/lib/docker/overlay2/987e1c9a9c3d72e8928a2c04d8592c5feffaee8d65ab89b4acb490b976d30e08/diff",
"MergedDir": "/var/lib/docker/overlay2/25288ea7595fa789a2aaf22f460d544b6caf92de18383c80f7007b0fe6ba2703/merged",
"UpperDir": "/var/lib/docker/overlay2/25288ea7595fa789a2aaf22f460d544b6caf92de18383c80f7007b0fe6ba2703/diff",
"WorkDir": "/var/lib/docker/overlay2/25288ea7595fa789a2aaf22f460d544b6caf92de18383c80f7007b0fe6ba2703/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f",
"sha256:9b24afeb7c2f21e50a686ead025823cd2c6e9730c013ca77ad5f115c079b57cb",
"sha256:4b8e2801e0f956a4220c32e2c8b0a590e6f9bd2420ec65453685246b82766ea1",
"sha256:529cdb636f61e95ab91a62a51526a84fd7314d6aab0d414040796150b4522372",
"sha256:9975392591f2777d6bf4d9919ad1b2c9afa12f9a9b4d260f45025ec3cc9b18ed",
"sha256:8e5669d8329116b8444b9bbb1663dda568ede12d3dbcce950199b582f6e94952"
]
},
"Metadata": {
"LastTagTime": "0001-01-01T00:00:00Z"
}
}
]
注:
bootfs:boot file system
rootfs:root file system
所有的 Docker镜像都起始于一个基础镜像层,当进行修改或培加新的内容时,就会在当前镜像层之上,创建新的镜像层。
举一个简单的例子,假如基于 Ubuntu Linux16.04创建一个新的镜像,这就是新镜像的第一层;如果在该镜像中添加 Python包,
就会在基础镜像层之上创建第二个镜像层;如果继续添加一个安全补丁,就会创健第三个镜像层该像当前已经包含3个镜像层,如下图所示(这只是一个用于演示的很简单的例子)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5s7oDRG8-1679562589558)(https://gitee.com/happy_sad/typora-image/raw/master/images/1642757252646.png)]
在添加额外的镜像层的同时,镜像始终保持是当前所有镜像的组合,理解这一点非常重要。下图中举了一个简单的例子,每个镜像层包含3个文件,而镜像包含了来自两个镜像层的6个文件。
上图中的镜像层跟之前图中的略有区別,主要目的是便于展示文件
下图中展示了一个稍微复杂的三层镜像,在外部看来整个镜像只有6个文件,这是因为最上层中的文件7是文件5的一个更新版
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d9D3jzjQ-1679562589559)(https://gitee.com/happy_sad/typora-image/raw/master/images/1642757277766.png)]
文种情況下,上层镜像层中的文件覆盖了底层镜像层中的文件。这样就使得文件的更新版本作为一个新镜像层添加到镜像当中
Docker通过存储引擎(新版本采用快照机制)的方式来实现镜像层堆栈,并保证多镜像层对外展示为统一的文件系统
Linux上可用的存储引撃有AUFS、 Overlay2、 Device Mapper、Btrfs以及ZFS。顾名思义,每种存储引擎都基于 Linux中对应的
件系统或者块设备技术,井且每种存储引擎都有其独有的性能特点。
Docker在 Windows上仅支持 windowsfilter 一种存储引擎,该引擎基于NTFS文件系统之上实现了分层和CoW [1]。
下图展示了与系统显示相同的三层镜像。所有镜像层堆并合井,对外提供统一的视图
3、特点
Docker镜像都是只读的,当容器启动时,一个新的可写层被加到镜像的顶部,这一层就是我们通常说的容器层,容器层之下的都叫镜像层 。
docker -pull 应用 为镜像层
docker _____ 为容器层
docker run ____ 将镜像层和容器层打包为一个新的容器
四、docker commit
1、docker commit提交镜像
docker commit # 提交容器成为一个新的副本
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]
# 1、启动一个默认的tomcat镜像
# 2、发现这个tomcat是没有webapps应用的,官方的镜像默认webapps下面没有文件,需要从webapps.dist文件只能拷贝过来
# 3、将webapps.dist文件中的文件拷贝到webapps中
# 4、通过docker commit将此容器提交为一个副本(即新的镜像,自己修改了的镜像)
2、【端口1】
[root@Jin ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Jin ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 4 weeks ago 113MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@Jin ~]# docker run -it -p 39004:8080 tomcat
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/openjdk-11
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
23-Jan-2022 07:52:34.298 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/10.0.14
23-Jan-2022 07:52:34.334 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Dec 2 2021 22:01:36 UTC
23-Jan-2022 07:52:34.335 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 10.0.14.0
23-Jan-2022 07:52:34.335 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
23-Jan-2022 07:52:34.335 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 3.10.0-1127.19.1.el7.x86_64
23-Jan-2022 07:52:34.335 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
23-Jan-2022 07:52:34.336 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /usr/local/openjdk-11
23-Jan-2022 07:52:34.336 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 11.0.13+8
23-Jan-2022 07:52:34.336 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation
23-Jan-2022 07:52:34.336 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/tomcat
23-Jan-2022 07:52:34.337 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/tomcat
23-Jan-2022 07:52:34.378 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
23-Jan-2022 07:52:34.379 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
23-Jan-2022 07:52:34.379 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
23-Jan-2022 07:52:34.379 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
23-Jan-2022 07:52:34.379 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
23-Jan-2022 07:52:34.380 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
23-Jan-2022 07:52:34.380 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
23-Jan-2022 07:52:34.380 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
23-Jan-2022 07:52:34.380 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
23-Jan-2022 07:52:34.381 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
23-Jan-2022 07:52:34.383 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
23-Jan-2022 07:52:34.384 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
23-Jan-2022 07:52:34.384 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
23-Jan-2022 07:52:34.384 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
23-Jan-2022 07:52:34.397 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.2.31] using APR version [1.7.0].
23-Jan-2022 07:52:34.398 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [true].
23-Jan-2022 07:52:34.406 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.1k 25 Mar 2021]
23-Jan-2022 07:52:35.939 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
23-Jan-2022 07:52:36.059 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [2832] milliseconds
23-Jan-2022 07:52:36.420 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
23-Jan-2022 07:52:36.421 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.0.14]
23-Jan-2022 07:52:36.473 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
23-Jan-2022 07:52:36.515 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [456] milliseconds
23-Jan-2022 07:55:06.510 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/docs]
23-Jan-2022 07:55:07.374 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/docs] has finished in [865] ms
23-Jan-2022 07:55:07.375 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/ROOT]
23-Jan-2022 07:55:07.443 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/ROOT] has finished in [68] ms
23-Jan-2022 07:55:07.444 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/host-manager]
23-Jan-2022 07:55:07.549 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/host-manager] has finished in [105] ms
23-Jan-2022 07:55:07.549 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/manager]
23-Jan-2022 07:55:07.651 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/manager] has finished in [102] ms
23-Jan-2022 07:55:07.651 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/examples]
23-Jan-2022 07:55:08.309 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/examples] has finished in [658] ms
3、【端口2】
[root@Jin ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
532697cee847 tomcat "catalina.sh run" 35 seconds ago Up 34 seconds 0.0.0.0:39004->8080/tcp, :::39004->8080/tcp wizardly_shamir
[root@Jin ~]# docker exec -it 532697cee847 /bin/bash
root@532697cee847:/usr/local/tomcat# ls
BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
root@532697cee847:/usr/local/tomcat# cd webapps
root@532697cee847:/usr/local/tomcat/webapps# ls
root@532697cee847:/usr/local/tomcat/webapps# cd ..
root@532697cee847:/usr/local/tomcat# cd webapps.dist/
root@532697cee847:/usr/local/tomcat/webapps.dist# ls
ROOT docs examples host-manager manager
root@532697cee847:/usr/local/tomcat/webapps.dist# cd ..
root@532697cee847:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@532697cee847:/usr/local/tomcat# cd webapps
root@532697cee847:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
root@532697cee847:/usr/local/tomcat/webapps#
4、查看运行结果
5、docker commit
docker commit -a="Jin" -m="add webapps app" 当前容器的id tomcat02:1.0
root@532697cee847:/usr/local/tomcat/webapps# exit
exit
[root@Jin ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
532697cee847 tomcat "catalina.sh run" 13 minutes ago Up 13 minutes 0.0.0.0:39004->8080/tcp, :::39004->8080/tcp wizardly_shamir
[root@Jin ~]# docker commit -a="Jin" -m="add webapps app" 532697cee847 tomcat02:1.0
sha256:c2ae9e171b978d04816f1e697781b21c81c3c90be5a30ef4dcb77b57bf2d795d
[root@Jin ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat02 1.0 c2ae9e171b97 4 minutes ago 684MB
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 4 weeks ago 113MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
6、docker inspect 镜像id
[root@Jin ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat02 1.0 c2ae9e171b97 26 minutes ago 684MB
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 4 weeks ago 113MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@Jin ~]# docker inspect fb5657adc892 #tomcat
[
{
"Id": "sha256:fb5657adc892ed15910445588404c798b57f741e9921ff3c1f1abe01dbb56906",
"RepoTags": [
"tomcat:latest"
],
"RepoDigests": [
"tomcat@sha256:9dee185c3b161cdfede1f5e35e8b56ebc9de88ed3a79526939701f3537a52324"
],
"Parent": "",
"Comment": "",
"Created": "2021-12-22T17:07:13.333084424Z",
"Container": "de0900b3a6caf902ccdaa1c7871d244e29978119ad8a1cce799cf47f1717b679",
"ContainerConfig": {
"Hostname": "de0900b3a6ca",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"8080/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/tomcat/bin:/usr/local/openjdk-11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"JAVA_HOME=/usr/local/openjdk-11",
"LANG=C.UTF-8",
"JAVA_VERSION=11.0.13",
"CATALINA_HOME=/usr/local/tomcat",
"TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib",
"LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib",
"GPG_KEYS=A9C5DF4D22E99998D9875A5110C01C5A2F6059E7",
"TOMCAT_MAJOR=10",
"TOMCAT_VERSION=10.0.14",
"TOMCAT_SHA512=c2d2ad5ed17f7284e3aac5415774a8ef35434f14dbd9a87bc7230d8bfdbe9aa1258b97a59fa5c4030e4c973e4d93d29d20e40b6254347dbb66fae269ff4a61a5"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) ",
"CMD [\"catalina.sh\" \"run\"]"
],
"Image": "sha256:6e2683bf6f13f0050833b6807871b4980142835747139a2c2ae91b274787e399",
"Volumes": null,
"WorkingDir": "/usr/local/tomcat",
"Entrypoint": null,
"OnBuild": null,
"Labels": {}
},
"DockerVersion": "20.10.7",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"8080/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/tomcat/bin:/usr/local/openjdk-11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"JAVA_HOME=/usr/local/openjdk-11",
"LANG=C.UTF-8",
"JAVA_VERSION=11.0.13",
"CATALINA_HOME=/usr/local/tomcat",
"TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib",
"LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib",
"GPG_KEYS=A9C5DF4D22E99998D9875A5110C01C5A2F6059E7",
"TOMCAT_MAJOR=10",
"TOMCAT_VERSION=10.0.14",
"TOMCAT_SHA512=c2d2ad5ed17f7284e3aac5415774a8ef35434f14dbd9a87bc7230d8bfdbe9aa1258b97a59fa5c4030e4c973e4d93d29d20e40b6254347dbb66fae269ff4a61a5"
],
"Cmd": [
"catalina.sh",
"run"
],
"Image": "sha256:6e2683bf6f13f0050833b6807871b4980142835747139a2c2ae91b274787e399",
"Volumes": null,
"WorkingDir": "/usr/local/tomcat",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 679618222,
"VirtualSize": 679618222,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/ea19cccea66a231080bcb1a8a32712a8e33202c5ec1df3f975c6da41292d45e6/diff:/var/lib/docker/overlay2/61611fd029553a2f2dec395504676ea654216c51c2aa64c8a3f55ea2ed3c5e0d/diff:/var/lib/docker/overlay2/d8b1dd83653d99129d569fd4cbd85d98c716b1434a562d9594ba97b491e80508/diff:/var/lib/docker/overlay2/4a1da536dfcd3200c8ea0a2db832cb6bcc7d936725bcfaa9942e343eebc53758/diff:/var/lib/docker/overlay2/89b1b263dd5b26f98488fa81427f8ae0989bd62d67ca19c3b5f2e62f6500e0c9/diff:/var/lib/docker/overlay2/240fc4c132167f5e02e00fa3917b16de1c77c7db39c3d30b1b66939f3b6560be/diff:/var/lib/docker/overlay2/0ebf344344cb49b98d9abd76c612b8b726699eb669b82a2719561272d640eaef/diff:/var/lib/docker/overlay2/e950bce470bf7ebe00f928c0fb4818d1677e610323c50c90e31a252bb29c2dc4/diff:/var/lib/docker/overlay2/39f2fa82d180fa4aa66544371b5e38a7d31e1335c50285f64616adf58fd4481b/diff",
"MergedDir": "/var/lib/docker/overlay2/308d4f1c743b796a9961ab56fecdba5fc5c803e6b31385553c94ff66d7775b9f/merged",
"UpperDir": "/var/lib/docker/overlay2/308d4f1c743b796a9961ab56fecdba5fc5c803e6b31385553c94ff66d7775b9f/diff",
"WorkDir": "/var/lib/docker/overlay2/308d4f1c743b796a9961ab56fecdba5fc5c803e6b31385553c94ff66d7775b9f/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:11936051f93baf5a4fb090a8fa0999309b8173556f7826598e235e8a82127bce",
"sha256:31892cc314cb1993ba1b8eb5f3002c4e9f099a9237af0d03d1893c6fcc559aab",
"sha256:8bf42db0de72f74f4ef0c1d1743f5d54efc3491ee38f4af6d914a6032148b78e",
"sha256:26a504e63be4c63395f216d70b1b8af52263a5289908df8e96a0e7c840813adc",
"sha256:f9e18e59a5651609a1503ac17dcfc05856b5bea21e41595828471f02ad56a225",
"sha256:832e177bb5008934e2f5ed723247c04e1dd220d59a90ce32000b7c22bd9d9b54",
"sha256:3bb5258f46d2a511ddca2a4ec8f9091d676a116830a7f336815f02c4b34dbb23",
"sha256:59c516e5b6fafa2e6b63d76492702371ca008ade6e37d931089fe368385041a0",
"sha256:bd2befca2f7ef51f03b757caab549cc040a36143f3b7e3dab94fb308322f2953",
"sha256:3e2ed6847c7a081bd90ab8805efcb39a2933a807627eb7a4016728f881430f5f"
]
},
"Metadata": {
"LastTagTime": "0001-01-01T00:00:00Z"
}
}
]
[root@Jin ~]# docker inspect c2ae9e171b97 #tomcat02
[
{
"Id": "sha256:c2ae9e171b978d04816f1e697781b21c81c3c90be5a30ef4dcb77b57bf2d795d",
"RepoTags": [
"tomcat02:1.0"
],
"RepoDigests": [],
"Parent": "sha256:fb5657adc892ed15910445588404c798b57f741e9921ff3c1f1abe01dbb56906",
"Comment": "add webapps app",
"Created": "2022-01-23T08:07:15.760213309Z",
"Container": "532697cee8479431ad985335faed7506a019312ceb4e47792cf61008209236a4",
"ContainerConfig": {
"Hostname": "532697cee847",
"Domainname": "",
"User": "",
"AttachStdin": true,
"AttachStdout": true,
"AttachStderr": true,
"ExposedPorts": {
"8080/tcp": {}
},
"Tty": true,
"OpenStdin": true,
"StdinOnce": true,
"Env": [
"PATH=/usr/local/tomcat/bin:/usr/local/openjdk-11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"JAVA_HOME=/usr/local/openjdk-11",
"LANG=C.UTF-8",
"JAVA_VERSION=11.0.13",
"CATALINA_HOME=/usr/local/tomcat",
"TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib",
"LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib",
"GPG_KEYS=A9C5DF4D22E99998D9875A5110C01C5A2F6059E7",
"TOMCAT_MAJOR=10",
"TOMCAT_VERSION=10.0.14",
"TOMCAT_SHA512=c2d2ad5ed17f7284e3aac5415774a8ef35434f14dbd9a87bc7230d8bfdbe9aa1258b97a59fa5c4030e4c973e4d93d29d20e40b6254347dbb66fae269ff4a61a5"
],
"Cmd": [
"catalina.sh",
"run"
],
"Image": "tomcat",
"Volumes": null,
"WorkingDir": "/usr/local/tomcat",
"Entrypoint": null,
"OnBuild": null,
"Labels": {}
},
"DockerVersion": "20.10.12",
"Author": "Jin",
"Config": {
"Hostname": "532697cee847",
"Domainname": "",
"User": "",
"AttachStdin": true,
"AttachStdout": true,
"AttachStderr": true,
"ExposedPorts": {
"8080/tcp": {}
},
"Tty": true,
"OpenStdin": true,
"StdinOnce": true,
"Env": [
"PATH=/usr/local/tomcat/bin:/usr/local/openjdk-11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"JAVA_HOME=/usr/local/openjdk-11",
"LANG=C.UTF-8",
"JAVA_VERSION=11.0.13",
"CATALINA_HOME=/usr/local/tomcat",
"TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib",
"LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib",
"GPG_KEYS=A9C5DF4D22E99998D9875A5110C01C5A2F6059E7",
"TOMCAT_MAJOR=10",
"TOMCAT_VERSION=10.0.14",
"TOMCAT_SHA512=c2d2ad5ed17f7284e3aac5415774a8ef35434f14dbd9a87bc7230d8bfdbe9aa1258b97a59fa5c4030e4c973e4d93d29d20e40b6254347dbb66fae269ff4a61a5"
],
"Cmd": [
"catalina.sh",
"run"
],
"Image": "tomcat",
"Volumes": null,
"WorkingDir": "/usr/local/tomcat",
"Entrypoint": null,
"OnBuild": null,
"Labels": {}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 684000041,
"VirtualSize": 684000041,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/308d4f1c743b796a9961ab56fecdba5fc5c803e6b31385553c94ff66d7775b9f/diff:/var/lib/docker/overlay2/ea19cccea66a231080bcb1a8a32712a8e33202c5ec1df3f975c6da41292d45e6/diff:/var/lib/docker/overlay2/61611fd029553a2f2dec395504676ea654216c51c2aa64c8a3f55ea2ed3c5e0d/diff:/var/lib/docker/overlay2/d8b1dd83653d99129d569fd4cbd85d98c716b1434a562d9594ba97b491e80508/diff:/var/lib/docker/overlay2/4a1da536dfcd3200c8ea0a2db832cb6bcc7d936725bcfaa9942e343eebc53758/diff:/var/lib/docker/overlay2/89b1b263dd5b26f98488fa81427f8ae0989bd62d67ca19c3b5f2e62f6500e0c9/diff:/var/lib/docker/overlay2/240fc4c132167f5e02e00fa3917b16de1c77c7db39c3d30b1b66939f3b6560be/diff:/var/lib/docker/overlay2/0ebf344344cb49b98d9abd76c612b8b726699eb669b82a2719561272d640eaef/diff:/var/lib/docker/overlay2/e950bce470bf7ebe00f928c0fb4818d1677e610323c50c90e31a252bb29c2dc4/diff:/var/lib/docker/overlay2/39f2fa82d180fa4aa66544371b5e38a7d31e1335c50285f64616adf58fd4481b/diff",
"MergedDir": "/var/lib/docker/overlay2/d3798394809b1327003f6925b277affd6291c1f531b523b0acae8351d186b2a2/merged",
"UpperDir": "/var/lib/docker/overlay2/d3798394809b1327003f6925b277affd6291c1f531b523b0acae8351d186b2a2/diff",
"WorkDir": "/var/lib/docker/overlay2/d3798394809b1327003f6925b277affd6291c1f531b523b0acae8351d186b2a2/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:11936051f93baf5a4fb090a8fa0999309b8173556f7826598e235e8a82127bce",
"sha256:31892cc314cb1993ba1b8eb5f3002c4e9f099a9237af0d03d1893c6fcc559aab",
"sha256:8bf42db0de72f74f4ef0c1d1743f5d54efc3491ee38f4af6d914a6032148b78e",
"sha256:26a504e63be4c63395f216d70b1b8af52263a5289908df8e96a0e7c840813adc",
"sha256:f9e18e59a5651609a1503ac17dcfc05856b5bea21e41595828471f02ad56a225",
"sha256:832e177bb5008934e2f5ed723247c04e1dd220d59a90ce32000b7c22bd9d9b54",
"sha256:3bb5258f46d2a511ddca2a4ec8f9091d676a116830a7f336815f02c4b34dbb23",
"sha256:59c516e5b6fafa2e6b63d76492702371ca008ade6e37d931089fe368385041a0",
"sha256:bd2befca2f7ef51f03b757caab549cc040a36143f3b7e3dab94fb308322f2953",
"sha256:3e2ed6847c7a081bd90ab8805efcb39a2933a807627eb7a4016728f881430f5f",
"sha256:652437f00c8a01ecfe92a2a120b65fc5ca27dcabf416547d46a7f99c85691e3f" #多了这一层
]
},
"Metadata": {
"LastTagTime": "2022-01-23T16:07:15.769405777+08:00"
}
}
]
七、容器数据卷
一、什么是数据卷
docker是要将应用和环境打包成一个镜像
这样,数据就不应该在容器中,否则容器删除,数据就会丢失,这就是删库跑路
故容器之间要有一个数据共享技术
在Docker容器中产生的数据,同步到本地,这就是卷技术
本质上是一个目录挂载,将容器内的目录挂载到虚拟机上
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wYFokO2w-1679562589563)(https://gitee.com/happy_sad/typora-image/raw/master/images/1642928686464.png)]
目的:容器的持久化和同步操作!容器间可以数据共享
二、使用数据卷
1、使用命令来挂载 -v
1、挂载centos容器
【端口1】挂载centos容器:将centos容器的/home目录与主机的/home/docker挂载
[root@Jin /]# cd home
[root@Jin home]# ls
copy.java Jin JinTest Jin.txt redis test www
[root@Jin home]# mkdir docker #创建一个docker文件给docker挂载东西
[root@Jin home]# ls
copy.java docker Jin JinTest Jin.txt redis test www
[root@Jin home]# docker run -it -v /home/docker:/home/ centos /bin/bash
[root@aa3358059bca /]# cd /home #容器里的/home目录下为空
[root@aa3358059bca home]# ls
【端口2】查看挂载信息
[root@Jin /]# cd home
[root@Jin home]# ls
copy.java docker Jin JinTest Jin.txt redis test www
[root@Jin home]# cd docker #主机下的/home/docker也为空
[root@Jin docker]# ls
[root@Jin docker]# docker ps #挂载的centos容器运行
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa3358059bca centos "/bin/bash" 2 minutes ago Up 2 minutes trusting_black
[root@Jin docker]# docker inspect aa3358059bca
[
{
"Id": "aa3358059bca419f0bfe6ba6a9909bb074236f1abfb3361f2e189d14a848564f",
"Created": "2022-01-23T14:28:15.050024448Z",
"Path": "/bin/bash",
"Args": [],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 6978,
"ExitCode": 0,
"Error": "",
"StartedAt": "2022-01-23T14:28:15.688296627Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
"ResolvConfPath": "/var/lib/docker/containers/aa3358059bca419f0bfe6ba6a9909bb074236f1abfb3361f2e189d14a848564f/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/aa3358059bca419f0bfe6ba6a9909bb074236f1abfb3361f2e189d14a848564f/hostname",
"HostsPath": "/var/lib/docker/containers/aa3358059bca419f0bfe6ba6a9909bb074236f1abfb3361f2e189d14a848564f/hosts",
"LogPath": "/var/lib/docker/containers/aa3358059bca419f0bfe6ba6a9909bb074236f1abfb3361f2e189d14a848564f/aa3358059bca419f0bfe6ba6a9909bb074236f1abfb3361f2e189d14a848564f-json.log",
"Name": "/trusting_black",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": [
"/home/docker:/home/"
],
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": {},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": null,
"CapDrop": null,
"CgroupnsMode": "host",
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": [],
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DeviceCgroupRules": null,
"DeviceRequests": null,
"KernelMemory": 0,
"KernelMemoryTCP": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": false,
"PidsLimit": null,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/da4c11981095cdded80fa3d49dffe0d04afb9060c7231cc3ccad65c6a89b56f0-init/diff:/var/lib/docker/overlay2/062d86c5e366ca0ececd1c38ff44dee264283b594189692994d190dd67fee589/diff",
"MergedDir": "/var/lib/docker/overlay2/da4c11981095cdded80fa3d49dffe0d04afb9060c7231cc3ccad65c6a89b56f0/merged",
"UpperDir": "/var/lib/docker/overlay2/da4c11981095cdded80fa3d49dffe0d04afb9060c7231cc3ccad65c6a89b56f0/diff",
"WorkDir": "/var/lib/docker/overlay2/da4c11981095cdded80fa3d49dffe0d04afb9060c7231cc3ccad65c6a89b56f0/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "bind",
"Source": "/home/docker",
"Destination": "/home",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
"Config": {
"Hostname": "aa3358059bca",
"Domainname": "",
"User": "",
"AttachStdin": true,
"AttachStdout": true,
"AttachStderr": true,
"Tty": true,
"OpenStdin": true,
"StdinOnce": true,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/bash"
],
"Image": "centos",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.label-schema.build-date": "20210915",
"org.label-schema.license": "GPLv2",
"org.label-schema.name": "CentOS Base Image",
"org.label-schema.schema-version": "1.0",
"org.label-schema.vendor": "CentOS"
}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "09bf2cb9cefa443acadcc1fb65d967c317a9e93c37359e21328a53f5b3298461",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {},
"SandboxKey": "/var/run/docker/netns/09bf2cb9cefa",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "444ccac85bb2960fb015ae90e45e8b7527c25083f6375d2ee33eb94e97a94962",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:02",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "7b8a815e7cd106aefd34943f8f9a8cdb55febac4620a4f820874412a6ccc74ec",
"EndpointID": "444ccac85bb2960fb015ae90e45e8b7527c25083f6375d2ee33eb94e97a94962",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null
}
}
}
}
]
2、容器创建文件同步主机
【端口1】centos容器里/home目录下创建一个docker_v.java的文件
[root@aa3358059bca /]# cd /home
[root@aa3358059bca home]# ls
[root@aa3358059bca home]# touch docker_v.java
[root@aa3358059bca home]# ls
docker_v.java
【端口2】查看挂载的/home/docker文件目录下的文件
[root@Jin docker]# cd ..
[root@Jin home]# ls
copy.java docker Jin JinTest Jin.txt redis test www
[root@Jin home]# cd docker
[root@Jin docker]# ls
[root@Jin docker]# ls
docker_v.java
3、主机修改文件同步容器
【端口2】修改主机/home/docker目录下的docker_v.java文件,并新增一个docker_v_v.java文件
[root@Jin docker]# vim docker_v.java
[root@Jin docker]# touch docker_v_v.java
[root@Jin docker]# ls
docker_v.java docker_v_v.java
【端口1】查看centos容器里/home目录下docker_v.java文件并查看所有文件
[root@aa3358059bca home]# ls
docker_v.java docker_v_v.java
[root@aa3358059bca home]# cat docker_v.java
hello,数据卷挂载!
4、即使容器被停止了,主机里挂载的地址添加配置仍然同步
【端口1】停止容器
[root@Jin docker]# exit
exit
[root@Jin docker]# docker ps #挂载的centos容器停止运行
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
【端口2】修改主机/home/docker目录下的docker_v_v.java文件
[root@Jin docker]# vim docker_v_v.java
【端口1】启动容器并进入容器查看,/home目录下docker_v_v.java文件
[root@Jin home]# docker start aa3358059bca
aa3358059bca
[root@Jin home]# docker attach aa3358059bca
[root@aa3358059bca /]# cd /home
[root@aa3358059bca home]# ls
docker_v.java docker_v_v.java
[root@aa3358059bca home]# cat docker_v_v.java
hello,只要使用了docker -v挂载了,容器没有被强制删除,主机在挂载的地址添加配置,容器仍然同步。
2、MySQL同步数据
1、下载安装mysql:5.7
[root@Jin /]# docker search mysql:5.7
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
kiratalent/mysql Pinned copy of mysql:5.7.24 1
variu/hyperledger-explorer-mysql mysql:5.7.23 for hyperledger explorer 0
migs/mysql-5.7 mysql:5.7 plus some basic enhancements 0 [OK]
stsiwo/sts-blog-db base image mysql:5.7.28 0
xiao806852034/mysql57 基于 mysql:5.7 0
metatronx/mysql mysql:5.7 + druid account & database 0
idyci/mysql mysql:5.7.25 0
michaelzx/docker_msyql without ONLY_FULL_GROUP_BY base on mysql:5.7… 0 [OK]
denghui/mysql mysql:5.7-tz.8 0 [OK]
framgiaciteam/mysql-256 FROM mysql:5.7 CMD ["--block_encryption_mod… 0
llasuka/mysql mysql:5.7 0
beyondray/kbengine-mysql kbengine auto-build env from mysql:5.7 0 [OK]
liuzugang/mysql mysql:5.7 0
ahmedelshfie/spring-boot-mysql-rest-api mysql:5.7 0
alecchyi/mysql mysql:5.7 for demo 0
zhjs/mysql mysql:5.7 0
crbanman/mysql-tmpfs A docker image based off of mysql:5.7 that m… 0
alexmbarbosa/mysql5.7 Based on official mysql:5.7 docker image 0
vigasin/mysql Clone of official mysql:5.7 image, that allo… 0
zeq9069/mysql_service mysql:5.7 0
arturgoldyn/mysql_5-7_inmemory Based on mysql:5.7 image, run MySQL in /dev/… 0 [OK]
kamatimaru/mysql57-ja Added Japanese support settings to mysql:5.7… 0
doctorva/mysql_fede Based on Mysql:5.7 and add new configuration… 0
liyupei/mysql Mysql:5.7 0
zhangruihuai/mysql-node-nginx-python based on mysql:5.7 MySQL 5.7 NodeJS v14.18.… 0
[root@Jin /]# docker pull mysql:5.7
5.7: Pulling from library/mysql
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
0ceb82207cd7: Pull complete
37f2405cae96: Pull complete
e2482e017e53: Pull complete
70deed891d42: Pull complete
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
2、数据卷挂载mysql:5.7
-d 后台运行 (不会进行运行时界面)
-p 端口映射 (映射端口,将默认端口映射到其他端口打开)
-v 卷挂载 (挂载,将主机的设定目录与容器想要挂载的目录挂载)
-e 环境配置 安装启动mysql需要配置密码 (mysql配置密码)
--name 容器名字 (给容器拟一个名字)
【端口1】
[root@Jin /]# docker run -d -p 39005:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
461f9060e5e9e19acdf7d57968a13a6db0df43c0edd2e77ea75342d9c7c89573
【端口2】
[root@Jin home]# ls
copy.java docker Jin JinTest Jin.txt redis test www
[root@Jin home]# ls
copy.java Jin Jin.txt redis www
docker JinTest mysql test
[root@Jin home]# cd mysql
[root@Jin mysql]# ls
conf data
[root@Jin mysql]# cd data
[root@Jin data]# ls
auto.cnf ibdata1 private_key.pem
ca-key.pem ib_logfile0 public_key.pem
ca.pem ib_logfile1 server-cert.pem
client-cert.pem ibtmp1 server-key.pem
client-key.pem mysql sys
ib_buffer_pool performance_schema
3、本地测试连接与创建
1、数据库连接测试
2、在mysql01连接里创建一个数据库
3、【端口2】查看端口2文件变化
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yVww3k7j-1679562589568)(https://gitee.com/happy_sad/typora-image/raw/master/images/1642990913075.png)]
4、容器删除或停止运行,数据仍在
实现容器持久化功能
三、匿名、具名、具体路劲挂载
1、匿名挂载
所有的docker容器内的卷,没有指定目录的情况下都是在==/var/lib/docker/volumes/xxx/_data==
[root@Jin /]# docker run -d -P --name niming-nginx -v /etc/nginx nginx
faf9c51c6676113544e129e13f2808e9cbcd22dd6c68c7b7fba8cef760a7fbc8
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
faf9c51c6676 nginx "/docker-entrypoint.…" 4 seconds ago Up 3 seconds 0.0.0.0:49154->80/tcp, :::49154->80/tcp niming-nginx
[root@Jin /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
faf9c51c6676 nginx "/docker-entrypoint.…" 7 seconds ago Up 6 seconds 0.0.0.0:49154->80/tcp, :::49154->80/tcp niming-nginx
aa3358059bca centos "/bin/bash" 12 hours ago Exited (0) 12 hours ago trusting_black
[root@Jin /]# docker volume ls
DRIVER VOLUME NAME
local 1a382afa251c9035f90255d5ceddc7fbf5cc1febbb16b6b25356aad962b630bf
local 8de45fa0f3619b7bfe78e5e5484a6c79bdae54aca2305213db2f742aef5c8fab
local a4aa3a7209d6ccf0f4a415cd340bfcf0ce170aa9731e6a0fe9f0eb1211a7eab5
local c44a66786e2558401adb4216aa0f1b3a9d8d252a14524f2411b31bcc61cda201
2、具名挂载
[root@Jin /]# docker run -d -P --name juming-nginx -v juming-nginx:/etc/nginx nginx
9346743f602c6ed3d2e8cbf8de1e6ff93acdeafbd158069261f5cf27dff5232f
[root@Jin /]# docker volume ls
DRIVER VOLUME NAME
local 1a382afa251c9035f90255d5ceddc7fbf5cc1febbb16b6b25356aad962b630bf
local 8de45fa0f3619b7bfe78e5e5484a6c79bdae54aca2305213db2f742aef5c8fab
local a4aa3a7209d6ccf0f4a415cd340bfcf0ce170aa9731e6a0fe9f0eb1211a7eab5
local c44a66786e2558401adb4216aa0f1b3a9d8d252a14524f2411b31bcc61cda201
local juming-nginx
[root@Jin /]# docker volume inspect juming-nginx
[
{
"CreatedAt": "2022-01-24T10:50:45+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data",
"Name": "juming-nginx",
"Options": null,
"Scope": "local"
}
]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gx2MjpIU-1679562589570)(https://gitee.com/happy_sad/typora-image/raw/master/images/1642992811835.png)]
3、具体路径挂载
[root@Jin /]# cd home
[root@Jin home]# ls
copy.java docker Jin JinTest Jin.txt mysql redis test www
[root@Jin home]# mkdir nginx
[root@Jin home]# ls
copy.java docker Jin JinTest Jin.txt mysql nginx redis test www
[root@Jin home]# cd nginx
[root@Jin nginx]# touch nginx.config
[root@Jin nginx]# ls
nginx.config
[root@Jin nginx]# cd /
[root@Jin /]# docker run -d -P --name jutilujing-nginx -v /home/nginx/nginx.config:/etc/nginx/nginx.config nginx
eaee05f7dec261adfcfddd91711f094d4bcf8ac40da42d0e3c107c396b5a8a5b
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eaee05f7dec2 nginx "/docker-entrypoint.…" 8 seconds ago Up 7 seconds 0.0.0.0:49168->80/tcp, :::49168->80/tcp jutilujing-nginx
9346743f602c nginx "/docker-entrypoint.…" 3 hours ago Up 3 hours 0.0.0.0:49155->80/tcp, :::49155->80/tcp juming-nginx
faf9c51c6676 nginx "/docker-entrypoint.…" 3 hours ago Up 3 hours 0.0.0.0:49154->80/tcp, :::49154->80/tcp niming-nginx
[root@Jin /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eaee05f7dec2 nginx "/docker-entrypoint.…" 12 seconds ago Up 12 seconds 0.0.0.0:49168->80/tcp, :::49168->80/tcp jutilujing-nginx
9346743f602c nginx "/docker-entrypoint.…" 3 hours ago Up 3 hours 0.0.0.0:49155->80/tcp, :::49155->80/tcp juming-nginx
faf9c51c6676 nginx "/docker-entrypoint.…" 3 hours ago Up 3 hours 0.0.0.0:49154->80/tcp, :::49154->80/tcp niming-nginx
aa3358059bca centos "/bin/bash" 15 hours ago Exited (0) 15 hours ago trusting_black
[root@Jin /]# docker volume ls
DRIVER VOLUME NAME
local 1a382afa251c9035f90255d5ceddc7fbf5cc1febbb16b6b25356aad962b630bf
local 8de45fa0f3619b7bfe78e5e5484a6c79bdae54aca2305213db2f742aef5c8fab
local a4aa3a7209d6ccf0f4a415cd340bfcf0ce170aa9731e6a0fe9f0eb1211a7eab5
local c44a66786e2558401adb4216aa0f1b3a9d8d252a14524f2411b31bcc61cda201
local juming-nginx
[root@Jin /]# docker volume inspect jutilujing-nginx
[]
Error: No such volume: jutilujing-nginx
4、挂载存放的目录
所有的docker容器内的卷,没有指定目录的情况下都是在==/var/lib/docker/volumes/xxx/_data==
[root@Jin /]# cd /var/lib/docker
[root@Jin docker]# ls
buildkit containers image network overlay2 plugins runtimes swarm tmp trust volumes
[root@Jin docker]# cd volumes/
[root@Jin volumes]# ls
1a382afa251c9035f90255d5ceddc7fbf5cc1febbb16b6b25356aad962b630bf c44a66786e2558401adb4216aa0f1b3a9d8d252a14524f2411b31bcc61cda201
8de45fa0f3619b7bfe78e5e5484a6c79bdae54aca2305213db2f742aef5c8fab juming-nginx
a4aa3a7209d6ccf0f4a415cd340bfcf0ce170aa9731e6a0fe9f0eb1211a7eab5 metadata.db
backingFsBlockDev
[root@Jin volumes]# cd juming-nginx/
[root@Jin juming-nginx]# ls
_data
[root@Jin juming-nginx]# cd _data/
[root@Jin _data]# ls
conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
[root@Jin _data]# cat nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
5、区分
# 如何确定是具名挂载还是匿名挂载,亦或者是具体路劲挂载
-v 容器内路劲 #匿名挂载
-v 卷名:容器内路劲 #具名挂载
-v /宿主机路劲:容器内路劲 #指定路劲挂载
6、扩展
# 通过 -v容器内路劲,ro,rw改变读写权限
ro readonly #只读
rw readwrite #可读可写
# 一旦设置了容器权限,容器对挂载的内容就有了限定
docker run -d -P --name nginx01 -v ro-nginx:/etc/nginx/ro nginx
docker run -d -P --name nginx02 -v rw-nginx:/etc/nginx/ro nginx
# ro说明这个只能通过宿主机来操作,容器内无法操作,只有只读权限。
四、dockerfile
1、创建一个dockerfile
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "---end---"
CMD /bin/bash
2、构建dockerfile挂载
[root@Jin home]# ls
copy.java docker Jin JinTest Jin.txt mysql nginx redis test www
[root@Jin home]# mkdir docker-test-volume
[root@Jin home]# ls
copy.java docker docker-test-volume Jin JinTest Jin.txt mysql nginx redis test www
[root@Jin home]# cd docker-test-volume/
[root@Jin docker-test-volume]# vim dockerfile1
[root@Jin docker-test-volume]# cat dockerfile1 #匿名挂载
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "---end---"
CMD /bin/bash
[root@Jin docker-test-volume]# docker build -f dockerfile1 -t jin/centos:1.0 .
Sending build context to Docker daemon 2.048kB
Step 1/4 : FROM centos
---> 5d0da3dc9764
Step 2/4 : VOLUME ["volume01","volume02"]
---> Running in 5f2523c06abb
Removing intermediate container 5f2523c06abb
---> af6080bf17a8
Step 3/4 : CMD echo "---end---"
---> Running in 7acbf869f6a2
Removing intermediate container 7acbf869f6a2
---> 71b1e98be068
Step 4/4 : CMD /bin/bash
---> Running in b9f17806e002
Removing intermediate container b9f17806e002
---> 202c0ab30c5e
Successfully built 202c0ab30c5e
Successfully tagged jin/centos:1.0
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D8Kfx8xR-1679562589572)(https://gitee.com/happy_sad/typora-image/raw/master/images/1643006144793.png)]
3、启动镜像
[root@Jin docker-test-volume]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jin/centos 1.0 202c0ab30c5e 10 minutes ago 231MB
tomcat02 1.0 c2ae9e171b97 23 hours ago 684MB
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 4 weeks ago 113MB
mysql 5.7 c20987f18b13 4 weeks ago 448MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@Jin docker-test-volume]# docker run -it 202c0ab30c5e /bin/bash
[root@27a8f2387ed9 /]# ls -l
total 56
lrwxrwxrwx 1 root root 7 Nov 3 2020 bin -> usr/bin
drwxr-xr-x 5 root root 360 Jan 24 06:45 dev
drwxr-xr-x 1 root root 4096 Jan 24 06:45 etc
drwxr-xr-x 2 root root 4096 Nov 3 2020 home
lrwxrwxrwx 1 root root 7 Nov 3 2020 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Nov 3 2020 lib64 -> usr/lib64
drwx------ 2 root root 4096 Sep 15 14:17 lost+found
drwxr-xr-x 2 root root 4096 Nov 3 2020 media
drwxr-xr-x 2 root root 4096 Nov 3 2020 mnt
drwxr-xr-x 2 root root 4096 Nov 3 2020 opt
dr-xr-xr-x 119 root root 0 Jan 24 06:45 proc
dr-xr-x--- 2 root root 4096 Sep 15 14:17 root
drwxr-xr-x 11 root root 4096 Sep 15 14:17 run
lrwxrwxrwx 1 root root 8 Nov 3 2020 sbin -> usr/sbin
drwxr-xr-x 2 root root 4096 Nov 3 2020 srv
dr-xr-xr-x 13 root root 0 Jan 24 06:45 sys
drwxrwxrwt 7 root root 4096 Sep 15 14:17 tmp
drwxr-xr-x 12 root root 4096 Sep 15 14:17 usr
drwxr-xr-x 20 root root 4096 Sep 15 14:17 var
drwxr-xr-x 2 root root 4096 Jan 24 06:45 volume01
drwxr-xr-x 2 root root 4096 Jan 24 06:45 volume02
4、查看路劲
【端口1】
[root@Jin docker-test-volume]# exit
exit
[root@Jin docker-test-volume]# docker run -it 202c0ab30c5e /bin/bash
[root@c63aedb36136 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume01 volume02
[root@c63aedb36136 /]# cd volume01
[root@c63aedb36136 volume01]# touch container.txt
[root@c63aedb36136 volume01]#
【端口2】
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jin/centos 1.0 202c0ab30c5e 19 minutes ago 231MB
tomcat02 1.0 c2ae9e171b97 23 hours ago 684MB
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 4 weeks ago 113MB
mysql 5.7 c20987f18b13 4 weeks ago 448MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c63aedb36136 202c0ab30c5e "/bin/bash" About a minute ago Up About a minute unruffled_shockley
eaee05f7dec2 nginx "/docker-entrypoint.…" About an hour ago Up About an hour 0.0.0.0:49168->80/tcp, :::49168->80/tcp jutilujing-nginx
9346743f602c nginx "/docker-entrypoint.…" 4 hours ago Up 4 hours 0.0.0.0:49155->80/tcp, :::49155->80/tcp juming-nginx
faf9c51c6676 nginx "/docker-entrypoint.…" 4 hours ago Up 4 hours 0.0.0.0:49154->80/tcp, :::49154->80/tcp niming-nginx
[root@Jin /]# docker inspect c63aedb36136
[
{
"Id": "c63aedb36136791edf06e52583dd1ee8054a1e8c5204e866c82103586f471185",
"Created": "2022-01-24T06:51:34.022938064Z",
"Path": "/bin/bash",
"Args": [],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 20275,
"ExitCode": 0,
"Error": "",
"StartedAt": "2022-01-24T06:51:34.412266581Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:202c0ab30c5e265b96031de5cf54123897c9df843151b09074d7df150ac38f76",
"ResolvConfPath": "/var/lib/docker/containers/c63aedb36136791edf06e52583dd1ee8054a1e8c5204e866c82103586f471185/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/c63aedb36136791edf06e52583dd1ee8054a1e8c5204e866c82103586f471185/hostname",
"HostsPath": "/var/lib/docker/containers/c63aedb36136791edf06e52583dd1ee8054a1e8c5204e866c82103586f471185/hosts",
"LogPath": "/var/lib/docker/containers/c63aedb36136791edf06e52583dd1ee8054a1e8c5204e866c82103586f471185/c63aedb36136791edf06e52583dd1ee8054a1e8c5204e866c82103586f471185-json.log",
"Name": "/unruffled_shockley",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": {},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": null,
"CapDrop": null,
"CgroupnsMode": "host",
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": [],
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DeviceCgroupRules": null,
"DeviceRequests": null,
"KernelMemory": 0,
"KernelMemoryTCP": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": false,
"PidsLimit": null,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/17ee5717bde0d5a152b7675091f16086d6d10a9ebad22c3ef3995e6f8dca1a03-init/diff:/var/lib/docker/overlay2/062d86c5e366ca0ececd1c38ff44dee264283b594189692994d190dd67fee589/diff",
"MergedDir": "/var/lib/docker/overlay2/17ee5717bde0d5a152b7675091f16086d6d10a9ebad22c3ef3995e6f8dca1a03/merged",
"UpperDir": "/var/lib/docker/overlay2/17ee5717bde0d5a152b7675091f16086d6d10a9ebad22c3ef3995e6f8dca1a03/diff",
"WorkDir": "/var/lib/docker/overlay2/17ee5717bde0d5a152b7675091f16086d6d10a9ebad22c3ef3995e6f8dca1a03/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "volume",
"Name": "9020518c96b693ad53a823fb5ceaa66aa295bea0f246242fc1512b99b1dc21bf",
"Source": "/var/lib/docker/volumes/9020518c96b693ad53a823fb5ceaa66aa295bea0f246242fc1512b99b1dc21bf/_data",
"Destination": "volume01",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
},
{
"Type": "volume",
"Name": "4748f366cb24774bec86c3746d4cbb43cc8b0f4940ed11d6719a58c81b5a8846",
"Source": "/var/lib/docker/volumes/4748f366cb24774bec86c3746d4cbb43cc8b0f4940ed11d6719a58c81b5a8846/_data",
"Destination": "volume02",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
"Config": {
"Hostname": "c63aedb36136",
"Domainname": "",
"User": "",
"AttachStdin": true,
"AttachStdout": true,
"AttachStderr": true,
"Tty": true,
"OpenStdin": true,
"StdinOnce": true,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/bash"
],
"Image": "202c0ab30c5e",
"Volumes": {
"volume01": {},
"volume02": {}
},
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.label-schema.build-date": "20210915",
"org.label-schema.license": "GPLv2",
"org.label-schema.name": "CentOS Base Image",
"org.label-schema.schema-version": "1.0",
"org.label-schema.vendor": "CentOS"
}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "73133fdedfbfd4c5af9ee22fc1ac82cd56bdc1ef1b2e11c921d5375d921df25f",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {},
"SandboxKey": "/var/run/docker/netns/73133fdedfbf",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "33784f6344e6c71a397438201cc2be3d7ac2df8b4e5b480ab01ac7d1d6dd644f",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.5",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:05",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "7b8a815e7cd106aefd34943f8f9a8cdb55febac4620a4f820874412a6ccc74ec",
"EndpointID": "33784f6344e6c71a397438201cc2be3d7ac2df8b4e5b480ab01ac7d1d6dd644f",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.5",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:05",
"DriverOpts": null
}
}
}
}
]
[root@Jin /]# cd /var/lib/docker/volumes/9020518c96b693ad53a823fb5ceaa66aa295bea0f246242fc1512b99b1dc21bf/_data
[root@Jin _data]# ls
container.txt
五、数据卷容器
1、【端口1】父容器
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jin/centos 1.0 202c0ab30c5e 40 minutes ago 231MB
tomcat02 1.0 c2ae9e171b97 23 hours ago 684MB
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 4 weeks ago 113MB
mysql 5.7 c20987f18b13 4 weeks ago 448MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@Jin /]# docker run -it --name docker01 jin/centos:1.0
[root@d7ad0e34eba3 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume01 volume02
[root@d7ad0e34eba3 /]# cd volume01
[root@d7ad0e34eba3 volume01]# ls
[root@d7ad0e34eba3 volume01]# touch docker01
[root@d7ad0e34eba3 volume01]# ls
docker01 docker02
[root@d7ad0e34eba3 volume01]# ls
docker01 docker02 docker03
2、【端口2】
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d7ad0e34eba3 jin/centos:1.0 "/bin/sh -c /bin/bash" 31 seconds ago Up 30 seconds docker01
[root@Jin /]# docker run -it --name docker02 --volumes-from docker01 jin/centos:1.0
[root@f13c79d3b59c /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume01 volume02
[root@f13c79d3b59c /]# cd volume01
[root@f13c79d3b59c volume01]# ls
docker01
[root@f13c79d3b59c volume01]# touch docker02
[root@f13c79d3b59c volume01]# ls
docker01 docker02
[root@f13c79d3b59c volume01]# ls
docker01 docker02 docker03
3、【端口3】
[root@Jin /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f13c79d3b59c jin/centos:1.0 "/bin/sh -c /bin/bash" 2 minutes ago Up 2 minutes docker02
d7ad0e34eba3 jin/centos:1.0 "/bin/sh -c /bin/bash" 3 minutes ago Up 3 minutes docker01
[root@Jin /]# docker run -it --name docker03 --volumes-from docker01 jin/centos:1.0
[root@dd6116b88490 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume01 volume02
[root@dd6116b88490 /]# cd volume01
[root@dd6116b88490 volume01]# ls
docker01 docker02
[root@dd6116b88490 volume01]# touch docker03
[root@dd6116b88490 volume01]# ls
docker01 docker02 docker03
4、【端口4】
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9fklZe8t-1679562589575)(https://gitee.com/happy_sad/typora-image/raw/master/images/1643009548398.png)]
5、结论:
1、除非所有关联的容器挂了,不然只要有一个在操作,数据就依然存在。
2、容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用位置。
3、但是如果持久化到了本地,即使所有容器删除了,本地数据是不会删除的。
八、DockerFile
一、DockerFile介绍
是用来构建docker镜像的文件,可以理解为命令参数脚本
构建步骤:
- 编写一个dockerfile文件
- docker build 构建成为一个镜像
- docker run运行镜像
- docker push 发布镜像(DockerHub、阿里云镜像仓库 私有/共有)
二、 DockerFile基础知识
docker是面向开发的,我们以后要发布项目,做镜像,就要编写dockerfile文件,这个文件十分简单!docker镜像逐渐成为企业的交付标准,必须掌握!
- 每个指令都必须是大写字母
- 按照从上到下顺序执行
- *#*表示注释
- 每一个指令都会创建体检一个新的镜像层,并提交
步骤:开发,部署, 运维… 缺一不可!
DockerFile: 构建文件, 定义了一切的步骤,源代码
DockerImages: 通过DockerFile构建生成的镜像, 最终发布和运行的产品!
Docker容器:容器就是镜像运行起来提供服务器
三、DockerFile指令说明
FROM # 基础镜像,一切从这里开始构建
MAINTAINER # 镜像是谁写的, 姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤, tomcat镜像, 这个tomcat压缩包!添加内容
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 保留端口配置
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令, 可以追加命令
ONBUILD # 当构建一个被继承DockerFile 这个时候就会运行 ONBUILD 的指令,触发指令
COPY # 类似ADD, 将我们文件拷贝到镜像中
ENV # 构建的时候设置环境变量!
四、制作一个centos镜像
1、【端口2】官方默认没有一些命令
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jin/centos 1.0 202c0ab30c5e 2 hours ago 231MB
tomcat02 1.0 c2ae9e171b97 24 hours ago 684MB
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 4 weeks ago 113MB
mysql 5.7 c20987f18b13 4 weeks ago 448MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@Jin /]# docker run -it centos #运行官方的centos
[root@b5bb3fd852b7 /]# pwd #默认的目录是跟目录
/
[root@b5bb3fd852b7 /]# vim #没有vim命令
bash: vim: command not found
[root@b5bb3fd852b7 /]# ifconfig #没有ifconfig命令
bash: ifconfig: command not found
2、【端口1】配置dockerfile并build
mydockerfile文件内容
FROM centos
MAINTAINER jin<879466586@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash
[root@Jin /]# cd /home
[root@Jin home]# ls
copy.java docker docker-test-volume Jin JinTest Jin.txt mysql nginx redis test www
[root@Jin home]# mkdir dockerfile
[root@Jin home]# ls
copy.java docker dockerfile docker-test-volume Jin JinTest Jin.txt mysql nginx redis test www
[root@Jin home]# cd dockerfile
[root@Jin dockerfile]# vim mydockerfile-centos
[root@Jin dockerfile]# cat mydockerfile-centos
FROM centos
MAINTAINER jin<879466586@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash
[root@Jin dockerfile]# docker build -f mydockerfile-centos -t mycentos:0.1 .
Sending build context to Docker daemon 2.048kB
Step 1/10 : FROM centos
---> 5d0da3dc9764
Step 2/10 : MAINTAINER jin<879466586@qq.com>
---> Running in 21002a5934bc
Removing intermediate container 21002a5934bc
---> 01154e6e44df
Step 3/10 : ENV MYPATH /usr/local
---> Running in 96a741e2883f
Removing intermediate container 96a741e2883f
---> ce71e94b6557
Step 4/10 : WORKDIR $MYPATH
---> Running in 230ee9abfb01
Removing intermediate container 230ee9abfb01
---> 9c111c5a92f4
Step 5/10 : RUN yum -y install vim
---> Running in 580cd1835dc9
CentOS Linux 8 - AppStream 8.8 MB/s | 8.4 MB 00:00
CentOS Linux 8 - BaseOS 3.5 MB/s | 4.6 MB 00:01
CentOS Linux 8 - Extras 14 kB/s | 10 kB 00:00
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
vim-enhanced x86_64 2:8.0.1763-16.el8 appstream 1.4 M
Installing dependencies:
gpm-libs x86_64 1.20.7-17.el8 appstream 39 k
vim-common x86_64 2:8.0.1763-16.el8 appstream 6.3 M
vim-filesystem noarch 2:8.0.1763-16.el8 appstream 49 k
which x86_64 2.21-16.el8 baseos 49 k
Transaction Summary
================================================================================
Install 5 Packages
Total download size: 7.8 M
Installed size: 30 M
Downloading Packages:
(1/5): gpm-libs-1.20.7-17.el8.x86_64.rpm 393 kB/s | 39 kB 00:00
(2/5): vim-filesystem-8.0.1763-16.el8.noarch.rp 1.3 MB/s | 49 kB 00:00
(3/5): vim-enhanced-8.0.1763-16.el8.x86_64.rpm 4.7 MB/s | 1.4 MB 00:00
(4/5): which-2.21-16.el8.x86_64.rpm 243 kB/s | 49 kB 00:00
(5/5): vim-common-8.0.1763-16.el8.x86_64.rpm 3.8 MB/s | 6.3 MB 00:01
--------------------------------------------------------------------------------
Total 2.9 MB/s | 7.8 MB 00:02
warning: /var/cache/dnf/appstream-02e86d1c976ab532/packages/gpm-libs-1.20.7-17.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS Linux 8 - AppStream 25 kB/s | 1.6 kB 00:00
Importing GPG key 0x8483C65D:
Userid : "CentOS (CentOS Official Signing Key) <security@centos.org>"
Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : which-2.21-16.el8.x86_64 1/5
Installing : vim-filesystem-2:8.0.1763-16.el8.noarch 2/5
Installing : vim-common-2:8.0.1763-16.el8.x86_64 3/5
Installing : gpm-libs-1.20.7-17.el8.x86_64 4/5
Running scriptlet: gpm-libs-1.20.7-17.el8.x86_64 4/5
Installing : vim-enhanced-2:8.0.1763-16.el8.x86_64 5/5
Running scriptlet: vim-enhanced-2:8.0.1763-16.el8.x86_64 5/5
Running scriptlet: vim-common-2:8.0.1763-16.el8.x86_64 5/5
Verifying : gpm-libs-1.20.7-17.el8.x86_64 1/5
Verifying : vim-common-2:8.0.1763-16.el8.x86_64 2/5
Verifying : vim-enhanced-2:8.0.1763-16.el8.x86_64 3/5
Verifying : vim-filesystem-2:8.0.1763-16.el8.noarch 4/5
Verifying : which-2.21-16.el8.x86_64 5/5
Installed:
gpm-libs-1.20.7-17.el8.x86_64 vim-common-2:8.0.1763-16.el8.x86_64
vim-enhanced-2:8.0.1763-16.el8.x86_64 vim-filesystem-2:8.0.1763-16.el8.noarch
which-2.21-16.el8.x86_64
Complete!
Removing intermediate container 580cd1835dc9
---> a3cdf5f0e8c5
Step 6/10 : RUN yum -y install net-tools
---> Running in fc88f4c3c810
Last metadata expiration check: 0:00:12 ago on Mon Jan 24 08:28:30 2022.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
net-tools x86_64 2.0-0.52.20160912git.el8 baseos 322 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 322 k
Installed size: 942 k
Downloading Packages:
net-tools-2.0-0.52.20160912git.el8.x86_64.rpm 1.1 MB/s | 322 kB 00:00
--------------------------------------------------------------------------------
Total 441 kB/s | 322 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : net-tools-2.0-0.52.20160912git.el8.x86_64 1/1
Running scriptlet: net-tools-2.0-0.52.20160912git.el8.x86_64 1/1
Verifying : net-tools-2.0-0.52.20160912git.el8.x86_64 1/1
Installed:
net-tools-2.0-0.52.20160912git.el8.x86_64
Complete!
Removing intermediate container fc88f4c3c810
---> 009d3e2f2d13
Step 7/10 : EXPOSE 80
---> Running in e1c1ec5aa2f3
Removing intermediate container e1c1ec5aa2f3
---> 0dfd4f54cb01
Step 8/10 : CMD echo $MYPATH
---> Running in d2e99e671532
Removing intermediate container d2e99e671532
---> acbce20a8438
Step 9/10 : CMD echo "---end---"
---> Running in 818a2433e464
Removing intermediate container 818a2433e464
---> bc984addcf57
Step 10/10 : CMD /bin/bash
---> Running in 01c3fd926a57
Removing intermediate container 01c3fd926a57
---> 5f23516ae29a
Successfully built 5f23516ae29a
Successfully tagged mycentos:0.1
[root@Jin dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos 0.1 5f23516ae29a 24 seconds ago 326MB
jin/centos 1.0 202c0ab30c5e 2 hours ago 231MB
tomcat02 1.0 c2ae9e171b97 24 hours ago 684MB
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 4 weeks ago 113MB
mysql 5.7 c20987f18b13 4 weeks ago 448MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@Jin dockerfile]# docker run -it mycentos:0.1
[root@bc70bcdf8742 local]# pwd
/usr/local
[root@bc70bcdf8742 local]# vim test
[root@bc70bcdf8742 local]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.3 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:03 txqueuelen 0 (Ethernet)
RX packets 8 bytes 656 (656.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2hBoVb30-1679562589578)(https://gitee.com/happy_sad/typora-image/raw/master/images/1643013223008.png)]
3、查看dockerfile镜像构建的历史
【端口1】docker history 镜像ID
[root@bc70bcdf8742 local]# exit
exit
[root@Jin dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos 0.1 5f23516ae29a 14 minutes ago 326MB
jin/centos 1.0 202c0ab30c5e 2 hours ago 231MB
tomcat02 1.0 c2ae9e171b97 25 hours ago 684MB
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 4 weeks ago 113MB
mysql 5.7 c20987f18b13 4 weeks ago 448MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@Jin dockerfile]# docker history 5f23516ae29a
IMAGE CREATED CREATED BY SIZE COMMENT
5f23516ae29a 14 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/bin… 0B
bc984addcf57 14 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B
acbce20a8438 14 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B
0dfd4f54cb01 14 minutes ago /bin/sh -c #(nop) EXPOSE 80 0B
009d3e2f2d13 14 minutes ago /bin/sh -c yum -y install net-tools 28.4MB
a3cdf5f0e8c5 14 minutes ago /bin/sh -c yum -y install vim 66.3MB
9c111c5a92f4 14 minutes ago /bin/sh -c #(nop) WORKDIR /usr/local 0B
ce71e94b6557 14 minutes ago /bin/sh -c #(nop) ENV MYPATH=/usr/local 0B
01154e6e44df 14 minutes ago /bin/sh -c #(nop) MAINTAINER jin<879466586@… 0B
5d0da3dc9764 4 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 4 months ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
<missing> 4 months ago /bin/sh -c #(nop) ADD file:805cb5e15fb6e0bb0… 231MB
五、CMD和ENTRYPOINT
CMD # 指定这个容器启动的时候运行的命令,只有最后一个回生效,可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令
1、CMD
dockerfile-cmd-test文件内容
FROM centos
CMD ["ls","-a"]
【端口1】
[root@Jin /]# cd home
[root@Jin home]# ls
copy.java docker dockerfile docker-test-volume Jin JinTest Jin.txt mysql nginx redis test www
[root@Jin home]# cd dockerfile
[root@Jin dockerfile]# ls
mydockerfile-centos
[root@Jin dockerfile]# vim dockerfile-cmd-test #编写dockerfile文件
[root@Jin dockerfile]# cat dockerfile-cmd-test
FROM centos
CMD ["ls","-a"]
[root@Jin dockerfile]# docker build -f dockerfile-cmd-test -t cmd-test . #构建镜像
Sending build context to Docker daemon 3.072kB
Step 1/2 : FROM centos
---> 5d0da3dc9764
Step 2/2 : CMD ["ls","-a"]
---> Using cache
---> e321aea9b23a
Successfully built e321aea9b23a
Successfully tagged cmd-test:latest
[root@Jin dockerfile]# docker run e321aea9b23a #运行一下,命令生效
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
#cmd的清理下 -l 替换CMD ["ls","-a"]命令,-l不是命令所以报错
[root@Jin dockerfile]# docker run e321aea9b23a -l #想追加一个命令 -l, ls -al
docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "-l": executable file not found in $PATH: unknown.
[root@Jin dockerfile]# docker run e321aea9b23a ls -al
total 56
drwxr-xr-x 1 root root 4096 Jan 24 09:22 .
drwxr-xr-x 1 root root 4096 Jan 24 09:22 ..
-rwxr-xr-x 1 root root 0 Jan 24 09:22 .dockerenv
lrwxrwxrwx 1 root root 7 Nov 3 2020 bin -> usr/bin
drwxr-xr-x 5 root root 340 Jan 24 09:22 dev
drwxr-xr-x 1 root root 4096 Jan 24 09:22 etc
drwxr-xr-x 2 root root 4096 Nov 3 2020 home
lrwxrwxrwx 1 root root 7 Nov 3 2020 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Nov 3 2020 lib64 -> usr/lib64
drwx------ 2 root root 4096 Sep 15 14:17 lost+found
drwxr-xr-x 2 root root 4096 Nov 3 2020 media
drwxr-xr-x 2 root root 4096 Nov 3 2020 mnt
drwxr-xr-x 2 root root 4096 Nov 3 2020 opt
dr-xr-xr-x 111 root root 0 Jan 24 09:22 proc
dr-xr-x--- 2 root root 4096 Sep 15 14:17 root
drwxr-xr-x 11 root root 4096 Sep 15 14:17 run
lrwxrwxrwx 1 root root 8 Nov 3 2020 sbin -> usr/sbin
drwxr-xr-x 2 root root 4096 Nov 3 2020 srv
dr-xr-xr-x 13 root root 0 Jan 24 06:45 sys
drwxrwxrwt 7 root root 4096 Sep 15 14:17 tmp
drwxr-xr-x 12 root root 4096 Sep 15 14:17 usr
drwxr-xr-x 20 root root 4096 Sep 15 14:17 var
2、ENTRYPOINT
dockerfile-entrypoint-test文件内容
FROM centos
ENTRYPOINT ["ls", "-a"]
【端口2】
[root@Jin /]# cd /home
[root@Jin home]# ls
copy.java docker dockerfile docker-test-volume Jin JinTest Jin.txt mysql nginx redis test www
[root@Jin home]# cd dockerfile
[root@Jin dockerfile]# ls
dockerfile-cmd-test mydockerfile-centos
[root@Jin dockerfile]# vim dockerfile-entrypoint-test
[root@Jin dockerfile]# cat dockerfile-entrypoint-test
FROM centos
ENTRYPOINT ["ls", "-a"]
[root@Jin dockerfile]# docker build -f dockerfile-entrypoint-test -t entrypoint-test .
Sending build context to Docker daemon 4.096kB
Step 1/2 : FROM centos
---> 5d0da3dc9764
Step 2/2 : ENTRYPOINT ["ls", "-a"]
---> Running in 84f53a8505f8
Removing intermediate container 84f53a8505f8
---> 59b145d99b79
Successfully built 59b145d99b79
Successfully tagged entrypoint-test:latest
[root@Jin dockerfile]# docker run 59b145d99b79
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
[root@Jin dockerfile]# docker run 59b145d99b79 -l 追加命令-l,是直接拼接在ENTRYPOINT命令后面
total 56
drwxr-xr-x 1 root root 4096 Jan 24 09:51 .
drwxr-xr-x 1 root root 4096 Jan 24 09:51 ..
-rwxr-xr-x 1 root root 0 Jan 24 09:51 .dockerenv
lrwxrwxrwx 1 root root 7 Nov 3 2020 bin -> usr/bin
drwxr-xr-x 5 root root 340 Jan 24 09:51 dev
drwxr-xr-x 1 root root 4096 Jan 24 09:51 etc
drwxr-xr-x 2 root root 4096 Nov 3 2020 home
lrwxrwxrwx 1 root root 7 Nov 3 2020 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Nov 3 2020 lib64 -> usr/lib64
drwx------ 2 root root 4096 Sep 15 14:17 lost+found
drwxr-xr-x 2 root root 4096 Nov 3 2020 media
drwxr-xr-x 2 root root 4096 Nov 3 2020 mnt
drwxr-xr-x 2 root root 4096 Nov 3 2020 opt
dr-xr-xr-x 111 root root 0 Jan 24 09:51 proc
dr-xr-x--- 2 root root 4096 Sep 15 14:17 root
drwxr-xr-x 11 root root 4096 Sep 15 14:17 run
lrwxrwxrwx 1 root root 8 Nov 3 2020 sbin -> usr/sbin
drwxr-xr-x 2 root root 4096 Nov 3 2020 srv
dr-xr-xr-x 13 root root 0 Jan 24 06:45 sys
drwxrwxrwt 7 root root 4096 Sep 15 14:17 tmp
drwxr-xr-x 12 root root 4096 Sep 15 14:17 usr
drwxr-xr-x 20 root root 4096 Sep 15 14:17 var
六、制作tomcat镜像
1、创建tomcat文件存放安装包
【端口1】
[root@Jin /]# cd home
[root@Jin home]# ls
docker dockerfile docker-test-volume Jin JinTest mysql nginx redis www
[root@Jin home]# cd Jin
[root@Jin Jin]# ls
nginx
[root@Jin Jin]# mkdir tomcat
[root@Jin Jin]# ls
nginx tomcat
[root@Jin Jin]# cd tomcat
[root@Jin tomcat]# ls
apache-tomcat-9.0.58.tar.gz jdk-8u161-linux-x64.tar.gz
2、编写Dockerfile
Dockerfile文件(官方默认查找Dockerfile)
FROM centos
MAINTAINER Jin<879466586@qq.com>
COPY readme.txt /usr/local/readme.txt
ADD jdk-8u161-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.58.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_161
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.58
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.58
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.58/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.58/bin/logs/catalina.out
【端口1】
[root@Jin tomcat]# vim Dockerfile
[root@Jin tomcat]# cat Dockerfile
FROM centos
MAINTAINER Jin<879466586@qq.com>
COPY readme.txt /usr/local/readme.txt
ADD jdk-8u161-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.58.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_161
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.58
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.58
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.58/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.58/bin/logs/catalina.out
3、构建Dockerfile
【端口1】
[root@Jin tomcat]# ls
apache-tomcat-9.0.58.tar.gz Dockerfile jdk-8u161-linux-x64.tar.gz readme.txt
[root@Jin tomcat]# docker build -t mytomcat .
Sending build context to Docker daemon 201.3MB
Step 1/15 : FROM centos
---> 5d0da3dc9764
Step 2/15 : MAINTAINER Jin<879466586@qq.com>
---> Running in 52bea73a3d40
Removing intermediate container 52bea73a3d40
---> 148e4f46aa19
Step 3/15 : COPY readme.txt /usr/local/readme.txt
---> 3339a157109c
Step 4/15 : ADD jdk-8u161-linux-x64.tar.gz /usr/local/
---> 18e9537c22e9
Step 5/15 : ADD apache-tomcat-9.0.58.tar.gz /usr/local/
---> 91632d8d07f9
Step 6/15 : RUN yum -y install vim
---> Running in 0d4d07bf2de8
CentOS Linux 8 - AppStream 979 kB/s | 8.4 MB 00:08
CentOS Linux 8 - BaseOS 2.1 MB/s | 4.6 MB 00:02
CentOS Linux 8 - Extras 15 kB/s | 10 kB 00:00
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
vim-enhanced x86_64 2:8.0.1763-16.el8 appstream 1.4 M
Installing dependencies:
gpm-libs x86_64 1.20.7-17.el8 appstream 39 k
vim-common x86_64 2:8.0.1763-16.el8 appstream 6.3 M
vim-filesystem noarch 2:8.0.1763-16.el8 appstream 49 k
which x86_64 2.21-16.el8 baseos 49 k
Transaction Summary
================================================================================
Install 5 Packages
Total download size: 7.8 M
Installed size: 30 M
Downloading Packages:
(1/5): gpm-libs-1.20.7-17.el8.x86_64.rpm 190 kB/s | 39 kB 00:00
(2/5): vim-filesystem-8.0.1763-16.el8.noarch.rp 404 kB/s | 49 kB 00:00
(3/5): vim-enhanced-8.0.1763-16.el8.x86_64.rpm 3.2 MB/s | 1.4 MB 00:00
(4/5): which-2.21-16.el8.x86_64.rpm 272 kB/s | 49 kB 00:00
(5/5): vim-common-8.0.1763-16.el8.x86_64.rpm 9.9 MB/s | 6.3 MB 00:00
--------------------------------------------------------------------------------
Total 875 kB/s | 7.8 MB 00:09
warning: /var/cache/dnf/appstream-02e86d1c976ab532/packages/gpm-libs-1.20.7-17.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS Linux 8 - AppStream 1.0 MB/s | 1.6 kB 00:00
Importing GPG key 0x8483C65D:
Userid : "CentOS (CentOS Official Signing Key) <security@centos.org>"
Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : which-2.21-16.el8.x86_64 1/5
Installing : vim-filesystem-2:8.0.1763-16.el8.noarch 2/5
Installing : vim-common-2:8.0.1763-16.el8.x86_64 3/5
Installing : gpm-libs-1.20.7-17.el8.x86_64 4/5
Running scriptlet: gpm-libs-1.20.7-17.el8.x86_64 4/5
Installing : vim-enhanced-2:8.0.1763-16.el8.x86_64 5/5
Running scriptlet: vim-enhanced-2:8.0.1763-16.el8.x86_64 5/5
Running scriptlet: vim-common-2:8.0.1763-16.el8.x86_64 5/5
Verifying : gpm-libs-1.20.7-17.el8.x86_64 1/5
Verifying : vim-common-2:8.0.1763-16.el8.x86_64 2/5
Verifying : vim-enhanced-2:8.0.1763-16.el8.x86_64 3/5
Verifying : vim-filesystem-2:8.0.1763-16.el8.noarch 4/5
Verifying : which-2.21-16.el8.x86_64 5/5
Installed:
gpm-libs-1.20.7-17.el8.x86_64 vim-common-2:8.0.1763-16.el8.x86_64
vim-enhanced-2:8.0.1763-16.el8.x86_64 vim-filesystem-2:8.0.1763-16.el8.noarch
which-2.21-16.el8.x86_64
Complete!
Removing intermediate container 0d4d07bf2de8
---> 6f172f822fff
Step 7/15 : ENV MYPATH /usr/local
---> Running in e774d1a4b4e4
Removing intermediate container e774d1a4b4e4
---> 7f15c049205b
Step 8/15 : WORKDIR $MYPATH
---> Running in d208b00a0ba6
Removing intermediate container d208b00a0ba6
---> 75dfbcfbb3ae
Step 9/15 : ENV JAVA_HOME /usr/local/jdk1.8.0_161
---> Running in 64514a8a9aec
Removing intermediate container 64514a8a9aec
---> 582e25c060c0
Step 10/15 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
---> Running in 613b7575e456
Removing intermediate container 613b7575e456
---> e37a7b5087f1
Step 11/15 : ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.58
---> Running in f68a99b1dae5
Removing intermediate container f68a99b1dae5
---> 4ea58d36847b
Step 12/15 : ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.58
---> Running in 257e896ff584
Removing intermediate container 257e896ff584
---> ab5097155241
Step 13/15 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
---> Running in 5609e2dda324
Removing intermediate container 5609e2dda324
---> 5ac5bc1cc39f
Step 14/15 : EXPOSE 8080
---> Running in d71d0cc8f8e2
Removing intermediate container d71d0cc8f8e2
---> 2f452a5796ae
Step 15/15 : CMD /usr/local/apache-tomcat-9.0.58/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.58/bin/logs/catalina.out
---> Running in cfafa81911e5
Removing intermediate container cfafa81911e5
---> d7bdbbd1573b
Successfully built d7bdbbd1573b
Successfully tagged mytomcat:latest
[root@Jin tomcat]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat latest d7bdbbd1573b 47 seconds ago 698MB
entrypoint-test latest 59b145d99b79 20 hours ago 231MB
cmd-test latest e321aea9b23a 20 hours ago 231MB
mycentos 0.1 5f23516ae29a 21 hours ago 326MB
jin/centos 1.0 202c0ab30c5e 23 hours ago 231MB
tomcat02 1.0 c2ae9e171b97 45 hours ago 684MB
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 4 weeks ago 113MB
mysql 5.7 c20987f18b13 5 weeks ago 448MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
4、运行mytomcat镜像
【端口1】
[root@Jin tomcat]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat latest d7bdbbd1573b 30 minutes ago 698MB
entrypoint-test latest 59b145d99b79 20 hours ago 231MB
cmd-test latest e321aea9b23a 21 hours ago 231MB
mycentos 0.1 5f23516ae29a 21 hours ago 326MB
jin/centos 1.0 202c0ab30c5e 23 hours ago 231MB
tomcat02 1.0 c2ae9e171b97 46 hours ago 684MB
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 4 weeks ago 113MB
mysql 5.7 c20987f18b13 5 weeks ago 448MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@Jin tomcat]# docker run -d -p 39010:8080 --name mytomcat01 -v /home/Jin/tomcat/test:/usr/local/apache-tomcat-9.0.58/webapps/test -v /home/Jin/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.58/logs mytomcat
63f04f54ae3880b9a6d221aef88bc2e19714fb82effd596b8a28ce2a39d81ccb
[root@Jin tomcat]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
63f04f54ae38 mytomcat "/bin/sh -c '/usr/lo…" 21 seconds ago Up 20 seconds 0.0.0.0:39010->8080/tcp, :::39010->8080/tcp mytomcat01
[root@Jin tomcat]# docker exec -it 63f04f54ae38 /bin/bash
[root@63f04f54ae38 local]# ls
aegis apache-tomcat-9.0.58 bin etc games include jdk1.8.0_161 lib lib64 libexec readme.txt sbin share src
[root@63f04f54ae38 local]# pwd
/usr/local
[root@63f04f54ae38 local]# cd apache-tomcat-9.0.58/
[root@63f04f54ae38 apache-tomcat-9.0.58]# ls
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs temp webapps work
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CMIOgFrK-1679562589584)(https://gitee.com/happy_sad/typora-image/raw/master/images/1643090312508.png)]
5、运行测试
【端口2】
[root@Jin /]# curl localhost:39010
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Apache Tomcat/9.0.58</title>
<link href="favicon.ico" rel="icon" type="image/x-icon" />
<link href="tomcat.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="wrapper">
<div id="navigation" class="curved container">
<span id="nav-home"><a href="https://tomcat.apache.org/">Home</a></span>
<span id="nav-hosts"><a href="/docs/">Documentation</a></span>
<span id="nav-config"><a href="/docs/config/">Configuration</a></span>
<span id="nav-examples"><a href="/examples/">Examples</a></span>
<span id="nav-wiki"><a href="https://wiki.apache.org/tomcat/FrontPage">Wiki</a></span>
<span id="nav-lists"><a href="https://tomcat.apache.org/lists.html">Mailing Lists</a></span>
<span id="nav-help"><a href="https://tomcat.apache.org/findhelp.html">Find Help</a></span>
<br class="separator" />
</div>
<div id="asf-box">
<h1>Apache Tomcat/9.0.58</h1>
</div>
<div id="upper" class="curved container">
<div id="congrats" class="curved container">
<h2>If you're seeing this, you've successfully installed Tomcat. Congratulations!</h2>
</div>
<div id="notice">
<img id="tomcat-logo" src="tomcat.svg" alt="[tomcat logo]" />
<div id="tasks">
<h3>Recommended Reading:</h3>
<h4><a href="/docs/security-howto.html">Security Considerations How-To</a></h4>
<h4><a href="/docs/manager-howto.html">Manager Application How-To</a></h4>
<h4><a href="/docs/cluster-howto.html">Clustering/Session Replication How-To</a></h4>
</div>
</div>
<div id="actions">
<div class="button">
<a class="container shadow" href="/manager/status"><span>Server Status</span></a>
</div>
<div class="button">
<a class="container shadow" href="/manager/html"><span>Manager App</span></a>
</div>
<div class="button">
<a class="container shadow" href="/host-manager/html"><span>Host Manager</span></a>
</div>
</div>
<br class="separator" />
</div>
<div id="middle" class="curved container">
<h3>Developer Quick Start</h3>
<div class="col25">
<div class="container">
<p><a href="/docs/setup.html">Tomcat Setup</a></p>
<p><a href="/docs/appdev/">First Web Application</a></p>
</div>
</div>
<div class="col25">
<div class="container">
<p><a href="/docs/realm-howto.html">Realms & AAA</a></p>
<p><a href="/docs/jndi-datasource-examples-howto.html">JDBC DataSources</a></p>
</div>
</div>
<div class="col25">
<div class="container">
<p><a href="/examples/">Examples</a></p>
</div>
</div>
<div class="col25">
<div class="container">
<p><a href="https://wiki.apache.org/tomcat/Specifications">Servlet Specifications</a></p>
<p><a href="https://wiki.apache.org/tomcat/TomcatVersions">Tomcat Versions</a></p>
</div>
</div>
<br class="separator" />
</div>
<div id="lower">
<div id="low-manage" class="">
<div class="curved container">
<h3>Managing Tomcat</h3>
<p>For security, access to the <a href="/manager/html">manager webapp</a> is restricted.
Users are defined in:</p>
<pre>$CATALINA_HOME/conf/tomcat-users.xml</pre>
<p>In Tomcat 9.0 access to the manager application is split between
different users. <a href="/docs/manager-howto.html">Read more...</a></p>
<br />
<h4><a href="/docs/RELEASE-NOTES.txt">Release Notes</a></h4>
<h4><a href="/docs/changelog.html">Changelog</a></h4>
<h4><a href="https://tomcat.apache.org/migration.html">Migration Guide</a></h4>
<h4><a href="https://tomcat.apache.org/security.html">Security Notices</a></h4>
</div>
</div>
<div id="low-docs" class="">
<div class="curved container">
<h3>Documentation</h3>
<h4><a href="/docs/">Tomcat 9.0 Documentation</a></h4>
<h4><a href="/docs/config/">Tomcat 9.0 Configuration</a></h4>
<h4><a href="https://wiki.apache.org/tomcat/FrontPage">Tomcat Wiki</a></h4>
<p>Find additional important configuration information in:</p>
<pre>$CATALINA_HOME/RUNNING.txt</pre>
<p>Developers may be interested in:</p>
<ul>
<li><a href="https://tomcat.apache.org/bugreport.html">Tomcat 9.0 Bug Database</a></li>
<li><a href="/docs/api/index.html">Tomcat 9.0 JavaDocs</a></li>
<li><a href="https://github.com/apache/tomcat/tree/9.0.x">Tomcat 9.0 Git Repository at GitHub</a></li>
</ul>
</div>
</div>
<div id="low-help" class="">
<div class="curved container">
<h3>Getting Help</h3>
<h4><a href="https://tomcat.apache.org/faq/">FAQ</a> and <a href="https://tomcat.apache.org/lists.html">Mailing Lists</a></h4>
<p>The following mailing lists are available:</p>
<ul>
<li id="list-announce"><strong><a href="https://tomcat.apache.org/lists.html#tomcat-announce">tomcat-announce</a><br />
Important announcements, releases, security vulnerability notifications. (Low volume).</strong>
</li>
<li><a href="https://tomcat.apache.org/lists.html#tomcat-users">tomcat-users</a><br />
User support and discussion
</li>
<li><a href="https://tomcat.apache.org/lists.html#taglibs-user">taglibs-user</a><br />
User support and discussion for <a href="https://tomcat.apache.org/taglibs/">Apache Taglibs</a>
</li>
<li><a href="https://tomcat.apache.org/lists.html#tomcat-dev">tomcat-dev</a><br />
Development mailing list, including commit messages
</li>
</ul>
</div>
</div>
<br class="separator" />
</div>
<div id="footer" class="curved container">
<div class="col20">
<div class="container">
<h4>Other Downloads</h4>
<ul>
<li><a href="https://tomcat.apache.org/download-connectors.cgi">Tomcat Connectors</a></li>
<li><a href="https://tomcat.apache.org/download-native.cgi">Tomcat Native</a></li>
<li><a href="https://tomcat.apache.org/taglibs/">Taglibs</a></li>
<li><a href="/docs/deployer-howto.html">Deployer</a></li>
</ul>
</div>
</div>
<div class="col20">
<div class="container">
<h4>Other Documentation</h4>
<ul>
<li><a href="https://tomcat.apache.org/connectors-doc/">Tomcat Connectors</a></li>
<li><a href="https://tomcat.apache.org/connectors-doc/">mod_jk Documentation</a></li>
<li><a href="https://tomcat.apache.org/native-doc/">Tomcat Native</a></li>
<li><a href="/docs/deployer-howto.html">Deployer</a></li>
</ul>
</div>
</div>
<div class="col20">
<div class="container">
<h4>Get Involved</h4>
<ul>
<li><a href="https://tomcat.apache.org/getinvolved.html">Overview</a></li>
<li><a href="https://tomcat.apache.org/source.html">Source Repositories</a></li>
<li><a href="https://tomcat.apache.org/lists.html">Mailing Lists</a></li>
<li><a href="https://wiki.apache.org/tomcat/FrontPage">Wiki</a></li>
</ul>
</div>
</div>
<div class="col20">
<div class="container">
<h4>Miscellaneous</h4>
<ul>
<li><a href="https://tomcat.apache.org/contact.html">Contact</a></li>
<li><a href="https://tomcat.apache.org/legal.html">Legal</a></li>
<li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
</ul>
</div>
</div>
<div class="col20">
<div class="container">
<h4>Apache Software Foundation</h4>
<ul>
<li><a href="https://tomcat.apache.org/whoweare.html">Who We Are</a></li>
<li><a href="https://tomcat.apache.org/heritage.html">Heritage</a></li>
<li><a href="https://www.apache.org">Apache Home</a></li>
<li><a href="https://tomcat.apache.org/resources.html">Resources</a></li>
</ul>
</div>
</div>
<br class="separator" />
</div>
<p class="copyright">Copyright ©1999-2022 Apache Software Foundation. All Rights Reserved</p>
</div>
</body>
</html>
网页访问:
6、发布项目
编写web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
</web-app>
index.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello. xiaofan</title>
</head>
<body>
Hello World!<br/>
<%
System.out.println("-----my test web logs------");
%>
</body>
</html>
【端口2】
[root@Jin /]# cd /home/Jin/tomcat
[root@Jin tomcat]# ls
apache-tomcat-9.0.58.tar.gz Dockerfile jdk-8u161-linux-x64.tar.gz readme.txt test tomcatlogs
[root@Jin tomcat]# cd test/
[root@Jin test]# mkdir WEB-INF
[root@Jin test]# ls
WEB-INF
[root@Jin test]# cd WEB-INF/
[root@Jin WEB-INF]# vim web.xml
[root@Jin WEB-INF]# cd ..
[root@Jin test]# vim index.jsp
[root@Jin test]# ls
index.jsp WEB-INF
[root@Jin test]# cat index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello. Jin</title>
</head>
<body>
Hello World!<br/>
<%
System.out.println("-----my test web logs------");
%>
</body>
</html>
查看日志
[root@Jin test]# cd ..
[root@Jin tomcat]# ls
apache-tomcat-9.0.58.tar.gz Dockerfile jdk-8u161-linux-x64.tar.gz readme.txt test tomcatlogs
[root@Jin tomcat]# cd tomcatlogs/
[root@Jin tomcatlogs]# ls -ll
total 24
-rw-r----- 1 root root 6708 Jan 25 14:39 catalina.2022-01-25.log
-rw-r----- 1 root root 6736 Jan 25 14:49 catalina.out
-rw-r----- 1 root root 0 Jan 25 13:55 host-manager.2022-01-25.log
-rw-r----- 1 root root 408 Jan 25 13:55 localhost.2022-01-25.log
-rw-r----- 1 root root 989 Jan 25 14:49 localhost_access_log.2022-01-25.txt
-rw-r----- 1 root root 0 Jan 25 13:55 manager.2022-01-25.log
[root@Jin tomcatlogs]# cat catalina.out
25-Jan-2022 05:55:38.398 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/9.0.58
25-Jan-2022 05:55:38.515 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Jan 15 2022 14:37:38 UTC
25-Jan-2022 05:55:38.515 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.58.0
25-Jan-2022 05:55:38.515 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
25-Jan-2022 05:55:38.515 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 3.10.0-1127.19.1.el7.x86_64
25-Jan-2022 05:55:38.515 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
25-Jan-2022 05:55:38.516 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /usr/local/jdk1.8.0_161/jre
25-Jan-2022 05:55:38.516 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 1.8.0_161-b12
25-Jan-2022 05:55:38.516 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation
25-Jan-2022 05:55:38.516 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/apache-tomcat-9.0.58
25-Jan-2022 05:55:38.516 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/apache-tomcat-9.0.58
25-Jan-2022 05:55:38.523 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/apache-tomcat-9.0.58/conf/logging.properties
25-Jan-2022 05:55:38.523 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
25-Jan-2022 05:55:38.523 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
25-Jan-2022 05:55:38.523 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
25-Jan-2022 05:55:38.523 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
25-Jan-2022 05:55:38.523 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
25-Jan-2022 05:55:38.523 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/apache-tomcat-9.0.58
25-Jan-2022 05:55:38.523 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/apache-tomcat-9.0.58
25-Jan-2022 05:55:38.524 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/apache-tomcat-9.0.58/temp
25-Jan-2022 05:55:38.525 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The Apache Tomcat Native library which allows using OpenSSL was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]
25-Jan-2022 05:55:39.670 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
25-Jan-2022 05:55:39.722 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [1740] milliseconds
25-Jan-2022 05:55:39.785 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
25-Jan-2022 05:55:39.785 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.58]
25-Jan-2022 05:55:39.805 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/apache-tomcat-9.0.58/webapps/docs]
25-Jan-2022 05:55:40.394 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/apache-tomcat-9.0.58/webapps/docs] has finished in [589] ms
25-Jan-2022 05:55:40.395 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/apache-tomcat-9.0.58/webapps/ROOT]
25-Jan-2022 05:55:40.448 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/apache-tomcat-9.0.58/webapps/ROOT] has finished in [53] ms
25-Jan-2022 05:55:40.448 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/apache-tomcat-9.0.58/webapps/host-manager]
25-Jan-2022 05:55:40.524 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/apache-tomcat-9.0.58/webapps/host-manager] has finished in [76] ms
25-Jan-2022 05:55:40.524 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/apache-tomcat-9.0.58/webapps/manager]
25-Jan-2022 05:55:40.578 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/apache-tomcat-9.0.58/webapps/manager] has finished in [54] ms
25-Jan-2022 05:55:40.578 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/apache-tomcat-9.0.58/webapps/examples]
25-Jan-2022 05:55:41.120 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/apache-tomcat-9.0.58/webapps/examples] has finished in [541] ms
25-Jan-2022 05:55:41.120 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/apache-tomcat-9.0.58/webapps/test]
25-Jan-2022 05:55:41.169 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/apache-tomcat-9.0.58/webapps/test] has finished in [49] ms
25-Jan-2022 05:55:41.178 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
25-Jan-2022 05:55:41.238 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [1516] milliseconds
25-Jan-2022 06:39:51.600 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.reload Reloading context [/test]
25-Jan-2022 06:39:51.601 INFO [Catalina-utility-1] org.apache.catalina.core.StandardContext.reload Reloading Context with name [/test] has started
25-Jan-2022 06:39:51.668 INFO [Catalina-utility-1] org.apache.catalina.core.StandardContext.reload Reloading Context with name [/test] is completed
-----my test web logs------
七、发布镜像
1、发布镜像到DockerHub
1、DockerHub
# 账号:jinki
# 密码:yjj227819
DockerHub官网:https://hub.docker.com/
2、docker push 提交的镜像名
# 提交的镜像名 等价于 账号/镜像名:版本号(Username/Image:Tag)
# 步骤:
1、docker tag [制作的镜像名] 账号/镜像名:版本号
2、docker images
2、docker push 账号/镜像名:版本号
[root@Jin /]# docker login --help #查看登录dockerhub的命令
Usage: docker login [OPTIONS] [SERVER]
Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.
Options:
-p, --password string Password
--password-stdin Take the password from stdin
-u, --username string Username
[root@Jin /]# docker login -u jinki # docker login -u 账户
Password: # 密码
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat latest d7bdbbd1573b 2 hours ago 698MB
entrypoint-test latest 59b145d99b79 22 hours ago 231MB
cmd-test latest e321aea9b23a 22 hours ago 231MB
mycentos 0.1 5f23516ae29a 23 hours ago 326MB
jin/centos 1.0 202c0ab30c5e 25 hours ago 231MB
tomcat02 1.0 c2ae9e171b97 47 hours ago 684MB
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 4 weeks ago 113MB
mysql 5.7 c20987f18b13 5 weeks ago 448MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@Jin /]# docker push jin/mytomcat:1.0 #以下几种方法都没有成功
The push refers to repository [docker.io/jin/mytomcat]
An image does not exist locally with the tag: jin/mytomcat
[root@Jin /]# docker push jin/mytomcat
Using default tag: latest
The push refers to repository [docker.io/jin/mytomcat]
An image does not exist locally with the tag: jin/mytomcat
[root@Jin /]# docker push jinki/mytomcat
Using default tag: latest
The push refers to repository [docker.io/jinki/mytomcat]
An image does not exist locally with the tag: jinki/mytomcat
[root@Jin /]# docker push mytomcat
Using default tag: latest
The push refers to repository [docker.io/library/mytomcat]
8376280e9e29: Preparing
652d035abf0b: Preparing
a80817105c03: Preparing
34d84c167f88: Preparing
74ddd0ec08fa: Preparing
denied: requested access to the resource is denied
[root@Jin /]# docker tag mytomcat jinki/tomcat:1.0 #docker tag [制作的镜像名] 账号/镜像名:版本号
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat latest d7bdbbd1573b 2 hours ago 698MB
jinki/tomcat 1.0 d7bdbbd1573b 2 hours ago 698MB
entrypoint-test latest 59b145d99b79 22 hours ago 231MB
cmd-test latest e321aea9b23a 23 hours ago 231MB
mycentos 0.1 5f23516ae29a 23 hours ago 326MB
jin/centos 1.0 202c0ab30c5e 25 hours ago 231MB
tomcat02 1.0 c2ae9e171b97 47 hours ago 684MB
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 4 weeks ago 113MB
mysql 5.7 c20987f18b13 5 weeks ago 448MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@Jin /]# docker push jinki/tomcat:1.0 #docker push 账号/镜像名:版本号
The push refers to repository [docker.io/jinki/tomcat]
8376280e9e29: Pushed
652d035abf0b: Pushed
a80817105c03: Pushed
34d84c167f88: Pushed
74ddd0ec08fa: Pushed
1.0: digest: sha256:007aaaffa7f82cf96d008745ab06f0619cf752c19a7edaef5a9d1bda87a31728 size: 1373
3、结果展示
4、docker rmi 提交的镜像名 和 docker pull 提交的镜像名
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jinki/tomcat 1.0 d7bdbbd1573b 3 hours ago 698MB
mytomcat latest d7bdbbd1573b 3 hours ago 698MB
entrypoint-test latest 59b145d99b79 23 hours ago 231MB
cmd-test latest e321aea9b23a 24 hours ago 231MB
mycentos 0.1 5f23516ae29a 24 hours ago 326MB
jin/centos 1.0 202c0ab30c5e 26 hours ago 231MB
tomcat02 1.0 c2ae9e171b97 2 days ago 684MB
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 4 weeks ago 113MB
mysql 5.7 c20987f18b13 5 weeks ago 448MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@Jin /]# docker rmi jinki/tomcat:1.0 #docker rmi 提交的镜像名
Untagged: jinki/tomcat:1.0
Untagged: jinki/tomcat@sha256:007aaaffa7f82cf96d008745ab06f0619cf752c19a7edaef5a9d1bda87a31728
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat latest d7bdbbd1573b 3 hours ago 698MB
entrypoint-test latest 59b145d99b79 23 hours ago 231MB
cmd-test latest e321aea9b23a 24 hours ago 231MB
mycentos 0.1 5f23516ae29a 24 hours ago 326MB
jin/centos 1.0 202c0ab30c5e 26 hours ago 231MB
tomcat02 1.0 c2ae9e171b97 2 days ago 684MB
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 4 weeks ago 113MB
mysql 5.7 c20987f18b13 5 weeks ago 448MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@Jin /]# docker pull jinki/tomcat:1.0 #docker pull 提交的镜像名
1.0: Pulling from jinki/tomcat
Digest: sha256:007aaaffa7f82cf96d008745ab06f0619cf752c19a7edaef5a9d1bda87a31728
Status: Downloaded newer image for jinki/tomcat:1.0
docker.io/jinki/tomcat:1.0
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jinki/tomcat 1.0 d7bdbbd1573b 3 hours ago 698MB
mytomcat latest d7bdbbd1573b 3 hours ago 698MB
entrypoint-test latest 59b145d99b79 23 hours ago 231MB
cmd-test latest e321aea9b23a 24 hours ago 231MB
mycentos 0.1 5f23516ae29a 24 hours ago 326MB
jin/centos 1.0 202c0ab30c5e 26 hours ago 231MB
tomcat02 1.0 c2ae9e171b97 2 days ago 684MB
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 4 weeks ago 113MB
mysql 5.7 c20987f18b13 5 weeks ago 448MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
5、退出登录
[root@Jin /]# docker logout
Removing login credentials for https://index.docker.io/v1/
2、发布镜像到阿里云容器
1、阿里云服务器
官网:https://ecs.console.aliyun.com/#/home
创建个人实例
设置Registry密码
密码:*****************
创建命名空间
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-58tpZJhF-1679562589590)(https://gitee.com/happy_sad/typora-image/raw/master/images/1643102404493.png)]
创建容器镜像
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pbTXkJZe-1679562589592)(https://gitee.com/happy_sad/typora-image/raw/master/images/1643102669049.png)]
结果展示
2、阿里云发布镜像步骤
1. 登录阿里云Docker Registry
$ docker login --username=jin进 registry.cn-hangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
2. 从Registry中拉取镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/jinki/jin-jinki:[镜像版本号]
3. 将镜像推送到Registry
$ docker login --username=jin进 registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/jinki/jin-jinki:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/jinki/jin-jinki:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
4. 选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。
如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录。
5. 示例
使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
registry.aliyuncs.com/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB
$ docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
使用 "docker push" 命令将该镜像推送至远程。
$ docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
3、login、tag、push(严格规范的阿里云)
[root@Jin /]# docker login --username=jin进 registry.cn-hangzhou.aliyuncs.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jinki/tomcat 1.0 d7bdbbd1573b 9 hours ago 698MB
mytomcat latest d7bdbbd1573b 9 hours ago 698MB
entrypoint-test latest 59b145d99b79 29 hours ago 231MB
cmd-test latest e321aea9b23a 30 hours ago 231MB
mycentos 0.1 5f23516ae29a 30 hours ago 326MB
jin/centos 1.0 202c0ab30c5e 32 hours ago 231MB
tomcat02 1.0 c2ae9e171b97 2 days ago 684MB
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 5 weeks ago 113MB
mysql 5.7 c20987f18b13 5 weeks ago 448MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@Jin /]# docker tag d7bdbbd1573b registry.cn-hangzhou.aliyuncs.com/jinki/jin-jinki:1.0
[root@Jin /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-hangzhou.aliyuncs.com/jinki/jin-jinki 1.0 d7bdbbd1573b 9 hours ago 698MB
jinki/tomcat 1.0 d7bdbbd1573b 9 hours ago 698MB
mytomcat latest d7bdbbd1573b 9 hours ago 698MB
entrypoint-test latest 59b145d99b79 29 hours ago 231MB
cmd-test latest e321aea9b23a 30 hours ago 231MB
mycentos 0.1 5f23516ae29a 30 hours ago 326MB
jin/centos 1.0 202c0ab30c5e 32 hours ago 231MB
tomcat02 1.0 c2ae9e171b97 2 days ago 684MB
nginx latest 605c77e624dd 3 weeks ago 141MB
tomcat latest fb5657adc892 4 weeks ago 680MB
redis latest 7614ae9453d1 5 weeks ago 113MB
mysql 5.7 c20987f18b13 5 weeks ago 448MB
centos latest 5d0da3dc9764 4 months ago 231MB
portainer/portainer latest 580c0e4e98b0 10 months ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 22 months ago 791MB
[root@Jin /]# docker push registry.cn-hangzhou.aliyuncs.com/jinki/jin-jinki:1.0
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/jinki/jin-jinki]
8376280e9e29: Pushed
652d035abf0b: Pushed
a80817105c03: Pushed
34d84c167f88: Pushed
74ddd0ec08fa: Pushed
1.0: digest: sha256:007aaaffa7f82cf96d008745ab06f0619cf752c19a7edaef5a9d1bda87a31728 size: 1373
4、结果展示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-erPsGSNM-1679562589595)(https://gitee.com/happy_sad/typora-image/raw/master/images/1643158948168.png)]
八、小结