1.获取镜像(ubuntu镜像名称)
docker pull ubuntu
2.查看启动的容器ID(加-a查看所有容器)
docker ps
#查看所有(包括未启动容器)
docker ps -a
3.进入容器
docker exec -it xxxxx(容器ID) /bin/bash
4.启动容器
docker run -itd --name my-ubuntu ubuntu /bin/bash
启动已停止容器:
docker start xxxx(容器ID ,用docker ps -a 查看)
参数说明:
--name 自定义容器名称
-d: 后台运行
-i: 交互式操作。
-t: 终端。
ubuntu: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
-p 端口映射,比如 -p 5001:5000 代表本地5001端口对应容器里面5000端口映射,用docker port xxx(容器ID)可以快速查看已映射的端口,也可直接本地外部IP,比如-p 127.0.0.1:5001:5000(这样可以通过127.0.0.1::5001访问容器映射的5000端口)
5.退出容器用exit
6.停止容器
docker stop xxxx(容器ID)
7.重启容器
docker restart xxxx(容器ID)
8.导出容器
#导出容器 1e560fca3906 快照到本地文件 ubuntu.tar。
docker export 1e560fca3906(容器ID)> ubuntu.tar
9.导入容器快照
#以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:
cat docker/ubuntu.tar | docker import - test/ubuntu:v1
也可通过URL或者某个目录导入
docker import http://example.com/exampleimage.tgz example/imagerepo
10.删除容器
docker rm -f xxxx(容器ID)
11.查看日志
docker logs -f xxxx(容器ID)
=====================================================
镜像
①列出本地主机上的镜像
docker images
②查找镜像(imagename代表要搜索的镜像名称,如httpd)
docker search imagename
③删除镜像
docker rmi xxxx(镜像名称)
④更新镜像(基于某容器)
docker commit -m="镜像说明" -a="作者" xxxx(容器ID) brisklan/ubuntu:v1
参数说明:
-m: 提交的描述信息
-a: 指定镜像作者
xxxx:容器 ID
brisklan/ubuntu:v1: 指定要创建的目标镜像名
⑤构建镜像(用docker build 从零创建新镜像)
01.创建Dockerfile文件
内容如下:
FROM mysql MAINTAINER Brisklan "wei@alipay168.cn" RUN apt-get update EXPOSE 22 EXPOSE 80/tcp EXPOSE 3306 CMD /bin/bash
说明:
FROM xxx :基于哪个镜像
LABEL: 指定作者信息,也可用MAINTAINER
MAINTAINER :指定镜像作者信息,即镜像的Author属性。LABEL是一个更灵活的版本,可以替代MAINTAINER,LABEL可以设置任何需要设置的元数据,并且可以轻松查看,例如docker inspect。可以使用LABEL设置MAINTAINER。
RUN :指令告诉docker 在镜像内执行命令,安装了什么。。
EXPOSE:指定容器在运行时监听指定的网络端口,可以多个
CMD:指定容器启动时要执行的命令,上面这样在运行镜像时可以忽略最后的/bin/bash指令直接进入bash指令,(docker run -it xxx),如果run时传入则使用传入的指令,多条CMD指令只有最后一条生效。
02.用docker build构建镜像
docker build -t brisklan/mysql:1.0 .
参数:
-t :指定创建的目标镜像名称
. :Dockerfile文件所在目录,可以指定Dockerfile的绝对路径
03.设置镜像标签
docker tag xxxxx(镜像ID) brisklan/mysql:ok
========================================
docker网络
1.查看所有docker网络
docker network ls
2.创建一个新网络
docker network create -d bridge new-net
参数说明:
-d:参数指定 Docker 网络类型,有 bridge、overlay。
其中 overlay 网络类型用于 Swarm mode,你可以忽略它。
==========================================
Docker 容器互联
先看一个官方提示:
大概意思:当容器连接到同一个网络时他们可以互联,否则不行。
1.运行一个容器连接到指定的网络(new-net)
docker run -itd --name test1 --network new-net ubuntu /bin/bash
2.运行另一个容器连接到指定的网络(new-net)
docker run -itd --name test2 --network new-net ubuntu /bin/bash
==========================================