Linux下Docker基础命令(使用腾讯云镜像源)

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,简单的理解就是"轻量级的虚拟机"。

本文主要介绍在 CentOS 7.x 下,使用腾讯云服务器,结合腾讯云镜像源,了解Docker的基础命令。

卸载旧版本的 Docker

如果要安装新版本的 Docker ,可以先卸载掉旧版本(在保证不影响使用的情况下)。

bash 复制代码
# 列出系统中已安装的docker包
yum list installed | grep docker

# 卸载已安装的docker包(如上一步没有安装 Docker 则可跳过)
yum -y remove docker-ce-cli.x86_64
yum -y remove docker-ce.x86_64
yum -y remove containerd.io

安装 Docker

bash 复制代码
# 安装 Docker 所需的依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加 Docker 的 yum 源
yum-config-manager --add-repo https://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repo

# yum 安装 Docker
yum install -y docker-ce docker-ce-cli containerd.io

# 查看 Docker 版本
docker version

启动 Docker

bash 复制代码
# 执行以下命令启动 Docker
systemctl start docker

# 然后将 Docker 设置为开机启动
systemctl enable docker

# 查看 Docker 运行状态
service docker status

# 可能返回以下内容,看到 active (running) 表示正在运行中
Redirecting to /bin/systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2023-12-22 10:00:56 CST; 11s ago
     Docs: https://docs.docker.com

配置镜像加速

Docker 工作的基础即是镜像,可以认为一个镜像即是一个独立的由应用组成的虚拟机。docker 官方建立了 Docker Hub 来存贮镜像,但是由于网络原因, Docker Hub 的访问速度过慢,这里更换为腾讯云的镜像源地址。

bash 复制代码
# 创建 Docker 配置目录
mkdir -p /etc/docker

# 配置 Docker 镜像加速源
vim /etc/docker/daemon.json

# 输入以下内容后保存退出
{
  "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}

# 重启守护进程并重启 Docker
systemctl daemon-reload && systemctl restart docker

拉取镜像并运行容器

docker run 命令用于从 Docker 镜像运行一个容器。

bash 复制代码
# 命令格式
docker run --name=容器名称 镜像名称

# 命令示例
docker run --name=hello hello-world

# 命令说明
--name=hello: 这个选项用于给容器指定一个名字,这里的名字是"hello"。
hello-world: 这是要运行的Docker镜像的名字。Docker会从本地或者Docker Hub上拉取这个镜像(如果本地没有的话),并基于这个镜像创建一个新的容器运行。

# 可能返回以下内容,表示运行成功
Hello from Docker!
This message shows that your installation appears to be working correctly.

hello-world通常是一个非常简单的 Docker 镜像,用于演示 Docker 如何工作。它会输出一条欢迎消息,然后停止运行。

命令会直接拉取 hello-world 镜像,然后运行一个 hello 容器,当运行这个命令时,Docker会做以下几件事情:

1、检查本地是否有 hello-world 镜像,如果没有,它会尝试从 Docker Hub (本示例为腾讯软件源)下载。

2、基于 hello-world 镜像创建一个新的容器。

3、给这个新容器命名为"hello"。

4、运行这个容器。

hello-world 容器会执行其预定义的命令,容器执行完毕后会自动停止,Docker 常见示例,用于展示 Docker 的基本工作原理。

查看容器进程

docker ps 命令用于查看容器的进程

bash 复制代码
# 命令示例
docker ps -a

# 可能返回以下内容,hello 容器已在运行
CONTAINER ID   IMAGE         COMMAND    CREATED         STATUS                     PORTS     NAMES
6272bfc3fc36   hello-world   "/hello"   2 minutes ago   Exited (0) 2 minutes ago             hello

拉取镜像

除了上述方式外,也可以通过 docker pull 命令拉取(下载)镜像,然后再手动运行。

bash 复制代码
# 命令格式
docker pull name[:tag]

name:镜像名称
tag:特定标签,如不指定则表示为最新版本

# 命令示例,拉取特定标签为 alpine 的 nginx 版本
docker pull nginx:alpine

# 命令示例,拉取最新的 nginx 版本
docker pull nginx

查看现有镜像

bash 复制代码
docker images

# 可能返回以下内容,包括 nginx 、hello-world
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         alpine    529b5644c430   8 weeks ago    42.6MB
hello-world   latest    d2c94e258dcb   7 months ago   13.3kB

创建容器

docker create 命令用于创建容器,镜像拉取成功后,根据镜像创建容器。

bash 复制代码
# 命令格式
docker create 参数 镜像名称

#参数说明
--name :容器名字
-p:指定端口映射,主机(宿主)端口:容器端口,如80:80 表示该容器将 80 端口映射到主机 80 端口

#命令示例
docker create --name=nginx_web -p 80:80 nginx

# 查看容器进程
docker ps -a

# 可能返回以下内容
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS                     PORTS     NAMES
bab8bb6d89ae   nginx         "/docker-entrypoint...."   50 seconds ago   Created                              nginx_web
6272bfc3fc36   hello-world   "/hello"                 4 minutes ago    Exited (0) 4 minutes ago             hello

与 docker run 不同的是,docker create 创建出来的容器不会直接启动运行。

启动容器

docker start 命令用于启动容器

bash 复制代码
# 命令格式
docker start 容器名称

# 命令示例
docker start nginx_web

因为本示例启动的是 nginx ,此时可以通过访问 http://ip 看到 nginx 的环境界面

停止容器

停止正在运行的容器有两种方法,docker stop 命令或者 docker kill 命令,区别在于,docker stop 会给时间让容器保存最后的运行状态,而 docker kill 则会直接关闭容器。

bash 复制代码
# 命令格式
docker stop 容器名称

# 命令示例
docker stop nginx_web

# 命令格式
docker kill 容器名称

# 命令示例
docker kill nginx_web

删除容器

docker rm 命令可以删除指定的容器

bash 复制代码
# 命令格式
docker rm [参数] 容器名称

# 参数说明
-f:强制停止并删除运行状态的容器

# 命令示例,删除终止状态的容器
docker rm nginx_web

# 命令示例,强制删除运行状态的容器
docker rm -f nginx_web

# 查看容器进程确认结果
docker ps -a

删除指定镜像

docker rmi 命令用于删除指定的镜像

bash 复制代码
# 命令格式
docker rmi 镜像名称

# 命令示例
docker rmi nginx

# 查看镜像确认结果
docker images

删除所有镜像

通过 docker rmi 跟镜像 ID 来删除指定的镜像。

bash 复制代码
# 获取所有镜像 ID 
docker images -q

# 通过镜像 ID 一次性删除所有镜像
docker rmi `docker images -q`

# 查看镜像确认结果
docker images

以上内容仅是 docker 日常使用的基础命令及参数,更多内容可查阅相关资料。

相关推荐
檀越剑指大厂几秒前
【Linux系列】sed命令的深入解析:如何使用sed删除文件内容
linux·运维·服务器
~央千澈~28 分钟前
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
docker·vim·镜像
不爱学英文的码字机器28 分钟前
深入理解 Linux 文件时间戳:atime、mtime 和 ctime 的概念及应用
linux·运维·服务器
qq1778036231 小时前
电商矩阵运营服务器怎么选
服务器·线性代数·矩阵·电商平台
迷迭所归处1 小时前
Linux系统 —— 进程控制系列 - 进程的等待:wait 与 waitpid
linux·运维·服务器
周先森的怣忈1 小时前
RHCE(第二部分)-----第三章:shell条件测试
linux·rhce
Charlie__ZS2 小时前
Docker安装
运维·docker·容器
AIGCnn2 小时前
jetson 无显示器配置WIFI
linux·jetson
yulingfeng592 小时前
Centos7 yum 报错“Could not resolve host: mirrorlist.centos.org; Unknown error“
linux·运维·centos
m0_748239332 小时前
【PHP】部署和发布PHP网站到IIS服务器
android·服务器·php