怎样拉取docker镜像文件?
1,docker pull [OPTIONS] NAME[:TAG|@DIGEST]
作用:从远程仓库拉取镜像文件到本地
[OPTIONS]:拉取镜像的参数,具体参数可通过 【docker pull --help】 命令查看
NAME:拉取镜像的名称
[:TAG|@DIGEST]:拉取镜像的版本号,不写默认获取最新版本
例子:
docker pull hub.c.163.com/library/mysql:latest
2,docker images [OPTIONS] [REPOSITORY]
作用:查看本机有哪些镜像文件
[REPOSITORY]:用来查看指定的镜像名称 ,一般本地镜像文件较多的情况下使用该参数
怎样运行docker镜像?
1,docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
作用:运行本地镜像,生成一个新的容器
[COMMAND]:指镜像运行起来后要执行的命令
[ARG...]:要执行的命令所依赖的参数
例子:
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=jpress hub.c.163.com/library/mysql
其中:
-d:表示后台运行并打印出运行的ID值
-p: 表示容器和主机的端口映射
-e: 表示设置环境变量 这个例子就是设置了mysql数据的密码和数据库的名称
2,docker ps
作用:查看当前正在运行的容器
3,docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
作用:进入正在运行的某个容器
CONTAINER:正在运行的容器ID (可输入容器ID的前面几位进行模糊匹配的唯一值)
例:进入mysql容器
docker exec -it c6 bash
其中
-i:表示保证输入有效
-t:新开一个伪终端
c6:模糊匹配出mysql的容器ID c689563ecb99
3,exit
作用:退出当前容器
4,docker restart [OPTIONS] CONTAINER [CONTAINER...]
作用:重启某个容器
例子:
docker restart c6
5, docker stop [OPTIONS] CONTAINER [CONTAINER...]
作用:关闭某个容器
例子:
docker restart c6
怎样制作docker镜像?
制作镜像简单步骤:
1,创建 Dockerfile 文件,文件的内容是描述怎样制作自己的docker镜像
2,运行 docker builde 命令 执行制作
例子:
将应用程序 jpress 的war包 放入一个已经存在的tomcat镜像中,并生成一个新的镜像文件jpress
vi Dockerfile //新建一个Dockerfile 文件
Dockerfile 内容:
from hub,c.163.com/library/tomcat //以tomcat为基础的镜像文件
MAINTAINER hsp xxx@qq.com //记录创建者信息 可忽略
COPY jpress.war /usr/local/tomcat/webapps/ //将war包拷贝到对应的tomcat目录
docker build -t jpress:latest //生成新的镜像文件 -t:指定新镜像文件的名称
docker images //可以查看最新生成的镜像文件
怎样从外部访问docker容器的应用程序?
docker具有隔离性,每个docker容器之间是相互独立的,正在运行的docker容器就像一台虚拟机,要想访问容器内部的应用程序,就必须先了解容器的网络模式。
首先,docker容器具有四种网络模式,分别是:
none:关闭容器内的网络连接,可以使用 参数 --net=none 指定
bridge:通过veth接口来连接容器,默认配置。
host:允许容器使用主机host的网络堆栈信息,可以使用 参数 --net=host .。指定注意:这种方式将允许容器访问host中类似D-BUS之类的系统服务,所以认为是不安全的。
container:使用另外一个容器的网络堆栈信息,使用--net=container:Name或者容器ID 指定。
None模式
在这种模式下,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。
Bridge模式
Docker默认会将容器设置为bridge模式。此时在主机上面将会存在一个docker0的网络接口,同时会针对容器创建一对veth接口。其中一个veth接口是在主机充当网卡桥接作用,另外一个veth接口存在于容器的命名空间中,并且指向容器的loopback。Docker会自动给这个容器分配一个IP,并且将容器内的数据通过桥接转发到外部。
Host模式
当网络模式设置为host时,这个容器将完全共享host的网络堆栈。host所有的网络接口将完全对容器开放。容器的主机名也会存在于主机的hostname中。这时,容器所有对外暴露的端口和对其它容器的连接,将完全失效。
Container模式
当网络模式设置为Container时,这个容器将完全复用另外一个容器的网络堆栈。同时使用时这个容器的名称必须要符合下面的格式:--net container:<name|id>.
以运行jpress镜像为例
docker run -d -p 8081:8080 jpress
该docker 命令默认使用bridge模式,假设服务器主机的公网IP为192.168.1.1
则可通过 http://192.168.1.1:8081/jpress 直接访问容器内部的jpress应用程序
Docker思维导图下载地址:
http://pan.baidu.com/s/1boLZQFH