一、搜索镜像
1.在https://hub.docker.com/u/library 上搜索需要的镜像
2.查看需要的版本
3.下载指定版本
docker pull python:3.6
下载完成查看
docker images
问题:怎样用docker中的Python???
二、交互模式使用容器
1. 运行已经创建的容器中的命令
有时我们需要进入到一个容器内部去操作这个容器,这时我们可以使用 docker exec
指令来实现
docker exec 指令可以执行一个运行着的容器中的命令:
docker exec -it 容器名称 命令
说明:
-it
:以实时交互的形式运行(和 -d
正好相反)
注意:
如果要用docker exec
,前提是已经有了一个正在运行的docker容器
1.查看当前docker容器: docker ps -a, 如果没有那么我们要创建一个容器
2.创建一个容器 :
docker run --name==python3.6 -dit python:3.6
3.查看运行状况 : docker ps
4.运行
docker exec -it python3.6 python
执行 exit
指令可以退出容器
2. 创建容器时指定要要运行的命令
一般情况下,容器在制作的时候,都已经设定好了默认运行的命令,即在容器创建成功之后默认要开启的程序
但,如果想要运行其他的命令,也可以在创建容器时指定
可以直接在创建容器时,指定要运行的命令,方式如下
docker run -it 镜像:版本 要运行的命令
例如
docker run -it mysql:5.7 /bin/bash
三、挂载硬盘
问题一
数据是保存在容器里的,如果容器删除了数据也就删除了
问题二
每次要修改容器时,必须要进入到容器中去修改,比如要修改my.cnf
为了能够保存(持久化)数据以及共享容器间的数据,Docker 提出了 Volume 的概念
可以使用 -v
这个参数,将容器中的一个目录或者文件 和主机上的目录和文件进行绑定,绑定之后,修改主机上的这个文件就相当于修改了容器中的文件,删除容器之后,绑定的目录和文件还在主机(不会被删除)
为了实现主机和容器之间的数据共享,我们可以在创建容器时添加 -v
参数:
docker run ... -v 主机目录:容器中的目录 ...
demo1
1.创建一个新容器,且设置共享路径
注意:创建时镜像名字放在最后
docker run -it -v /Users/houxiaojun/Desktop/work_dirs/dockerfile/ubuntu_flask:/home ubuntu:16.04
2.真实电脑创建文件、文件夹,容器看到共享成功
3.容器修改文件内容,真实电脑看到共享数据成功
demo2
目的:重启docker容器看数据能否再次使用
1.退出容器: exit
2.修改真实电脑文件数据
3.再次运行容器 : docker start -i 上一次的容器id
4.查看容器是否看到共享数据,结果成功
demo3
目的:删除容器之后共享文件(夹)是否会丢失
1.退出、删除容器: docker rm (容器id)
2.查看真实电脑文件依然在
四、复制文件
我们可以使用 docker cp
指令向容器中复制文件,或者从容器中复制文件到主机
docker cp 源目录 目标目录
1.创建一个新的容器: docker run -it ubuntu(容器名)
2.查看真实电脑路径下无文件(夹)
3.从容器复制文件到真实电脑
在真实电脑终端执行: docker cp 容器id:文件路径 本地文件路径, 例如: docker cp 8ceb72275be3:/home/world.txt ./
4.从真正电脑复制文件夹到容器
在真实电脑终端执行: docker cp 本地文件 容器id:文件存放路径 例如: docker cp hello.txt 8ceb72275be3:/home