目录
本文讲解 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:自定义容器名 -i:以交互模式运行容器,通常与 -t 同时使用 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 日期后的信息 --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 目录下