DOCKER 学习

本文详细介绍了Docker的安装、基本组成、常用命令,包括镜像、容器、数据卷的管理和使用。深入探讨了Dockerfile的构建过程,以及如何通过Compose进行多容器应用的编排。此外,还涵盖了Docker网络、Swarm集群的搭建和管理,以及Stack和Secret/Config的使用,是学习Docker全面知识的实战教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker安装

Docker的基本组成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cyGdTAER-1624438787913)(Docker学习笔记.assets/image-20210602155109081.png)]

镜像(image):

Docker镜像就好比时一个模板,可以通过这个模板来厂家容器服务,tomcat镜像==>run==> tomcat1容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行,就是在容器中的)

容器(container):

Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的。

启动、停止、删除,基本命令!

目前可以把容器理解为一个简易的Linux系统

仓库(repository):

仓库时存放镜像的地方

仓库分为公有仓库和私有仓库

公有仓库有 Docker Hub(默认是国外)

安装Docker

环境准备

  1. 需要Linux的基础
  2. CentOS 7
  3. 我们使用Xshell连接远程服务器进行操作

环境查看

#系统内核
[root@web ~]# uname -r
3.10.0-862.el7.x86_64
#系统版本
[root@web ~]# 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"

安装

帮助文档:

# 1、卸载旧版本
	 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
# 2、需要安装包
	 sudo yum install -y yum-utils
# 3、设置镜像仓库
	sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo(默认国外)
    
    sudo yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里云)

# 4、更新
	yum makecache fast
	
# 5、安装Docker相关 docker-ce 社区  ee企业版
	yum install docker-ce docker-ce-cli containerd.io
	
# 6、启动Docker
	systemctl start docker  启动docker
	systemctl enable docker 允许docker跟随系统启动
	
# 7、查看
	docker version
	
# 8、查看镜像
	docker images

卸载Docker

# 1、卸载依赖
	yum remove docker-ce docker-ce-cli containerd.io

# 2、删除资源
	rm -rf /var/lib/docker
# /var/lib/docker docker 的默认工作目录

Docker的常用命令

帮助命令

docker version 		#显示docket的版本信息
docker info 		#显示docker的系统信息,包括镜像和容器的数量
docker 命令--help	   #帮助命令

帮助文档的地址:https://docs.docker.com/reference/

镜像命令

Docker images 查看所有主机镜像

#解释
REPOSITORY 	镜像仓库源
IMAGE ID 	镜像的ID
CREATED		镜像的创建时间
SIZE		镜像大小

#可选项
	-a, --all           #列出所有镜像
   	-q, --quiet         #只显示镜像ID

docker search 搜索镜像

[root@web ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   10944     [OK]
mariadb                           MariaDB Server is a high performing open sou…   4137      [OK]
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   812                  [OK]

#可选项,通过搜索过滤
--filter == STARS =3000  搜索出来的镜像STARS 大于3000

docker pull 下载镜像

#下载镜像docker pull 镜像名[:tag]
[root@web ~]#docker pull mysql
#如果不写tag 默认latest

docker rmi 删除镜像

[root@web ~]#docker rmi -f 镜像id   #删除指定镜像[root@web ~]#docker rmi -f 镜像id  镜像id  镜像id   #删除多个镜像[root@web ~]#docker rmi -f $(docker images -aq)   #删除全部镜像

容器命令

说明:有了镜像才可以创建容器

新建容器并启用

docker run  [可选参数] image#参数说明--name="Name"  容器名字  用来区分容器-d		后台允许-i -t	使用交互方式允许,进入容器查看内容-P		指定容器端口  -p 8080:8080	-p  主机端口:容器端口(常用)	-p	容器端口	-p	ip:主机端口:容器端口-p		随机指定端口#测试、启动并进入[root@web ~]# docker run -it centos /bin/bash[root@9ababc950840 /]# #查看容器内部的系统  内部centos命令不完善[root@9ababc950840 /]# lsbin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var#从容器中退出到主机[root@9ababc950840 /]# exit

列出所有运行的容器

#docker ps 命令	-a 列出历史运行过的容器		n=? 列出最近创造的容器	-q  列出容器id[root@web ~]# docker psCONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES[root@web ~]# docker ps -aCONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                        PORTS     NAMES9ababc950840   centos    "/bin/bash"   17 minutes ago   Exited (130) 16 seconds ago             festive_wozniak[root@web ~]#

退出容器

exit  #退出容器并停止容器ctrl+p+q  #退出容器不停止容器

删除容器

docker rm 容器ID				#删除指定容器,不能强制删除正在运行的容器docker rm -f $(docker ps -aq)  #删除所有容器docker ps -a -q |xargs docker rm #删除所有容器

启动和停止容器

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

常用其他命令

#命令docker run -d 镜像名[root@web ~]# docker run -d centos#容器docker ps 发现容器停止#常见问题:docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,自动停止。#nginx容器启动后,发现自己没有提供服务,就会立刻停止就是没有程序了。

查看日志

docker logs -f -t --tail 日志条数 容器ID[root@web ~]# docker logs --helpUsage:  docker logs [OPTIONS] CONTAINERFetch the logs of a containerOptions:      --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)#自己编写一段shell脚本[root@web ~]# docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done"[root@web ~]# docker ps#显示日志-tf #显示格式、时间戳--tail number  #显示日志条数

查看容器中进程信息

#命令 docker top 容器ID[root@web ~]# docker top ad4b98dd559cUID                 PID                 PPID                C                   STIME               TTY                 TIME                CMDroot                19739               19718               0                   14:46               pts/0               00:00:00            /bin/bash

查看镜像元数据

# 命令docker inspect 容器ID[root@web ~]# docker inspect ad4b98dd559c[    {        "Id": "ad4b98dd559c94eb78d6f41315590eaedf2c846f01ef54837af1690daa4cfcc1",     #容器ID        "Created": "2021-06-03T06:46:48.941920427Z",        "Path": "/bin/bash",        "Args": [],        "State": {            "Status": "running",            "Running": true,            "Paused": false,            "Restarting": false,            "OOMKilled": false,            "Dead": false,            "Pid": 19739,            "ExitCode": 0,            "Error": "",            "StartedAt": "2021-06-03T06:46:49.485244184Z",            "FinishedAt": "0001-01-01T00:00:00Z"        },        "Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",        "ResolvConfPath": "/var/lib/docker/containers/ad4b98dd559c94eb78d6f41315590eaedf2c846f01ef54837af1690daa4cfcc1/resolv.conf",        "HostnamePath": "/var/lib/docker/containers/ad4b98dd559c94eb78d6f41315590eaedf2c846f01ef54837af1690daa4cfcc1/hostname",        "HostsPath": "/var/lib/docker/containers/ad4b98dd559c94eb78d6f41315590eaedf2c846f01ef54837af1690daa4cfcc1/hosts",        "LogPath": "/var/lib/docker/containers/ad4b98dd559c94eb78d6f41315590eaedf2c846f01ef54837af1690daa4cfcc1/ad4b98dd559c94eb78d6f41315590eaedf2c846f01ef54837af1690daa4cfcc1-json.log",        "Name": "/serene_wescoff",        "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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值