docker启动完美容器的过程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本文详细介绍了使用Docker创建和管理容器的过程,包括拉取镜像、搜索镜像、创建容器、启动、停止、删除容器,以及查看容器日志和进程信息的常用命令。

这里是我用docker启动所有常见的容器完美的过程,就是一次创建,后面就可以一直使用

文档:

nanshaws/docker-everything: 用docker来创建各种容器,完美文档教你按照步骤操作制造完美容器,如果你使用docker桌面版的话,这个文档也许更适合你 (github.com)

我认为的创建容器并不是简简单单的拉镜像,创建一个不完整的容器就草草了事的,而是以完美的形态,搭建端口号,创建挂载目录,把容器变的像本机的软件一样的存在

这里就简单讲一下docker的基本命令,毕竟你们点开了这篇博客,不能让你们空手回去

docker images 查看所有本地的主机的镜像

[root@localhost ~]# docker images 
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    feb5d9fea6a5   17 months ago   13.3kB
hello-world   latest    feb5d9fea6a5   17 months ago   13.3kB
​
#解释:
REPOSITORY 镜像的仓库源
TAG        镜像的标签
IMAGE ID   镜像的id
CREATED    镜像的创建时间
SIZE       镜像的大小
​
​
#可选项:
   Options:
  -a, --all             #列出所有的镜像
  -q, --quiet           #只显示镜像的ID
​
​

docker search 搜索镜像

[root@localhost ~]# docker search mysql
NAME                            DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
mysql                           MySQL is a widely used, open-source relation…   13878     [OK]       
mariadb                         MariaDB Server is a high performing open sou…   5291      [OK]       
​
#可选项
--filter =stars =3000   搜索出来的镜像就是stars大于三千的
​
[root@localhost ~]# docker search mysql --filter=stars=10000
NAME      DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   13878     [OK]       
​

docker pull 下载镜像

#下载镜像    docker pull mysql  [:tag](版本)
[root@localhost ~]# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
b4ddc423e046: Pull complete 
b338d8e4ffd1: Pull complete 
b2b1b06949ab: Pull complete 
daf393284da9: Pull complete 
1cb8337ae65d: Pull complete 
f6c2cc79221c: Pull complete 
4cec461351e0: Pull complete 
ab6bf0cba08e: Pull complete 
8df43cafbd11: Pull complete 
c6d0aac53df5: Pull complete 
b24148c7c251: Pull complete 
Digest: sha256:d8dc78532e9eb3759344bf89e6e7236a34132ab79150607eb08cc746989aa047
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest   #真实地址
​
#两个命令是等价的
docker pull mysql 
docker pull docker.io/library/mysql:latest
​
#指定版本下载
[root@localhost ~]# docker pull mysql:5.7.41
5.7.41: Pulling from library/mysql
e048d0a38742: Pull complete 
c7847c8a41cb: Pull complete 
351a550f260d: Pull complete 
8ce196d9d34f: Pull complete 
17febb6f2030: Pull complete 
d4e426841fb4: Pull complete 
fda41038b9f8: Pull complete 
f47aac56b41b: Pull complete 
a4a90c369737: Pull complete 
97091252395b: Pull complete 
84fac29d61e9: Pull complete 
Digest: sha256:8cf035b14977b26f4a47d98e85949a7dd35e641f88fc24aa4b466b36beecf9d6
Status: Downloaded newer image for mysql:5.7.41
docker.io/library/mysql:5.7.41
​

docker rml 删除镜像

[root@localhost ~]# docker rmi -f be16cf2d832a
Untagged: mysql:5.7.41
Untagged: mysql@sha256:8cf035b14977b26f4a47d98e85949a7dd35e641f88fc24aa4b466b36beecf9d6
Deleted: sha256:be16cf2d832a9a54ce42144e25f5ae7cc66bccf0e003837e7b5eb1a455dc742b
Deleted: sha256:2dd6e094d35f48086adcdff89f36c9be8166fbbda0775b72efd9b12788a400a0
Deleted: sha256:01de218cde8a6eef7c19083f1a9dfdcc10e656651137c5083c8e8b293561e674
Deleted: sha256:84e3163c39fc29722fbea1461bc279bafc9d2da5937b1f4e5db6e08c6f08e3b4
Deleted: sha256:2b39b403c72a380afa25629a8b0af21e5bd33b071985740242e63856e6453359
Deleted: sha256:bf76a072ee83eef013d21ef4aed92cea89f1d15edd62ce0d4204268f513a2658
Deleted: sha256:8112761750f4100814858c647189c97db4129852fec2060580625254fa9b3440
Deleted: sha256:a527ebda1c7ee77668ecfec84a62ba7cc46769946fb565ff7895f2a0aecfd082
Deleted: sha256:ba8f679e76a9faba19756857e6f5d6809d8ba0a90507c6a815f3823244636e64
Deleted: sha256:51b0a4dc7d8cdf87950abd409fe3155df9118e4b33a1bbe91d6367d62557db87
Deleted: sha256:f3277814332978b36b309d241f692a182e37564d96a94fdde0382cb471953483
Deleted: sha256:c233345f327a72c79e2e19c75fcf9089a0c1488dfb66dd00d49fa2a5d1f76057
​
​
#docker rmi -f $(docker images -aq)    #删除全部的容器
​

容器命令

说明: 我们有了镜像才可以创建容器,linux,下载一个CentOS镜像来测试学习

docker pull centos

新建容器并启动

docker run [可选参数] image
​
# 参数说明
--name="Name"   容器名字   tomcat001   tomcat002 ,用来区分容器
-d              后台方式运行
-it             使用交互方式运行,进入容器查看内容
-p              指定容器的端口   -p 8080:8080
     -p ip:主机端口:容器端口
     -p 主机端口:容器端口      (常用的)
     -p 容器端口
     容器端口
-P              随机指定端口
​
​
​
​
#测试,启动并进入容器
[root@localhost ~]# docker run -it centos /bin/bash
[root@f77cf5efff07 /]# ls  #查看容器内的centos,基础版本,很多命令都是不完善的
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var 
​
#进入容器
[root@localhost home]# docker run -it baecb060a464 /bin/bash
​
#从容器中退出主机
[root@f77cf5efff07 /]# exit
exit
[root@localhost ~]# ls
anaconda-ks.cfg  cmake01  GameBookServer            mysql80-community-release-el7-7.noarch.rpm  redis-6.0.16 (3).tar.gz  test.c  模板  图片  下载  桌面
bianyi           cmake02  jdk-18_linux-x64_bin.rpm  redis-6.0.16                                test                 公共    视频  文档  音乐
​

列出所有的运行的容器

#docker ps 命令
     #列出当前正在运行的容器
-a   #列出当前正在运行的容器+带出历史运行过的容器
-n=? #显示最近创建的容器
-q   #只显示容器的编号
​
​
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS                     PORTS     NAMES
f77cf5efff07   centos         "/bin/bash"   7 minutes ago   Exited (0) 2 minutes ago             gifted_lehmann
06a28682bc04   feb5d9fea6a5   "/hello"      2 hours ago     Exited (0) 2 hours ago               reverent_khorana
aac81cb05c0d   feb5d9fea6a5   "/hello"      2 weeks ago     Exited (0) 2 weeks ago               infallible_bassi
​

退出容器

exit    #直接容器停止并退出
Ctrl +P +Q #容器不停止退出
[root@localhost ~]# docker run -it centos /bin/bash
[root@0d56e07d34d8 /]# [root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
0d56e07d34d8   centos    "/bin/bash"   20 seconds ago   Up 19 seconds             intelligent_jang
[root@localhost ~]# 
​

删除容器

docker rm 容器id                #删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -f
docker rm -f $(docker ps -aq)  #删除所有的容器
docker rm $(docker ps -aq)     #删除所有的容器

启动和停止容器的操作

docker start 容器id             #启动容器
docker restart 容器id           #重启容器
docker stop 容器id              #停止当前正在运行的容器
docker kill 容器id              #强制停止当前容器

常用的其他命令

后台启动容器

# 命令 docker run -d 镜像名 !
[root@localhost ~]# docker run -d centos
# 问题docker ps 发现centos停止了
​
#常见的坑 ,docker 容器启动后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
#nginx,容器启动后,发现自己没有提供服务,就会立刻停止,没有程序了
docker run -p 3303:3306 --name mysql-master \ 
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root  \
-d mysql:5.7
​

查看日志命令

docker logs -f --tail  
#自己写一个shell脚本
[root@localhost ~]# docker run -d centos /bin/sh -c "while true;do echo caoyanglin ;sleep 1;done"
​
#展示出服务器id
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS         PORTS     NAMES
08504c38c87e   centos    "/bin/sh -c 'while t…"   10 seconds ago   Up 9 seconds             thirsty_almeida
#显示日志
 -tf            #显示的日志
 --tail number  #要显示的日志条数
[root@localhost ~]# docker logs -tf --tail 10 08504c38c87e
​

查看容器中进程信息 ps

[root@localhost ~]# docker top 08504c38c87e
UID                 PID                 PPID                C                   STIME               TTY     
root                20400               20380               0                   18:40               ?       
root                22335               20400               0                   18:55               ?
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
24天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
180 77
|
5天前
|
搜索推荐 安全 数据安全/隐私保护
7 个最能提高生产力的 Docker 容器
7 个最能提高生产力的 Docker 容器
74 35
|
1月前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
4天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
10天前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
37 4
|
25天前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
80 3
|
1月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
99 7
|
1月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
40 5
|
1月前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
65 4
|
1月前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
74 3

热门文章

最新文章