1. 运行终端

打开终端,输入docker images ,如果运行正常,表示docker已经可以在本电脑上使用了

docker从入门到实践视频教程 docker入门实战_docker

2. docker常用命令如下

指令

说明

docker images

查看已下载的镜像

docker rmi 镜像名称:标签名

删除已下载的镜像

docker search 镜像

从官方仓库(hub.docker.com)查找镜像

docker pull 镜像名称:标签名

标签名默认是 latest,代表最新版本。

docker run

创建容器

docker ps

列出运行中的容器(运行中)

docker ps -a

列出所有的容器(运行、未运行)

docker rm 容器名称

删除停止的容器

docker rm -f 容器名称

删除运行中的容器

docker start 容器名称

启动容器

docker stop 容器名称

停止容器

docker restart 容器名称

重启容器

docker exec

执行容器中的指令

如果在使用过程中有疑惑的地方,可以使用帮助文档查看

docker从入门到实践视频教程 docker入门实战_Docker_02

3. 第一次使用docker

案例:Docker 运行MySql

3.1、拉取MySql镜像

docker pull mysql:5.5

下载完成后我们就可以在本地镜像列表里看到名为 mysql ,标签为5.5的镜像

docker从入门到实践视频教程 docker入门实战_Docker_03

3.2、使用MySql镜像

运行容器

docker run -d --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.5

命令说明:

--name=mysql:为容器指定一个名称为mysql
-p 3306:3306:将容器的(后面的3306) 3306 端口映射到主机的(前面的3306) 3306端口。
-d:后台运行容器,并返回容器ID。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码为123456。
mysql:5.5 要使用的镜像的名称

注意

如果本地已经使用了3306端口,那么可以容器的3306端口映射到本机端口的3307或者其他的

docker run -d --name=mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.5

运行效果:

docker从入门到实践视频教程 docker入门实战_docker_04


查看状态:

docker从入门到实践视频教程 docker入门实战_mysql_05


连接数据库:

docker从入门到实践视频教程 docker入门实战_Docker_06

4.Docker 常用命令说明

4.1 Docker pull 命令

docker pull : 从镜像仓库中拉取或者更新指定镜像

语法

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

OPTIONS说明:

-a :拉取所有 tagged 镜像

实例

从Docker Hub下载MySql 8.0.1版镜像

docker pull mysql:8.0.1

从Docker Hub下载REPOSITORY为mysql的所有版本的镜像

docker pull -a mysql

4.2 Docker images 命令

docker images : 列出本地镜像

语法:

docker images [OPTIONS] [REPOSITORY[:TAG]]

OPTIONS说明:

-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层)

--digests :显示镜像的摘要信息

-f :显示满足条件的镜像

--format :指定返回值的模板文件

--no-trunc :显示完整的镜像信息

-q :只显示镜像ID

实例

1、查看本地所有镜像列表

docker images

docker从入门到实践视频教程 docker入门实战_docker_07


2、列出本地镜像中镜像名为ubuntu的镜像列表

docker images  ubuntu

docker从入门到实践视频教程 docker入门实战_docker_08

4.3 Docker tag 命令

docker tag : 标记本地镜像,将其归入某一仓库

语法:

docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

实例:

将镜像registry.cn-hangzhou.aliyuncs.com/xavier/laravel标记为test/laravel:latest镜像

docker tag registry.cn-hangzhou.aliyuncs.com/xavier/laravel test/laravel
docker images  laravel

docker从入门到实践视频教程 docker入门实战_Docker_09

4.4 Docker rmi 命令

docker rmi : 删除本地一个或多个镜像

语法:

docker rmi [OPTIONS] IMAGE [IMAGE...]

OPTIONS说明:

-f :强制删除;

--no-prune :不移除该镜像的过程镜像,默认移除;

什么是过程镜像? 在构建新镜像的过程中产生的镜像或者依赖的镜像

实例

强制删除本地镜像mysql:5.5

docker rmi -f mysql:5.5 mysql:5.6

什么时候需要用强制删除呢?在你普通删除删不掉的时候

4.5 Docker run 命令

docker run :创建一个新的容器并运行一个命令

语法:

docker run --name 容器名称 -d -p 主机端口:容器内端口 -e 环境变量 --link 其它容器名:容器中别名

镜像名称:标签名
OPTIONS说明:

-d: 后台运行容器,并返回容器ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

--name="nginx-lb": 为容器指定一个名称;

-e username="ritchie": 设置环境变量;

-m :设置容器使用内存最大值;

--link=[]: 添加链接到另一个容器;当要访问其它容器中的内容时,需要先链接才可以使用

-p: 开放一个端口或一组端口

实例

使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为wuxidixi。且映射容器80端口到主机8000端口

docker run --name=wuxidixi -d  -p 80:80 nginx:latest

4.6 Docker start/stop/restart 命令

docker start :启动一个或多少已经被停止的容器

docker stop :停止一个运行中的容器

docker restart :重启容器

语法

docker start CONTAINER 
docker stop CONTAINER 
docker restart CONTAINER

实例

停止运行中的容器yigubigu

docker stop yigubigu

启动已被停止的容器mysql

docker start yigubigu

重启容器yigubigu

docker restart yigubigu

4.7 Docker rm 命令

docker rm :删除一个或多个容器

语法:

docker rm [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS说明:

-f :通过SIGKILL信号强制删除一个运行中的容器

-l :移除容器间的网络连接,而非容器本身

-v :-v 删除与容器关联的卷

实例

s强制删除容器mysql

docker rm -f mysql

移除容器yigubigu对容器mysql的连接,连接名mysql

docker rm -l mysql

删除容器nginx01,并删除容器挂载的数据卷

docker rm -v nginx01

5、第二次使用docker

目的:学会下载指定版本的镜像,以下载python3.6的docker镜像为例

1.在 https://hub.docker.com/u/library 上搜索需要的镜像

docker从入门到实践视频教程 docker入门实战_docker_10


2.查看需要的版本

docker从入门到实践视频教程 docker入门实战_Docker_11


docker从入门到实践视频教程 docker入门实战_mysql_12


3.下载指定版本

docker pull python:3.6

docker从入门到实践视频教程 docker入门实战_docker_13


下载完成

docker从入门到实践视频教程 docker入门实战_docker_14


docker从入门到实践视频教程 docker入门实战_docker_15


问题:

怎样用docker中的Python???

5.1、交互模式使用容器

有时我们需要进入到一个容器内部去操作这个容器,这时我们可以使用 docker exec 指令来实现

docker exec 指令可以执行一个运行着的容器中的命令:

docker exec -it 容器名称 命令

说明:

-it:以实时交互的形式运行(和 -d 正好相反)

注意:

如果要用docker exec,前提是已经有了一个正在运行的docker容器

1.查看当前docker容器

docker从入门到实践视频教程 docker入门实战_Docker_16


2.创建并查看一个容器

docker从入门到实践视频教程 docker入门实战_Docker_17


可以看到我们已经创建了一个容器。

3.运行

docker exec -it python3.6 python

docker从入门到实践视频教程 docker入门实战_mysql_18


执行exit指令可以退出容器

5.2、挂载硬盘

问题一

数据是保存在容器里的,如果容器删除了数据也就删除了

问题二

每次要修改容器时,必须要进入到容器中去修改,比如要修改my.cnf

为了能够保存(持久化)数据以及共享容器间的数据,Docker 提出了 Volume 的概念

可以使用 -v 这个参数,将容器中的一个目录或者文件 和主机上的目录和文件进行绑定,绑定之后,修改主机上的这个文件就相当于修改了容器中的文件,删除容器之后,绑定的目录和文件还在主机(不会被删除)

为了实现主机和容器之间的数据共享,我们可以在创建容器时添加 -v 参数:

docker run ... -v 主机目录:容器中的目录 ...

demo1

1.创建一个新容器,且设置共享路径

注意:创建时镜像名字放在最后

docker从入门到实践视频教程 docker入门实战_mysql_19


2.真实电脑创建文件、文件夹,容器看到共享成功

docker从入门到实践视频教程 docker入门实战_Docker_20


3.容器修改文件内容,真实电脑看到共享数据成功

docker从入门到实践视频教程 docker入门实战_Docker_21

demo2

目的:重启docker容器看数据能否再次使用

1.退出容器

docker从入门到实践视频教程 docker入门实战_mysql_22


2.修改电脑真实数据

docker从入门到实践视频教程 docker入门实战_mysql_23


3.再次运行容器

docker从入门到实践视频教程 docker入门实战_mysql_24


4.查看容器是否看到共享数据,结果成功

docker从入门到实践视频教程 docker入门实战_Docker_25

demo3

目的:删除之后共享文件(夹)是否会丢失

1.退出、删除容器

docker从入门到实践视频教程 docker入门实战_docker_26


2.查看真实电脑,文件依然存在

docker从入门到实践视频教程 docker入门实战_Docker_27


4. 复制文件

我们可以使用 docker cp指令向容器中复制文件,或者从容器中复制文件到主机

docker cp 源目录  目标目录

1.创建一个新的容器

docker从入门到实践视频教程 docker入门实战_Docker_28


2.查看真实电脑路径下无文件(夹)

docker从入门到实践视频教程 docker入门实战_mysql_29

3.从容器复制文件到真实电脑

docker从入门到实践视频教程 docker入门实战_Docker_30

4.从真正电脑复制文件夹到容器

docker从入门到实践视频教程 docker入门实战_docker_31