docker容器

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 虚拟化技术是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分割、组合为一个或多个电脑配置环境。由此,打破实体结构间的不可切割的障碍,使用户可以比原本的配置更好的方式来应用这些电脑硬件资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理配置所限制。一般所指的虚拟化资源包括计算能力和数据存储。

1.docker一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。

  • 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。
  • 容器化软件适用于基于 Linux 和 Windows 的应用,在任何环境中都能够始终如一地运行。
  • 容器赋予了软件独立性,使其免受外在环境差异(例如,开发和预演环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。

2.docker的基本组成:

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)

image.png



3.docker安装

命令:

uname-r#查看系统内核版本cat/etc/os-release#查看系统版本

事例:

[root@iZ1608aqb7ntn9Z/]#uname-r4.18.0-193.14.2.el8_2.x86_64[root@iZ1608aqb7ntn9Z/]#cat/etc/os-releaseNAME="CentOS Linux"VERSION="8 (Core)"ID="centos"ID_LIKE="rhel fedora"VERSION_ID="8"PLATFORM_ID="platform:el8"PRETTY_NAME="CentOS Linux 8 (Core)"ANSI_COLOR="0;31"CPE_NAME="cpe:/o:centos:centos:8"HOME_URL="https://www.centos.org/"BUG_REPORT_URL="https://bugs.centos.org/"CENTOS_MANTISBT_PROJECT="CentOS-8"CENTOS_MANTISBT_PROJECT_VERSION="8"REDHAT_SUPPORT_PRODUCT="centos"REDHAT_SUPPORT_PRODUCT_VERSION="8"

正式开始安装docker:

命令:

yumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engine

示例:

[root@iZ1608aqb7ntn9Z/]#yumremovedocker\>docker-client\>docker-client-latest\>docker-common\>docker-latest\>docker-latest-logrotate\>docker-logrotate\>docker-engineNomatchforargument: dockerNomatchforargument: docker-clientNomatchforargument: docker-client-latestNomatchforargument: docker-commonNomatchforargument: docker-latestNomatchforargument: docker-latest-logrotateNomatchforargument: docker-logrotateNomatchforargument: docker-engine没有软件包需要移除。依赖关系解决。无需任何处理。完毕!

下载依赖安装包

yuminstall-yyum-utils

配置镜像仓库

#国外的地址yum-config-manager\--add-repo\https://download.docker.com/linux/centos/docker-ce.repo  #设置阿里云的Docker镜像仓库yum-config-manager\--add-repo\https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum软件包

yummakecachefast

下载docker

yuminstalldocker-cedocker-ce-clicontainerd.io#安装社区版yuminstalldocker-eedocker-ee-clicontainerd.io#安装企业版

一般情况下安装社区版


启动Docker

命令:

systemctlstartdocker#启动Dockerdockerversion#查看当前版本号,是否启动成功systemctlenabledocker#设置开机自启动

事例:

[root@iZ1608aqb7ntn9Z/]#systemctlstartdocker[root@iZ1608aqb7ntn9Z/]#dockerversionClient: DockerEngine-CommunityVersion:           20.10.7APIversion:       1.41Goversion:        go1.13.15Gitcommit:        f0df350Built:             WedJun211:56:242021OS/Arch:           linux/amd64Context:           defaultExperimental:      trueServer: DockerEngine-CommunityEngine:
Version:          20.10.7APIversion:      1.41 (minimumversion1.12)
Goversion:       go1.13.15Gitcommit:       b0f5bc3Built:            WedJun211:54:482021OS/Arch:          linux/amd64Experimental:     falsecontainerd:
Version:          1.4.9GitCommit:        e25210fe30a0a703442421b0f60afac609f950a3runc:
Version:          1.0.1GitCommit:        v1.0.1-0-g4144b63docker-init:
Version:          0.19.0GitCommit:        de40ad0

Docker的HelloWorld

命令:

dockerrunhello-world

事例:

[root@iZ1608aqb7ntn9Z/]#dockerrunhello-worldUnabletofindimage'hello-world:latest'locally#本地没有latest: Pullingfromlibrary/hello-world#pull一个最新版b8dfde127a29: Pullcomplete#pull成功Digest: sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9eStatus: Downloadednewerimageforhello-world:latestHellofromDocker!#运行结果Thismessageshowsthatyourinstallationappearstobeworkingcorrectly.
Togeneratethismessage, Dockertookthefollowingsteps:
1.TheDockerclientcontactedtheDockerdaemon.
2.TheDockerdaemonpulledthe"hello-world"imagefromtheDockerHub.
    (amd64)
3.TheDockerdaemoncreatedanewcontainerfromthatimagewhichrunstheexecutablethatproducestheoutputyouarecurrentlyreading.
4.TheDockerdaemonstreamedthatoutputtotheDockerclient, whichsentittoyourterminal.
Totrysomethingmoreambitious, youcanrunanUbuntucontainerwith:
$dockerrun-itubuntubashShareimages, automateworkflows, andmorewithafreeDockerID:
https://hub.docker.com/Formoreexamplesandideas, visit:
https://docs.docker.com/get-started/


Docker卸载


yumremovedocker-cedocker-ce-clicontainerd.io#卸载依赖rm-rf/var/lib/docker#删除资源  . /var/lib/docker是docker的默认工作路径



配置阿里云镜像


sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json<<-'EOF'{
"registry-mirrors": ["https://axvfsf7e.mirror.aliyuncs.com"]
}
EOFsudosystemctldaemon-reloadsudosystemctlrestartdocker

基本命令:

dockerversion#查看docker的版本信息dockerinfo#查看docker的系统信息,包括镜像和容器的数量docker命令--help#帮助命令(可查看可选的参数)
dockerCOMMAND--help


镜像命令

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

docker search 搜索镜像

docker pull 镜像名[:tag] 下载镜像

docker rmi 删除镜像

#1.删除指定的镜像id[root@iZwz99sm8v95sckz8bd2c4Z~]#dockerrmi-f镜像id#2.删除多个镜像id[root@iZwz99sm8v95sckz8bd2c4Z~]#dockerrmi-f镜像id镜像id镜像id#3.删除全部的镜像id[root@iZwz99sm8v95sckz8bd2c4Z~]#dockerrmi-f$(dockerimages-aq)


容器命令


docker run [可选参数] image 运行容器


dockerrun [可选参数] image#参数说明--name="名字"指定容器名字-d后台方式运行-it使用交互方式运行,进入容器查看内容-p指定容器的端口( -pip:主机端口:容器端口配置主机端口映射到容器端口-p主机端口:容器端口-p容器端口)
-P随机指定端口(大写的P)

进入容器

[root@iZwz99sm8v95sckz8bd2c4Z~]#dockerrun-it [容器ID] /bin/bash


docker ps列出容器

#dockerps#列出当前正在运行的容器-a#列出所有容器的运行记录-n=?#显示最近创建的n个容器-q#只显示容器的编号[root@iZwz99sm8v95sckz8bd2c4Z~]#dockerpsCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES[root@iZwz99sm8v95sckz8bd2c4Z~]#dockerps-aCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMESbca129320bb5centos"/bin/bash"4minutesagoExited (0) 3minutesagooptimistic_shternbd1b8900c547centos"/bin/bash"6minutesagoExited (0) 5minutesagocool_teslacf6adbf1b506bf756fb1ae65"/hello"5hoursagoExited (0) 5hoursagooptimistic_darwin

删除容器

dockerrm容器id#删除指定的容器,不能删除正在运行的容器,强制删除使用rm-fdockerrm-f$(dockerps-aq)   #删除所有的容器dockerps-a-q|xargsdockerrm#删除所有的容器



启动和重启容器命令

dockerstart容器id#启动容器dockerrestart容器id#重启容器dockerstop容器id#停止当前运行的容器dockerkill容器id#强制停止当前容器


其他命令


1 查看日志



[root@iZwz99sm8v95sckz8bd2c4Z~]#dockerlogs--helpUsage:  dockerlogs [OPTIONS] CONTAINERFetchthelogsofacontainerOptions:
--detailsShowextradetailsprovidedtologs-f, --followFollowlogoutput--sincestringShowlogssincetimestamp (e.g. 2013-01-02T13:23:37Z) orrelative (e.g. 42mfor42minutes)
-n, --tailstringNumberoflinestoshowfromtheendofthelogs (default"all")
-t, --timestampsShowtimestamps--untilstringShowlogsbeforeatimestamp (e.g. 2013-01-02T13:23:37Z) orrelative (e.g. 42mfor42minutes)
常用:dockerlogs-tf容器iddockerlogs--tailnumber容器id#num为要显示的日志条数#docker容器后台运行,必须要有一个前台的进程,否则会自动停止#编写shell脚本循环执行,使得centos容器保持运行状态[root@iZwz99sm8v95sckz8bd2c4Z~]#dockerrun-dcentos/bin/sh-c"while true;do echo hi;sleep 5;done"c703b5b1911ff84d584390263a35707b6024816e1f46542b61918a6327a570dc[root@iZwz99sm8v95sckz8bd2c4Z~]#dockerpsCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMESc703b5b1911fcentos"/bin/sh -c 'while t…"13secondsagoUp10secondspedantic_banach[root@iZwz99sm8v95sckz8bd2c4Z~]#dockerlogs-tf--tail10c703b5b1911f2020-12-27T03:34:07.255599560Zhi2020-12-27T03:34:12.257641517Zhi2020-12-27T03:34:17.259706294Zhi2020-12-27T03:34:22.261693707Zhi2020-12-27T03:34:27.262609289Zhi2020-12-27T03:34:32.267862677Zhi2020-12-27T03:34:37.270382873Zhi2020-12-27T03:34:42.272414182Zhi2020-12-27T03:34:47.274823243Zhi2020-12-27T03:34:52.277419274Zhi


2 查看容器中进程信息

[root@iZwz99sm8v95sckz8bd2c4Z~]#dockertopc703b5b1911fUIDPIDPPIDCSTIMETTYTIMECMDroot1115611135011:31?00:00:00/bin/sh-cwhiletrue;doechohi;sleep5;doneroot1188611156011:43?00:00:00/usr/bin/coreutils--coreutils-prog-shebang=sleep/usr/bin/sleep5


3 查看容器的元数据

[root@iZwz99sm8v95sckz8bd2c4Z~]#dockerinspect容器id


4 进入当前正在运行的容器

方法一

[root@iZwz99sm8v95sckz8bd2c4Z~]#dockerexec-itc703b5b1911f/bin/bash[root@c703b5b1911f/]#lsbindevetchomeliblib64lost+foundmediamntoptprocrootrunsbinsrvsystmpusrvar[root@c703b5b1911f/]#ps-efUIDPIDPPIDCSTIMETTYTIMECMDroot10003:31?00:00:00/bin/sh-cwhiletrue;doechohi;sleep5;doneroot2790003:54pts/000:00:00/bin/bashroot3151003:56?00:00:00/usr/bin/coreutils--coreutils-prog-shebang=sleep/usr/bin/sleep5root316279003:56pts/000:00:00ps-ef

方法二:

[root@iZwz99sm8v95sckz8bd2c4Z~]#dockerattachc703b5b1911f


5 拷贝容器文件到主机


dockercp容器id:容器内路径目的主机路径[root@iZwz99sm8v95sckz8bd2c4Z~]#dockerexec-itc703b5b1911f/bin/bash[root@c703b5b1911f/]#cdhome[root@c703b5b1911fhome]#ls#touch新建文件[root@c703b5b1911fhome]#touchtest.java[root@c703b5b1911fhome]#lstest.java[root@c703b5b1911fhome]#exitexit[root@iZwz99sm8v95sckz8bd2c4Z~]#dockerpsCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMESc703b5b1911fcentos"/bin/sh -c 'while t…"35minutesagoUp35minutespedantic_banach[root@iZwz99sm8v95sckz8bd2c4Z~]#dockercpc703b5b1911f:/home/test.java/home[root@iZwz99sm8v95sckz8bd2c4Z~]#ls/homehaipantest.java

image.png

image.png

相关文章
|
7天前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
153 93
|
1月前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
260 77
|
9天前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
77 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
20天前
|
搜索推荐 安全 数据安全/隐私保护
7 个最能提高生产力的 Docker 容器
7 个最能提高生产力的 Docker 容器
103 35
|
1月前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
8天前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
38 17
|
20天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
8天前
|
运维 Java 虚拟化
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
67 12
|
9天前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
64 11
|
26天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
127 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档