入职必会-开发环境搭建47-Docker必会命令

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 本文介绍了Docker使用频率最高的30个命令

Docker服务命令

安装好Docker后,Docker会自动配置一个名为docker的服务,需要手动启动这个服务。下列是操作服务的命令说明。

# 启动docker服务
systemctl start docker
# 停止docker服务
systemctl stop docker
# 重启docker服务
systemctl restart docker
# 查看docker服务状态
systemctl status docker
# 设置开机启动docker服务
systemctl enable docker
# 查看docker概要信息
docker info
# 查看docker帮助文档
docker --help

操作示例:

[root@cxypa ~]# systemctl start docker
[root@cxypa ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since 五 2022-12-30 17:15:40 CST; 6min ago
     Docs: https://docs.docker.com
 Main PID: 46425 (dockerd)
    Tasks: 9
   Memory: 25.3M
   CGroup: /system.slice/docker.service
           └─46425 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Docker镜像相关命令

镜像介绍

Docker镜像是由文件系统叠加而成(是一种文件的存储形式);是docker中的核心概念,可以认为镜像就是对某些运行环境或者软件打的包,用户可以从docker仓库中下载基础镜像到本地,比如开发人员可以从docker仓库拉取(下载)一个只包含centos7系统的基础镜像,然后在这个镜像中安装jdk、mysql、Tomcat和自己开发的应用,最后将这些环境打成一个新的镜像。开发人员将这个新的镜像提交给测试人员进行测试,测试人员只需要在测试环境下运行这个镜像就可以了,这样就可以保证开发人员的环境和测试人员的环境完全一致。

docker images 查看镜像

命令说明:

# 查看本机所有拥有的Docker镜像
docker images
# 查看本机所有拥有的Docker镜像,仅显示镜像ID
docker images -q

操作示例:

[root@cxypa ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@cxypa ~]#

效果说明:

可以看到,当前系统中没有任何镜像。

名称

说明

REPOSITORY

镜像的名称

TAG

镜像的标签 (是可以省略,默认是latest)

IMAGE ID

镜像的ID

CREATED

镜像的创建日期(不是获取该镜像的日期)

SIZE

镜像的大小

在Centos 7中镜像都是存储在/var/lib/docker目录下

docker search 搜索镜像

命令说明:

# 到 Docker Hub 仓库上搜索镜像
docker search 镜像名称

操作示例:

[root@cxypa docker]# docker search redis
NAME                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
redis                        Redis is an open source key-value store that…   11685     [OK]       
bitnami/redis                Bitnami Redis Docker Image                      236                  [OK]
redislabs/redisinsight       RedisInsight - The GUI for Redis                76                   
redislabs/redisearch         Redis With the RedisSearch module pre-loaded…   56                   
# 省略其他
[root@cxypa docker]#

效果说明:

名称

说明

NAME

镜像的名称

DESCRIPTION

镜像的描述

STARS

用户的评价,评价数量越高说明越受欢迎

OFFICIAL

是否官方的镜像

AUTOMATED

是否由Docker Hub自动构建流程创建的镜像

在命令行搜索不太方便,推荐去Docker Hub 上搜索镜像:http://hub.docker.com

docker pull 拉取镜像

命令说明:

# 从 Docker Hub 仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本
docker pull 镜像名称

操作示例:

[root@cxypa docker]# docker pull redis:6.2.8    # 指定下载 redis的6.2.8版本
6.2.8: Pulling from library/redis
3f4ca61aafcd: Pull complete 
c3775af77098: Pull complete 
# 省略其他
Status: Downloaded newer image for redis:6.2.8
docker.io/library/redis:6.2.8
[root@cxypa docker]# 
[root@cxypa docker]# 
[root@cxypa docker]# docker pull redis    # 没有指定 tag 和 docker pull redis:latest 一样,表示下载最新版本
Using default tag: latest
latest: Pulling from library/redis
3f4ca61aafcd: Already exists 
# 省略其他
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest
[root@cxypa docker]#

再次查看镜像:

[root@cxypa docker]# 
[root@cxypa bin]# docker images   # 可以看到当前系统中有两个redis镜像
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
redis        6.2.8     c250e371c399   8 days ago   113MB
redis        latest    0256c63af7db   8 days ago   117MB
[root@cxypa bin]# 
[root@cxypa bin]# docker images -q
c250e371c399
0256c63af7db
[root@cxypa bin]#

docker rmi 删除镜像

命令说明:

# 根据镜像ID删除镜像
docker rmi 镜像ID
# 删除所有镜像(谨慎操作)
docker rmi `docker images -q`

操作示例:

[root@cxypa bin]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
redis        6.2.8     c250e371c399   8 days ago    113MB
redis        latest    0256c63af7db   8 days ago    117MB
rabbitmq     latest    3ddcc140fe5c   2 weeks ago   228MB
[root@cxypa bin]# docker rmi c250e371c399 # 删除ID为c250e371c399的镜像
Untagged: redis:6.2.8
Untagged: redis@sha256:8cf5e722ac88a9fbc03aa9f3e66767d88f809596746a2d35b3e73b7cdfbf0870
Deleted: sha256:c250e371c3997705ad7f1725e30ccd26bb93b76e4a49be801bc28280c90ef310
# 省略其他
[root@cxypa bin]# docker images   # 查看镜像,发现ID为c250e371c399的镜像已经被删除了
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
redis        latest    0256c63af7db   8 days ago    117MB
rabbitmq     latest    3ddcc140fe5c   2 weeks ago   228MB
[root@cxypa bin]# 
[root@cxypa bin]# docker rmi `docker images -q`   # 删除所有镜像
Untagged: redis:latest
Untagged: redis@sha256:8184cfe57f205ab34c62bd0e9552dffeb885d2a7f82ce4295c0df344cb6f0007
Deleted: sha256:0256c63af7dbecdb8783029521d1bcaf02d194d1451ad8cddc193352b6caedd0
# 省略其他
[root@cxypa bin]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@cxypa bin]#

docker save 导入镜像

每次都需要联网去 Docker Hub 仓库下载镜像到本地很慢,我们可以把下载到本地的镜像保存到文件中,以后需要再次使用该镜像时直接从文件中恢复镜像。

命令说明:

# 把指定的镜像保存到目标文件中
docker save -o [目标文件名称] [镜像名称]

操作示例:

[root@cxypa bin]# docker save -o /tmp/redis-latest.tar redis:latest # 把redis最新版本的镜像保存到/tmp中
[root@cxypa bin]# ll /tmp/
-rw-------. 1 root root 120566272 12月 30 18:28 redis-latest.tar
[root@cxypa bin]#

docker load 加载镜像

命令说明:

# 加载本地文件中的镜像到Docker中
docker load -i 文件名

操作示例:

[root@cxypa bin]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
redis        latest    0256c63af7db   8 days ago   117MB
[root@cxypa bin]# docker rmi redis:latest   # 删除redis镜像
Untagged: redis:latest
Untagged: redis@sha256:8184cfe57f205ab34c62bd0e9552dffeb885d2a7f82ce4295c0df344cb6f0007
Deleted: sha256:0256c63af7dbecdb8783029521d1bcaf02d194d1451ad8cddc193352b6caedd0
# 省略其他
[root@cxypa bin]# docker images   # 已经没有镜像了
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@cxypa bin]# docker load -i /tmp/redis-latest.tar  # 加载文件中的镜像到Docker中
8a70d251b653: Loading layer [==================================================>]  83.97MB/83.97MB
# 省略其他
Loaded image: redis:latest
[root@cxypa bin]# docker images # 可以看到已经加载好了redis的镜像
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
redis        latest    0256c63af7db   8 days ago   117MB
[root@cxypa bin]#

Docker容器相关命令

docker ps 查看容器

命令说明:

# 查看正在运行的容器
docker ps
# 查看所有的容器,包含运行的和未运行的容器
docker ps -a
# 查看最后一次运行的容器
docker ps -l

操作示例:

[root@cxypa ~]# docker ps # 查看正在运行的容器
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS     NAMES
65f48e62c42b   centos:7   "/bin/bash"   3 minutes ago   Up 3 minutes             mycentos72
[root@cxypa ~]# docker ps -a    # 查看所有的容器
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS                     PORTS     NAMES
65f48e62c42b   centos:7   "/bin/bash"   3 minutes ago   Up 3 minutes                         mycentos72
60b5fbad66f3   centos:7   "/bin/bash"   9 minutes ago   Exited (0) 8 minutes ago             mycentos7
[root@cxypa ~]# docker ps -l    # 查看最后一次运行的容器
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS     NAMES
65f48e62c42b   centos:7   "/bin/bash"   3 minutes ago   Up 3 minutes             mycentos72
[root@cxypa ~]#

docker run 创建与运行容器

命令说明:

# 创建与运行容器
docker run
# 参数说明
-i: 表示创建的容器可以交互
-t: 表示容器启动后会分配一个伪终端
--name: 给创建的容器取名字
-v: 表示目录映射关系,第一个是宿主机目录,第二个是容器的目录
-d: 创建一个守护式容器在后台运行
-p: 表示端口映射,第一个是宿主机端口,第二个是容器的端口

交互式创建并运行容器,启动完成后直接进入当前容器。使用exit命令退出容器。需要注意的是以此种方式启动容器,如果退出容器则容器会进入停止状态。

创建交互式容器操作示例:

[root@cxypa ~]# docker pull centos:7    # 拉取centos7的镜像
[root@cxypa ~]# docker run -it --name mycentos7 centos:7 /bin/bash  # 创建并启动名称为mycentos7的交互式容器
[root@60b5fbad66f3 /]# 
[root@60b5fbad66f3 /]# 
[root@60b5fbad66f3 /]# ls /
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin
[root@60b5fbad66f3 /]# exit
exit
[root@cxypa ~]# docker ps # 退出容器则容器会进入停止状态
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@cxypa ~]# 
[root@cxypa ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS                     PORTS     NAMES
60b5fbad66f3   centos:7   "/bin/bash"   4 minutes ago   Exited (0) 2 minutes ago             mycentos7
[root@cxypa ~]#

守护式容器是一直运行的,exit只是退出终端,该容器还在后台运行。

创建守护式容器操作示例:

[root@cxypa ~]# docker run -di --name mycentos72 centos:7 # 创建并启动守护式容器
65f48e62c42b11ae64b5b48220877029cd4e07fe9e9d42b29702fe119c19933c
[root@cxypa ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS     NAMES
65f48e62c42b   centos:7   "/bin/bash"   9 seconds ago   Up 7 seconds             mycentos72
[root@cxypa ~]# docker exec -it mycentos72 /bin/bash    # 进入容器打开终端进行交互
[root@65f48e62c42b /]# ls /
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin
[root@65f48e62c42b /]# exit
exit
[root@cxypa ~]#

docker exec 进入容器

命令说明:

# 进入容器
docker exec 容器名称或容器ID 一条命令
# 进入容器,打开终端
docker exec -it mycentos72 /bin/bash
# 选项
-i: 表示创建的容器可以交互
-t: 表示容器启动后会分配一个伪终端

操作示例:

[root@cxypa ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES
65f48e62c42b   centos:7   "/bin/bash"   13 minutes ago   Up 13 minutes             mycentos72
[root@cxypa ~]# docker exec mycentos72 ls /tmp  # 进入容器仅执行一条命令就退出容器
ks-script-DrRL8A
yum.log
[root@cxypa ~]# 
[root@cxypa ~]# docker exec -it mycentos72 /bin/bash    # 进入容器,打开终端
[root@65f48e62c42b /]# ll /tmp
total 4
-rwx------. 1 root root 836 Nov 13  2020 ks-script-DrRL8A
-rw-------. 1 root root   0 Nov 13  2020 yum.log
[root@65f48e62c42b /]#

docker logs 查看容器日志

命令说明:

# 查看日志
docker logs -f 容器名称|容器ID

操作示例:

[root@cxypa hello]# docker logs -f mycentos72
# 目前容器没有任何日志,所以什么都看不到

docker stop 停止容器

命令说明:

# 停止正在运行的容器
docker stop 容器名称|容器ID

操作示例:

[root@cxypa ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES
65f48e62c42b   centos:7   "/bin/bash"   21 minutes ago   Up 21 minutes             mycentos72
[root@cxypa ~]# docker stop mycentos72 
mycentos72
[root@cxypa ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@cxypa ~]#

docker kill 停止容器

命令说明:

# 停止正在运行的容器
docker kill 容器名称|容器ID

操作示例:

[root@cxypa ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS         PORTS     NAMES
65f48e62c42b   centos:7   "/bin/bash"   28 minutes ago   Up 2 minutes             mycentos72
60b5fbad66f3   centos:7   "/bin/bash"   34 minutes ago   Up 4 minutes             mycentos7
[root@cxypa ~]# docker kill mycentos7
mycentos7
[root@cxypa ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS         PORTS     NAMES
65f48e62c42b   centos:7   "/bin/bash"   28 minutes ago   Up 3 minutes             mycentos72
[root@cxypa ~]#

docker start 启动容器

命令说明:

# 启动处于停止状态容器
docker start 容器名称|容器ID

操作示例:

[root@cxypa ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS                        PORTS     NAMES
65f48e62c42b   centos:7   "/bin/bash"   23 minutes ago   Exited (137) 57 seconds ago             mycentos72
60b5fbad66f3   centos:7   "/bin/bash"   29 minutes ago   Exited (0) 28 minutes ago               mycentos7
[root@cxypa ~]# docker start mycentos72   # 根据容器名称启动处于停止状态容器
mycentos72
[root@cxypa ~]# docker start 60b5fbad66f3 # 根据容器ID启动处于停止状态容器
60b5fbad66f3
[root@cxypa ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES
65f48e62c42b   centos:7   "/bin/bash"   23 minutes ago   Up 11 seconds             mycentos72
60b5fbad66f3   centos:7   "/bin/bash"   30 minutes ago   Up 2 seconds              mycentos7
[root@cxypa ~]#

docker restart 重启容器

命令说明:

# 重启正在运行的容器
docker restart 容器名称|容器ID

操作示例:

[root@cxypa ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS              PORTS     NAMES
65f48e62c42b   centos:7   "/bin/bash"   25 minutes ago   Up About a minute             mycentos72
60b5fbad66f3   centos:7   "/bin/bash"   31 minutes ago   Up About a minute             mycentos7
[root@cxypa ~]# 
[root@cxypa ~]# docker restart mycentos72 # 重启正在运行的容器,通过STATUS可以看到重启容器的运行时间
mycentos72
[root@cxypa ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS         PORTS     NAMES
65f48e62c42b   centos:7   "/bin/bash"   25 minutes ago   Up 7 seconds             mycentos72
60b5fbad66f3   centos:7   "/bin/bash"   32 minutes ago   Up 2 minutes             mycentos7
[root@cxypa ~]#

docker pause 暂停容器

命令说明:

# 暂停正在运行的容器
docker pause 容器名称|容器ID

操作示例:

[root@cxypa ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS         PORTS     NAMES
65f48e62c42b   centos:7   "/bin/bash"   28 minutes ago   Up 3 minutes             mycentos72
[root@cxypa ~]# 
[root@cxypa ~]# 
[root@cxypa ~]# docker pause mycentos72 
mycentos72
[root@cxypa ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS                  PORTS     NAMES
65f48e62c42b   centos:7   "/bin/bash"   30 minutes ago   Up 4 minutes (Paused)             mycentos72

当执行docker pause后容器的STATUSUp 4 minutes (Paused)。可以看到容器进入了Paused暂停状态,需要通过docker unpause恢复容器运行。

docker unpause 恢复容器

命令说明:

# 恢复正在暂停的容器
docker unpause 容器名称|容器ID

操作示例:

[root@cxypa ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS         PORTS     NAMES
65f48e62c42b   centos:7   "/bin/bash"   28 minutes ago   Up 3 minutes             mycentos72
[root@cxypa ~]# 
[root@cxypa ~]# docker pause mycentos72 
mycentos72
[root@cxypa ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS                  PORTS     NAMES
65f48e62c42b   centos:7   "/bin/bash"   30 minutes ago   Up 4 minutes (Paused)             mycentos72
[root@cxypa ~]# 
[root@cxypa ~]# docker unpause mycentos72 
mycentos72
[root@cxypa ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS         PORTS     NAMES
65f48e62c42b   centos:7   "/bin/bash"   30 minutes ago   Up 4 minutes             mycentos72
[root@cxypa ~]#

docker inspect 查看容器详细信息

命令说明:

# 查看容器的容器详细信息
docker inspect 容器名称或容器ID
# 查看容器的IP
docker inspect 容器名称或容器ID  | grep -i ipaddr

操作示例:

[root@cxypa ~]# docker inspect mycentos72 # 查看容器的容器详细信息
[
    {
        "Id": "65f48e62c42b11ae64b5b48220877029cd4e07fe9e9d42b29702fe119c19933c",
        "Created": "2022-12-31T07:22:55.702363745Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "FinishedAt": "2022-12-31T07:48:39.613528846Z"
        }
        省略其他信息
    }
]
[root@cxypa ~]#
[root@cxypa ~]# docker inspect mycentos72 | grep -i ipaddr  # 查看容器的IP
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",
[root@cxypa ~]#

docker rm 删除容器

命令说明:

# 删除指定的容器,只能删除未运行的容器
docker rm 容器名称|容器ID
# 强行删除指定的容器,运行的容器也能删除
# docker rm -f 容器名称|容器ID
# 删除所有容器
docker rm `docker ps -a -q`

操作示例:

[root@cxypa ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES
cc78e127d20e   centos:7   "/bin/bash"   4 seconds ago    Up 3 seconds              mycentos75
65f48e62c42b   centos:7   "/bin/bash"   44 minutes ago   Up 18 minutes             mycentos72
[root@cxypa ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS                        PORTS     NAMES
cc78e127d20e   centos:7   "/bin/bash"   8 seconds ago    Up 7 seconds                            mycentos75
eb83f8060424   centos:7   "/bin/bash"   22 seconds ago   Exited (0) 17 seconds ago               mycentos74
d309e8db67c6   centos:7   "/bin/bash"   31 seconds ago   Exited (0) 28 seconds ago               mycentos73
65f48e62c42b   centos:7   "/bin/bash"   44 minutes ago   Up 18 minutes                           mycentos72
60b5fbad66f3   centos:7   "/bin/bash"   50 minutes ago   Exited (137) 15 minutes ago             mycentos7
[root@cxypa ~]# docker rm mycentos74    # 删除未运行的容器
mycentos74
[root@cxypa ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED              STATUS                   PORTS     NAMES
cc78e127d20e   centos:7   "/bin/bash"   39 seconds ago       Up 39 seconds                      mycentos75
d309e8db67c6   centos:7   "/bin/bash"   About a minute ago   Exited (0) 59 seconds ago          mycentos73
65f48e62c42b   centos:7   "/bin/bash"   44 minutes ago       Up 19 minutes                      mycentos72
60b5fbad66f3   centos:7   "/bin/bash"   51 minutes ago       Exited (137) 16 minutes ago        mycentos7
[root@cxypa ~]# docker rm mycentos72    # 只能删除未运行的容器
Error response from daemon: You cannot remove a running container 65f48e62c42b11ae64b5b48220877029cd4e07fe9e9d42b29702fe119c19933c. Stop the container before attempting removal or force remove
[root@cxypa ~]# docker rm -f mycentos72 # 强行删除指定的容器,运行的容器也能删除
mycentos72
[root@cxypa ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED              STATUS                   PORTS     NAMES
cc78e127d20e   centos:7   "/bin/bash"   About a minute ago   Up About a minute                  mycentos75
d309e8db67c6   centos:7   "/bin/bash"   About a minute ago   Exited (0) About a minute ago      mycentos73
60b5fbad66f3   centos:7   "/bin/bash"   51 minutes ago       Exited (137) 16 minutes ago        mycentos7
[root@cxypa ~]# docker rm -f `docker ps -a -q`  # 删除所有容器
cc78e127d20e
d309e8db67c6
60b5fbad66f3
[root@cxypa ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@cxypa ~]#

docker commit 将容器保存为镜像

docker commit 可以将配置好的容器重新保存为新镜像 ,让容器得到重复使用,不需要重新配置。

操作步骤

  1. 在前面的cnginx容器部署简单的网页hello.html

操作示例:

[root@cxypa ~]# docker exec -it cnginx /bin/bash    # 进入容器
root@91db07de1cdf:/# cd /usr/share/nginx/html/
root@91db07de1cdf:/# echo "Hello Docker Nginx" >> hello.html  # 生成htllo.html
root@91db07de1cdf:/usr/share/nginx/html# ls
50x.html  hello.html  index.html
root@91db07de1cdf:/usr/share/nginx/html# exit # 退出容器
exit


  1. 创建根据容器生成新的镜像

命令说明:

# 创建根据容器生成新的镜像
docker commit 容器名 新镜像名

操作示例:

[root@cxypa ~]# docker commit cnginx nginx/new
sha256:dbd096999fd1922ff55067f5da04808fa4e6b113624b6629c0bede5b6ce64f5b


  1. 使用新镜像创建容器

操作示例:

[root@cxypa ~]# docker run -di --name cnginxnew -p 1180:80 nginx/new
1c3aacce6d0ab153d016b44a0d5b2b41115231a4cce58e0ae55c84a199dbb3f8
[root@cxypa ~]#


  1. 宿主机访问新容器中的Nginx,可以看到能直接访问hello.html

Docker容器文件复制

命令说明:

# 将Linux宿主机中的文件拷贝到容器
docker cp 源文件或目录 容器名称:容器目录
# 将容器中的文件拷贝到Linux宿主机
docker cp 容器名称:容器目录 目的地文件或目录

将Linux宿主机中的文件拷贝到容器

操作示例:

[root@cxypa ~]# echo hello > LinuxFile.txt  # 在Linux宿主机中创建LinuxFile.txt文件
[root@cxypa ~]# cat LinuxFile.txt 
hello
[root@cxypa ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS     NAMES
686c827fc458   centos:7   "/bin/bash"   3 seconds ago   Up 2 seconds             mycentos7
[root@cxypa ~]# docker cp LinuxFile.txt mycentos7:/ # 把宿主机中的LinuxFile.txt复制到mycentos7容器的/目录中
[root@cxypa ~]# docker exec -it mycentos7 /bin/bash # 进入容器
[root@686c827fc458 /]# ll # 查看容器 / 目录下文件,可以看到LinuxFile.txt文件已经复制过来了
total 16
-rw-r--r--.   1 root root     6 Dec 31 08:16 LinuxFile.txt
-rw-r--r--.   1 root root 12114 Nov 13  2020 anaconda-post.log
lrwxrwxrwx.   1 root root     7 Nov 13  2020 bin -> usr/bin
# 省略其他
[root@686c827fc458 /]# cat LinuxFile.txt 
hello
[root@686c827fc458 /]#

将容器中的文件拷贝到Linux宿主机

操作示例:

[root@686c827fc458 /]# touch mycentos7File.txt  # 在容器中创建一个文件
[root@686c827fc458 /]# exit
exit
[root@cxypa ~]# docker cp mycentos7:/mycentos7File.txt /tmp # 将容器中的文件拷贝到Linux宿主机
[root@cxypa ~]# ll /tmp/
-rw-r--r--. 1 root root         0 12月 31 16:53 mycentos7File.txt
[root@cxypa ~]#

Docker容器目录挂载

每次手动把宿主机的文件复制到容器中,或者将容器中的文件拷贝到宿主机很麻烦。可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。

创建容器时添加-v参数给容器挂载目录或文件。

命令说明:

# -v参数格式 宿主机目录:容器目录
# -v参数格式 宿主机文件:容器文件
# 创建并启动容器,挂载宿主机的/tmp/hello目录到容器的/tmp/hello目录
docker run -di -v /tmp/hello:/tmp/hello --name mycentos73 centos:7
# 创建并启动容器,挂载宿主机的/tmp/a.txt文件到容器的/tmp/a.txt文件
docker run -di -v /tmp/a.txt:/tmp/a.txt --name mycentos74 centos:7

操作示例:

[root@cxypa tmp]# mkdir /tmp/hello  # 在宿主机器要挂载的目录
[root@cxypa tmp]# 
[root@cxypa hello]# docker run -di -v /tmp/hello:/tmp/hello --name mycentos73 centos:7  # 创建并启动容器,挂载宿主机的/tmp/hello目录到容器的/tmp/hello目录
45bcb4b4ca9519343f45f2232f3ef024bfc371a3802715603b6af09583239323
[root@cxypa tmp]# mkdir /tmp/hello/test01 # 在宿主机器挂载的目录中创建新文件夹test01
[root@cxypa tmp]# docker exec -it mycentos73 /bin/bash  # 进入容器
[root@45bcb4b4ca95 /]# cd /tmp  # 查看容器的/tmp目录,可以看到hello文件夹已经被挂载
[root@45bcb4b4ca95 tmp]# ll
total 4
drwxr-xr-x. 3 root root  20 Dec 31 09:15 hello
-rwx------. 1 root root 836 Nov 13  2020 ks-script-DrRL8A
-rw-------. 1 root root   0 Nov 13  2020 yum.log
[root@45bcb4b4ca95 tmp]# cd hello/  # 查看挂载的hello文件夹,可以看到宿主机新建的test01文件夹
[root@45bcb4b4ca95 hello]# ll
total 0
drwxr-xr-x. 2 root root 6 Dec 31 09:15 test01
[root@45bcb4b4ca95 hello]# 
[root@45bcb4b4ca95 hello]# mkdir test02   # 在容器挂载的/tmp/hello文件夹中新建test02文件夹
[root@45bcb4b4ca95 hello]# exit
exit
[root@cxypa hello]# ll  # 退出容器,到宿主机中也可以看到容器中创建的文件夹
总用量 0
drwxr-xr-x. 2 root root 6 12月 31 17:15 test01
drwxr-xr-x. 2 root root 6 12月 31 17:16 test02
[root@cxypa hello]#
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
安全 Docker 容器
|
6天前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
91 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
2月前
|
网络安全 数据安全/隐私保护 Docker
|
13天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
142 77
|
10天前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
62 24
|
1月前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
560 11
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
12天前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
77 6
|
2月前
|
存储 监控 安全
|
1月前
|
JavaScript 开发者 Docker
深入理解Docker容器化技术,打造高效开发环境
深入理解Docker容器化技术,打造高效开发环境
|
2月前
|
存储 关系型数据库 MySQL
下一篇
DataWorks