Docker的容器基本使用教程

本文详细介绍了Docker容器的使用,包括启动、停止、删除容器,端口映射,容器连接以及容器信息查看等操作。通过示例演示了如何启动容器、进入容器、进行端口映射以实现服务访问,并展示了如何在容器间建立网络连接实现通信。此外,还讲解了容器的导出和导入功能,以及如何查看和管理容器的状态。

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

Docker的容器基本使用教程

启动容器

启动容器之前需要先拉取镜像,然后通过 run 命令启动容器,同一个镜像可以启动多个容器,只要执行多次 run 命令就行了。我们这边启动 centos 的镜像。

PS D:\> docker run -it centos /bin/bash
[root@6c7369854385 /]#

参数说明:

-i: 交互式操作

-t: 终端

centos : centos 镜像

/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

要退出终端,直接输入 exit。run 命令相当于执行了 create 和 start 命令。

上面的命令是前台运行的,运行后直接进入容器内,如果退出了容器就变为已退出状态,可以通过增加 -d 参数表示后台运行,这样不会在执行 run 命令后进入容器内操作。

对于停止的容器可以使用 start 命令启动。

PS D:\> docker start 5bdc26bb5efa

或者通过 restart 命令重启容器

PS D:\> docker restart 5bdc26bb5efa

查看容器

通过 ps 命令可以查看容器列表

PS D:\> docker ps -a

-a 表示显示所有的容器,不管任何状态。如果不加 -a 默认显示运行中的。

容器总过有7种状态 created(``已创建)、``restarting(重启中)、``running(运行中)、removing(删除中)、paused(已暂停)、``exited(已停止 )和dead(已死亡)。

停止容器

停止容器使用 stop 命令,加上容器 id

PS D:\> docker stop 5bdc26bb5efa

删除容器

删除容器用 rm 命令

PS D:\> docker rm 5bdc26bb5efa

或者通过以下命令删除所有的已停止的容器

PS D:\> docker container prune

进入容器

通过 run 命令我们创建了容器,我们可以通过 exec 或 attach 命令进入容器,在容器内部指定操作。两者有个区别,就是通过 attach 命令进入容器后通过 exit 退出,容器将会变为 exited 状态,exec 不会。

PS D:\> docker exec -it 5bdc26bb5efa /bin/bash
PS D:\> docker attach 5bdc26bb5efa

通过上面用法也可以看出,attach 不会在容器中创建进程执行额外的命令,只是附着到容器上。exec会在运行的容器上创建进程执行新的命令。

容器的导出和导入

如果要导出本地某个容器,可以使用 export 命令都出容器快照

PS D:\> docker export 5bdc26bb5efa > exportCentos.tar

默认导出到当前位置,上述命令表示导出到 D 盘。

img

导入快照可以用 import 命令从容器快照文件中再导入为镜像,以下实例将快照文件exportCentos.tar 导入到镜像 xu/centos:v1

PS D:\> cat exportCentos.tar | docker import - xu/centos:v1

导入容器快照可以是一个路径,也可以是一个 URL

容器连接-端口映射

前面我们用 run 命令启动了容器,比如我们启动了一个 redis 的容器,那么我们需要访问这个容器来存储我们的缓存,可以通过 -P 或 -p 参数来指定端口映射。

-P :是容器内部端口随机映射到主机的高端口。

-p : 是容器内部端口绑定到指定的主机端口和主机的网络地址。

使用 -P :

PS D:\> docker run -d -P redis

查看容器可以看到容器的6379端口绑定了主机的32770端口

PS D:\> docker ps -a

使用 -p,指定了主机端口为6666,ip为127.0.0.1,容器端口为 tcp ,后面的 tcp 表示绑定 tcp 端口,默认就是 tcp ,还可以设置为 udp :

PS D:\> docker run -d -p 127.0.0.1:6666:6379/tcp redis

通过 port 命令可以查看端口绑定情况

PS D:\> docker port 8b7db8c10c85
6379/tcp -> 127.0.0.1:6666

我们可以用 Redis Desktop Manager 测试连接下,可以看到如下连接成功啦。

img

容器连接-局域网连接

除了端口映射,我们还可以建立一个网络,将容器加入到这个网络中,这样容器之间可以在这个网络中相互访问,我们先建立这个网络

PS D:\> docker network create -d bridge test-net
5cb11e23cb3ad1bfea61452f1448dd3a67b34680dc1c5655203211fbe4c777ce

参数说明:

-d:参数指定 Docker 网络类型,有 bridge、overlay。其中 overlay 网络类型用于 Swarm mode,此处忽略。

然后通过 network 命令查看网络

PS D:\> docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
c594c3f53367        bridge              bridge              local
a98ee54f88d4        host                host                local
3d3d4b7c007a        none                null                local
5cb11e23cb3a        test-net            bridge              local

我们可以通过如下语句删除网络

PS D:\> docker network rm test-net

我们在运行容器的时候可以连接到指定的网络,建立两个 redis 容器

PS D:\> docker run -itd --name redis_1 --network test-net redis
PS D:\> docker run -itd --name redis_2 --network test-net redis

我们进入 redis_1 容器添加一个键值对,然后通过 redis_2 容器连接 redis_1 容器上的 redis 获取值,如下:

PS D:\> docker exec -it redis_1 /bin/bash
root@6bd2da3b7854:/data# redis-cli -h redis_1
redis_1:6379> set mykey myvalue
OK
redis_1:6379> get mykey
"myvalue"
PS D:\> docker exec -it redis_2 /bin/bash
root@6bd2da3b7854:/data# redis-cli -h redis_1
redis_1:6379> get mykey

可以看到 redis_1 和 redis_2 是相互连通的

容器信息

6379> get mykey
“myvalue”
PS D:> docker exec -it redis_2 /bin/bash
root@6bd2da3b7854:/data# redis-cli -h redis_1
redis_1:6379> get mykey


可以看到 redis_1 和 redis_2 是相互连通的

### 容器信息

通过 inspect 命令可以看到容器的信息
<think>好的,用户想要查找关于Docker容器使用教程,特别是针对初学者的指南。我需要根据用户提供的引用内容来整理相关信息,并生成一个结构清晰的回答。首先,看看用户提供的引用内容。 引用[1]提到了修复Docker容器漏洞,这可能和安全相关,但用户现在需要的是使用教程,所以这个引用可能不太相关,不过可以暂时留着备用。引用[2]详细说明了Docker的端口映射,特别是如何将容器内部的端口映射到主机,这应该是使用Docker运行服务时的关键步骤,需要重点强调。引用[3]是关于volume映射的操作,具体是通过docker cp命令复制文件,这可能涉及数据持久化,这也是Docker使用中的重要部分,应该包含在教程里。引用[4]和[5]分别是关于Kubernetes和AWS EC2的指南,可能和Docker相关,但用户明确需要Docker容器教程,所以这两个可能暂时不需要,但需要确认是否有相关内容。 用户可能需要从基础开始,比如安装、运行容器、端口映射、数据卷管理、常用命令等。根据引用[2]中的端口映射部分,应该详细解释docker run -p参数的用法。引用[3]中的volume映射也是一个重点,数据持久化对容器来说很重要,避免数据丢失。另外,用户可能还需要一些基本的命令,比如启动、停止容器,查看日志等。 需要确保回答结构清晰,分步骤讲解。可能的结构是:安装Docker -> 运行第一个容器 -> 端口映射 -> 数据卷管理 -> 常用命令 -> 学习资源。每个部分结合引用内容中的例子,比如引用[2]中的端口映射命令,引用[3]中的volume操作。 还要注意用户提到“beginner guide”,所以需要从基础开始,避免太深入的高级话题。可能需要包括一些常见问题,比如如何访问容器内的服务,如何处理数据持久化,如何查看运行中的容器等。 另外,用户提供的引用中有提到“docker run -p <host port>:<container port>”,这个需要详细说明,可能给出具体的例子,比如运行nginx并将80端口映射到主机的8080端口。数据卷部分可以结合docker cp命令,或者使用-v参数进行目录挂载。 需要检查是否有遗漏的重要点,比如Dockerfile的编写,构建镜像,但用户可能暂时只需要容器使用的基础知识,所以可能不需要深入Dockerfile,除非教程中包含这部分。但作为初学指南,可能还是需要简单提及如何获取镜像,运行容器基本操作。 最后,生成相关问题,可能需要包括如何安装Docker,优化容器性能,安全实践,多容器管理,Dockerfile使用等,结合引用中的内容,比如引用[1]的安全问题,引用[4]的K8s可能作为扩展。 现在需要组织这些内容,确保每个步骤都有对应的引用支持,并且语言简洁明了,适合初学者。</think>### Docker 容器使用入门指南 #### 1. **安装 Docker** - 访问[Docker 官网](https://www.docker.com/)下载对应操作系统的安装包。 - 安装完成后,在终端输入 `docker --version` 验证是否成功[^1]。 #### 2. **运行第一个容器** - 使用 `docker run` 命令启动容器。例如,运行一个 Nginx 服务: ```bash docker run -d --name my-nginx nginx ``` - `-d` 表示后台运行,`--name` 指定容器名称[^2]。 #### 3. **端口映射:访问容器服务** - 容器默认隔离网络,需通过**端口映射**暴露服务。例如将主机的 8080 端口映射到容器的 80 端口: ```bash docker run -d -p 8080:80 --name web-server nginx ``` - 访问 `http://localhost:8080` 即可看到 Nginx 默认页面。 #### 4. **数据卷管理:持久化容器数据** - 使用 `-v` 参数挂载主机目录到容器,避免数据丢失: ```bash docker run -d -v /host/data:/container/data --name data-container ubuntu ``` - 复制文件到容器(或反向)可使用 `docker cp`: ```bash docker cp /mnt/local-file.txt my-container:/path/in/container [^3] ``` #### 5. **常用命令** - 查看运行中的容器:`docker ps` - 停止容器:`docker stop <容器名>` - 查看容器日志:`docker logs <容器名>` - 进入容器终端:`docker exec -it <容器名> /bin/bash` #### 6. **学习资源扩展** - 官方文档:[Docker Docs](https://docs.docker.com/) - 进阶主题:Kubernetes 容器编排(参考[K8s 入门指南][^4]) --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值