目录

镜像常用命令

镜像常用操作

镜像下载加速

容器常用命令

容器常用操作

容器端口映射

进入 Tomcat 容器内部

Docker 容器与宿主服务器文件复制


本文讲解 Docker 镜像 与 容器操作 的常用指令,没有安装 Docker 的可以仓库 Docker 安装

docker Hub 官网:https://hub.docker.com/

本文环境:CentOS 7.2.1511 发行版本,内核版本为 3.10.0-327.el7 + Docker 1.13

镜像常用命令

操作命令说明
搜索镜像docker search  [OPTIONS]  镜像名称从 Docker Hub 上检索镜像的详细信息。如:docker search redis
上传镜像docker push  [OPTIONS]  NAME[:TAG]
下载镜像docker pull  [OPTIONS]  NAME[:TAG] :tag是可选的,tag表示标签,通常是软件的版本号,不写时,默认是 latest(最新版本)
提交镜像docker commit [OPTIONS]  CONTAINER NAME[:TAG]
构建镜像docker build  [OPTIONS]  PATH
增加镜像标签docker tag SOURCE_IMAGE[:TAG]  TARGET_IMAGE[:TAG]
查看本地所有镜像docker images  [OPTIONS]  [REPOSITORY[:TAG]]
删除指定的本地镜像docker rmi [OPTIONS]  IMAGE  [IMAGE...]
删除所有操作(批量)
docker rmi -f `docker images -q` 

 镜像常用操作

1、使用 指令 docker search 关键字  可以检索 (搜索) Docker Hub 官网上提供的所有镜像,之后就可以下载需要的镜像

如检索 " mysql ":[root@localhost ~]# docker search mysql

如检索 " redis ":[root@localhost ~]# docker search redis

2、所有的搜索结果其实都是从 Docker Hub 上获取来的,所以也可以自己上官网直接查找

[root@wangmaoxiong001 home]# docker search mysql
INDEX       NAME                                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/mysql                             MySQL is a widely used, open-source relati...   9934      [OK]       
docker.io   docker.io/mariadb                           MariaDB is a community-developed fork of M...   3634      [OK]       
docker.io   docker.io/mysql/mysql-server                Optimized MySQL Server Docker images. Crea...   724                  [OK]
docker.io   docker.io/percona                           Percona Server is a fork of the MySQL rela...   508       [OK]       
docker.io   docker.io/centos/mysql-57-centos7           MySQL 5.7 SQL database server                   83                   
docker.io   docker.io/mysql/mysql-cluster               Experimental MySQL Cluster Docker images. ...   75                   
docker.io   docker.io/centurylink/mysql                 Image containing mysql. Optimized to be li...   61                   [OK]
docker.io   docker.io/bitnami/mysql                     Bitnami MySQL Docker Image                      44                   [OK]
docker.io   docker.io/deitch/mysql-backup               REPLACED! Please use http://hub.docker.com...   41                   [OK]
docker.io   docker.io/tutum/mysql                       Base docker image to run a MySQL database ...   35                   
docker.io   docker.io/prom/mysqld-exporter                                                              31                   [OK]
docker.io   docker.io/databack/mysql-backup             Back up mysql databases to... anywhere!         30                   
docker.io   docker.io/schickling/mysql-backup-s3        Backup MySQL to S3 (supports periodic back...   30                   [OK]
docker.io   docker.io/linuxserver/mysql                 A Mysql container, brought to you by Linux...   25                   
docker.io   docker.io/centos/mysql-56-centos7           MySQL 5.6 SQL database server                   20                   
docker.io   docker.io/circleci/mysql                    MySQL is a widely used, open-source relati...   19                   
docker.io   docker.io/mysql/mysql-router                MySQL Router provides transparent routing ...   16                   
docker.io   docker.io/arey/mysql-client                 Run a MySQL client from a docker container      14                   [OK]
docker.io   docker.io/fradelg/mysql-cron-backup         MySQL/MariaDB database backup using cron t...   8                    [OK]
docker.io   docker.io/openshift/mysql-55-centos7        DEPRECATED: A Centos7 based MySQL v5.5 ima...   6                    
docker.io   docker.io/devilbox/mysql                    Retagged MySQL, MariaDB and PerconaDB offi...   3                    
docker.io   docker.io/ansibleplaybookbundle/mysql-apb   An APB which deploys RHSCL MySQL                2                    [OK]
docker.io   docker.io/jelastic/mysql                    An image of the MySQL database server main...   1                    
docker.io   docker.io/widdpim/mysql-client              Dockerized MySQL Client (5.7) including Cu...   1                    [OK]
docker.io   docker.io/monasca/mysql-init                A minimal decoupled init container for mysql    0                    
[root@wangmaoxiong001 home]# 

INDEX:索引

NAME:镜像名称

DESCRIPTION:描述

STARS:关注人数,单位为 k

OFFICIAL:是否为官方发布),[ok] 则表示此版本为官方发行版本,通常使用官方版的多些。

AUTOMATED:是否自动配置,[ok] 则表示镜像已经自动配置好了,获取就能直接使用,否则需要自己手动配置

二:下载镜像

1、使用命令:docker pull 镜像名称:tag,可以从  Docker Hub 下载指定的镜像,“ :tag ” 不写时默认下载最新版本的镜像,也可以自己指定 tag 从而下载指定版本的镜像,tag 名称可以从 Docker Hub 上自己查看 

示例1:如下所示下载 Mysql 官方最新版:[root@wangmaoxiong001 home]# docker pull docker.io/mysql

示例2:有时候可能并不需要使用最新版本,这时可以通过 Docker Hub 官方查看标签,指定标签下载,如:docker pull docker.io/mysql:5.7.31 

 

三:查看本地镜像

1、使用命令 docker images 查看本地下载好的所有镜像

REPOSITORY :仓库,即下载的镜像名称

TAG:标识,通常为版本号

IMAGE ID:镜像id,删除时可以根据镜像 id 进行删除

CRREATED:镜像创建时间

SIZE:镜像大小

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/mysql     5.7                 43b029b6b640        22 hours ago        372 MB
docker.io/mysql     latest              29e0ae3b69b9        22 hours ago        484 MB
[root@localhost ~]# 

四:删除镜像

1、使用 docker rmi image-id 命令删除指定的本地镜像

2、使用 docker rmi -f image-d 命令强制删除指定的本地镜像

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/mysql     5.7                 43b029b6b640        22 hours ago        372 MB
docker.io/mysql     latest              29e0ae3b69b9        22 hours ago        484 MB
[root@localhost ~]# docker rmi 43b029b6b640
Untagged: docker.io/mysql:5.7
Untagged: docker.io/mysql@sha256:e25e2768e910223db3095c1560aa2255371986b24fbebf4b015bae3cc60b9b34
Deleted: sha256:43b029b6b6406b40f1ba51b069980b5c14b701786830a41ebb489ad3bbf3d928
.....
Deleted: sha256:35c70a35928fd6ce30c1495b9782b53b69fe0d023c35ad047072e4d7d388a753
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/mysql     latest              29e0ae3b69b9        22 hours ago        484 MB
[root@localhost ~]# 

镜像下载加速

1、使用 Maven 时会从 Maven 中央仓库下载依赖,默认从官方中央仓库下载时会很慢,于是大家就会修改配置文件,设置为国内的中央仓库下载地址,此时速度就没问题了。

2、同理 Docker 也是一样,默认从 docker 官网仓库下载镜像时会很慢,也需要修改为国内仓库地址。

网易:http://hub-mirror.c.163.com

ustc:https://docker.mirrors.ustc.edu.cn

中国科技大学:https://docker.mirrors.ustc.edu.cn

3、修改 /etc/docker/daemon.json 文件,没有时可以新建,然后将上面的地址添加进来,如:

{
  "registry-mirrors":[
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.mirrors.ustc.edu.cn"
        ]
}

 4、重启 docker 服务:

systemctl daemon-reload

service docker restart

5、可以使用 docker info 命令查看配置是否成功:

[root@wangmaoxiong001 docker]# docker info
......
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Registry Mirrors:
 http://hub-mirror.c.163.com
 https://docker.mirrors.ustc.edu.cn
 https://docker.mirrors.ustc.edu.cn
Live Restore Enabled: false
Registries: docker.io (secure)

 


容器常用命令

1、软件镜像(Images)启动之后就会有一个对应的容器(Container),镜像位于自己的容器中,容器之间相互隔离。  

操作命令说明
运行容器docker run --name container-name -d image-name:tag
如:docker run --name myredis –d redis

--name:自定义容器名
-d:表示后台运行
image-name:指定运行的镜像名称

-i:以交互模式运行容器,通常与 -t 同时使用
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用

tag:镜像的版本

启动容器docker start container-name/container-id
重启容器docker restart container-name/container-id
运行与启动的区别

1、运行是创建镜像的新容器并运行起来,可以为同一个镜像创建多个容器。

2、启动是对先前停止的容器重新启动

3、下载后的镜像运行之后会创建为容器并启动,之后可以对此容器进行停止、启动、删除

查看容器列表docker ps [option]加上-a;可以查看所有容器,包含停止运行的
停止容器docker stop container-name/container-id停止当前运行的指定容器
删除容器

docker rm container-id

docker rm -f container-id

删除指定容器

强制删除指定容器

删除所有操作(批量)
docker rm -f `docker ps -a -q` 
删除所有容器
重命名容器docker rename CONTAINER CONTAINER_NEW
进入容器

docker attach container ,比如进入 java jdk8 容器:docker attach java-jdk8

--然后可以执行容器命令,比如 java -version 查看 jdk 版本

进入容器并执行命令

docker exec container command,比如:docker exec -it java-jdk8 /bin/bash

-- 进入后输入 exist 退出容器

-- it:表示采用交互方式执行命令。

端口映射

docker run  ---name myredis  -d -p 6379:6379 docker.io/redis

对于不是挂起的线程,采用交互式:

docker run -itd --name myredis -d -p

6379:6379 docker.io/redis

-p:主机-itd端口映射到容器内部的端口

查看容器日志

-f, --follow  : 跟踪实时日志

-t, --timestamps :显示时间戳

docker logs container-name/container-id,比如:docker logs -f --tail=100 java-se-1.0  ,实时查看最新的 100 条日志信息.

docker logs -f -t --since="2021-06-13" --tail=100 container-name/container-id               -- 显示 2021-06-13 日期后的 100 条信息

docker logs -f -t --since="2021-06-13" java-se-1.0   -- 显示 2021-06-13 日期后的信息
docker logs -f -t --since="2021-06-13T16:20:00" --tail=100 container-name/container-id  --显示2021-06-13 16:20:00 时刻后的 100 条信息
docker logs --since 30m container-name/container-id    -- 查看最近30分钟的日志

--since string   显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)

2、更多详细命令可查看 Docker 官网:docker | Docker Documentationhttps://docs.docker.com/engine/reference/commandline/docker/

 3、也可以在 docker Hub 官网上查看镜像的同时查看它的命令。

容器常用操作

1、本文环境:CentOS 7.2.1511 发行版本,内核版本为 3.10.0-327.el7 + Docker 1.13

2、启动 Docker,本文以操作 Tomcat 镜像进行说明,先下载 Tomcat 镜像:docker pull docker.io/tomcat:8.5.32

一:查看容器

1、使用 docker ps 命令 查看正在运行的所有容器,加上 -a 参数可以查看所有容器(即无论是否运行中)

[root@wangmaoxiong001 home]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
34d0a98ea4f6        tomcat:8.5.32          "catalina.sh run"   4 seconds ago       Up 3 seconds        8080/tcp            myTomcat
[root@wangmaoxiong001 home]# 

CONTAINER ID:容器 di
IMAGE:镜像名称:Tag
COMMAND:命令
CREATES:容器创建的时刻
STATUS:容器当前的状态 (up 表示运行、Exited 表示停止运行)
PORTS:镜像程序使用的端口号

NAMES:容器自定义名称

2、注意此时虽然容器已经在运行中,Tomcat 镜像占用 8080 端口,但是这个8080端口是 Docker 容器内部的端口,并不是服务器对外的访问端口,所以必须后期做 端口映射 将服务器的实际端口映射到 Docker 容器中的端口才能访问。

二:运行容器

1、命令:docker run --name container-name:tag -d image-name

 --name:自定义容器名,不指定时,docker 会自动生成一个名称

-d:表示后台运行容器

image-name:指定运行的镜像名称以及 Tag

2、如下所示启动 docker.io/tomcat 镜像成功,容器名称前缀 docker.io 可以不写,后面的 tag 版本号要指定:docker run --name myTomcat -d tomcat:8.5.32 (Tomcat 容器内部含有了一个 java jdk,所以可以直接运行)

[root@wangmaoxiong001 home]# docker run --name myTomcat -d tomcat:8.5.32
34d0a98ea4f6096bc02ee14b2c061370c1badd039b57365a7821be6674f6400c
[root@wangmaoxiong001 home]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
34d0a98ea4f6        tomcat:8.5.32          "catalina.sh run"   4 seconds ago       Up 3 seconds        8080/tcp            myTomcat
[root@wangmaoxiong001 home]# docker run --name myTomcat2 -d tomcat:8.5.32
7bb983541348ec50e6d0f8035cf4846cc26220c89b63434ba2455858aab79a3d
[root@wangmaoxiong001 home]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
7bb983541348        tomcat:8.5.32          "catalina.sh run"   6 seconds ago       Up 2 seconds        8080/tcp            myTomcat2
34d0a98ea4f6        tomcat:8.5.32          "catalina.sh run"   45 minutes ago      Up 13 minutes       8080/tcp            myTomcat
[root@wangmaoxiong001 home]#

  3、如上所示为同一个 tomcat 镜像运行了两个容器,端口都是 8080,因为容器与容器之间是相互隔离的,所以不用担心端口冲突等问题。

三:停止容器

1、停止容器运行,指定容器名或者容器 id 即可:docker stop container-name|container-id

[root@wangmaoxiong001 home]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
34d0a98ea4f6        tomcat:8.5.32          "catalina.sh run"   4 seconds ago       Up 3 seconds        8080/tcp            myTomcat
[root@wangmaoxiong001 home]# docker stop myTomcat
myTomcat
[root@wangmaoxiong001 home]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@wangmaoxiong001 home]#

四:启动容器

1、同理可根据 容器名或者 容器 id 进行启动:docker start container-name|container-id

[root@wangmaoxiong001 home]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                            PORTS               NAMES
34d0a98ea4f6        tomcat:8.5.32          "catalina.sh run"   31 minutes ago      Exited (143) About a minute ago                       myTomcat
[root@wangmaoxiong001 home]# docker start 34d0a98ea4f6
34d0a98ea4f6
[root@wangmaoxiong001 home]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
34d0a98ea4f6        tomcat:8.5.32          "catalina.sh run"   32 minutes ago      Up 4 seconds        8080/tcp            myTomcat
[root@wangmaoxiong001 home]# 

五:删除容器

1、docker rm container-id :根据 容器 id 进行删除容器,删除前必须先停止容器

2、docker rm -f container-id:根据 容器 id 强制删除容器。

3、镜像运行在容器中,docker 中可以运行多个互补干扰的容器,可以将同一个镜像在多个容器中运行

[root@wangmaoxiong001 home]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
7bb983541348        tomcat:8.5.32          "catalina.sh run"   3 seconds ago       Up 2 seconds        8080/tcp            myTomcat2
34d0a98ea4f6        tomcat:8.5.32          "catalina.sh run"   45 minutes ago      Up 13 minutes       8080/tcp            myTomcat
[root@wangmaoxiong001 home]# docker stop 7bb983541348
7bb983541348
[root@wangmaoxiong001 home]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
7bb983541348        tomcat:8.5.32          "catalina.sh run"   5 minutes ago       Exited (143) 38 seconds ago                       myTomcat2
34d0a98ea4f6        tomcat:8.5.32          "catalina.sh run"   51 minutes ago      Up 19 minutes                 8080/tcp            myTomcat
[root@wangmaoxiong001 home]# docker rm 7bb983541348
7bb983541348
[root@wangmaoxiong001 home]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
34d0a98ea4f6        tomcat:8.5.32          "catalina.sh run"   51 minutes ago      Up 19 minutes       8080/tcp            myTomcat
[root@wangmaoxiong001 home]# 

六:查看容器日志

1、docker logs  container-name|container-id :根据容器名或者容器 id 查看容器日志信息。 

2、docker logs -f container-name|container-id: 根据容器名或者容器id查看容器日志信息。

容器端口映射
1、docker run --name container-name -d image-name:tag:单纯的如此运行容器,程序占用的是 Docker 容器内部的端口,并不是服务器对外的访问端口,所以必须做 端口映射 将服务器的实际端口映射到 Docker 容器中的端口才能访问。

2、docker run --name container-name:tag -d -p 服务器端口:Docker端口 image-name:端口映射
 

--name:自定义容器名,不指定时,docker 会自动生成一个名称

-d:表示后台运行容器

-p:表示 Linux 服务器与 Docker 容器的端口映射,默认情况下容器中镜像占用的端口是 Docker 容器中的端口,与外界是隔绝的,必须进行端口映射才能访问。

image-name:指定运行的镜像名称以及 Tag

 3、下面以 Tomcat 镜像为例进行演示:

1)运行两个 tomcat 容器,容器名称分别指定为 "myTomcat1"、"myTomcat2",两个容器中都是同一个 docker.io/tomcat:8.5.32 镜像,运行的同时指定端口映射

2)如果需要远程访问 linux 服务器,则还需要为 Linux 服务器对外开放防火墙端口,否则即使做了端口映射也仍然无法访问

3)当用户访问 Linux 端口的时候,都会根据映射规则自动映射到 Docker 容器内部

 4、执行命令解释如下:

docker run --name tomcat1 -d -p 8080:8080 tomcat:8.5.32       #运行容器
docker run --name tomcat2 -d -p 8090:8080 tomcat:8.5.32       #运行容器

docker ps -a                                                                                #查看容器
docker logs tomcat1                                                                   #查看容器运行日志
docker logs tomcat2                                                                   #查看容器运行日志

firewall-cmd --zone=public --list-port                                          #查看防火墙开放的端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent    #防火墙开放 8080 端口
firewall-cmd --zone=public --add-port=8090/tcp --permanent    #防火墙开放 8090 端口
firewall-cmd --reload                                                                   #重启防火墙,端口配置才能生效

ip addr show                                                                               #查看 linux 服务器 ip 地址

[root@localhost ~]# firewall-cmd --zone=public --list-port
9876/tcp 8090/tcp 80/tcp 8080/tcp
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/tomcat    8.5.32              5808f01b11bf        38 hours ago        463 MB
[root@localhost ~]# docker run --name myTtomcat1 -d -p 8080:8080 tomcat:8.5.32 
d67cca0aacf7cc4a91112721769ba56aadbe55e8e78ff6749528cf5cecb38f6e
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
d67cca0aacf7        tomcat:8.5.32       "catalina.sh run"   19 seconds ago      Up 17 seconds       0.0.0.0:8080->8080/tcp   myTtomcat1
[root@localhost ~]# docker run --name myTtomcat2 -d -p 8090:8080 tomcat:8.5.32 
0f6df57a7fa189710c0d2c3088334a7ff725c7e57eea71220ffb67049eaf5f5a
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
0f6df57a7fa1        tomcat:8.5.32       "catalina.sh run"   3 seconds ago       Up 1 second         0.0.0.0:8090->8080/tcp   myTtomcat2
d67cca0aacf7        tomcat:8.5.32       "catalina.sh run"   53 seconds ago      Up 51 seconds       0.0.0.0:8080->8080/tcp   myTtomcat1
[root@localhost ~]# 

 

特别提醒:亲测 docker.io/tomcat:8.5.32 版本是可以正常访问的,而 docker.io/tomcat:8.5 版本则会访问报错,这估计是和版本有关系!

进入 Tomcat 容器内部
1、上面的容器章节介绍了如何运行 Tomcat 服务器并成功访问,通常运行容器后都会进入容器内部执行一些操作,比如查看日志,修改配置文件等等。

2、所谓的进入容器内部就如同是在本地进入安装程序的根目录下一样,进去后可以执行 linux 命令,就和外部操作一样,exist 命令可以退出。

3、这里以进入 Tomcat 容器为例进行演示,其它容器也是同理,可以看到进入 Tomcat 容器内部后看到的和本地或者容器外部安装的是一样的。

[root@wangmaoxiong001 ~]# docker ps
CONTAINER ID        IMAGE                                  COMMAND             CREATED             STATUS              PORTS                    NAMES
99fc58c68019        docker.io/portainer/portainer:latest   "/portainer"        10 months ago       Up 22 minutes       0.0.0.0:9000->9000/tcp   portainer01
0a72baa6acd4        tomcat:8.5.32                          "catalina.sh run"   10 months ago       Up 12 minutes       0.0.0.0:8080->8080/tcp   tomcat1
[root@wangmaoxiong001 ~]# docker exec -it 0a72baa6acd4 /bin/bash
root@0a72baa6acd4:/usr/local/tomcat# ls -l
total 112
-rw-r-----. 1 root root  57092 Jun 20  2018 LICENSE
-rw-r-----. 1 root root   1723 Jun 20  2018 NOTICE
-rw-r-----. 1 root root   7138 Jun 20  2018 RELEASE-NOTES
-rw-r-----. 1 root root  16246 Jun 20  2018 RUNNING.txt
drwxr-x---. 2 root root   4096 Aug 14  2018 bin
drwx--S---. 1 root root     21 Sep  9  2020 conf
drwxr-sr-x. 3 root staff    18 Aug 14  2018 include
drwxr-x---. 2 root root   4096 Aug 14  2018 lib
drwxr-x---. 1 root root   4096 Aug  1 13:12 logs
drwxr-sr-x. 3 root staff  4096 Aug 14  2018 native-jni-lib
drwxr-x---. 2 root root     29 Aug 14  2018 temp
drwxr-x---. 7 root root     76 Jun 20  2018 webapps
drwxr-x---. 1 root root     21 Sep  9  2020 work
root@0a72baa6acd4:/usr/local/tomcat# cd bin/
root@0a72baa6acd4:/usr/local/tomcat/bin# ls -l
total 392
-rw-r-----. 1 root root  34985 Jun 20  2018 bootstrap.jar
-rw-r-----. 1 root root   1664 Jun 20  2018 catalina-tasks.xml
-rwxr-x---. 1 root root  23473 Aug 14  2018 catalina.sh
-rw-r-----. 1 root root 207125 Jun 20  2018 commons-daemon-native.tar.gz
-rw-r-----. 1 root root  25145 Jun 20  2018 commons-daemon.jar
-rwxr-x---. 1 root root   1932 Aug 14  2018 configtest.sh
-rwxr-x---. 1 root root   8519 Aug 14  2018 daemon.sh
-rwxr-x---. 1 root root   1975 Aug 14  2018 digest.sh
-rwxr-x---. 1 root root   3690 Aug 14  2018 setclasspath.sh
-rwxr-x---. 1 root root   1912 Aug 14  2018 shutdown.sh
-rwxr-x---. 1 root root   1914 Aug 14  2018 startup.sh
-rw-r-----. 1 root root  49336 Jun 20  2018 tomcat-juli.jar
-rwxr-x---. 1 root root   5493 Aug 14  2018 tool-wrapper.sh
-rwxr-x---. 1 root root   1918 Aug 14  2018 version.sh
root@0a72baa6acd4:/usr/local/tomcat/bin# cd ../
root@0a72baa6acd4:/usr/local/tomcat# cd webapps/
root@0a72baa6acd4:/usr/local/tomcat/webapps# ls 
ROOT  docs  examples  host-manager  manager
root@0a72baa6acd4:/usr/local/tomcat/webapps# java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-1~deb9u1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
root@0a72baa6acd4:/usr/local/tomcat/webapps# 

Docker 容器与宿主服务器文件复制

1、从 Linux 服务器上拷贝文件到 Docker 中,或者从 Docker 容器中拷贝文件到 Linux 服务器上,这是平时很常见的操作。

2、不管容器有没有启动,拷贝命令 docker cp 都会生效。

从 docker 容器里面拷文件到宿主服务器:docker cp 容器名/容器ID: 要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
从宿主服务器拷文件到 Docker 容器里面:docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径

 3、操作示例,在服务器上执行如下命令:

docker cp java-se-1.0:/home/wangmx/logs/java-se/java-se.log /home/wangmx   -- 从名称为 java-se-1.0 的容器中,将 /home/wangmx/logs/java-se/java-se.log 文件拷贝到当前服务器的 /home/wangmx 目录下
docker cp /home/wangmx/note.txt java-se-1.0:/home/wangmx   -- 将服务器上的 /home/wangmx/note.txt 文件拷贝到 名称为 java-se-1.0 的容器中的 /home/wangmx 目录下

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐