镜像与容器类似于类与对象。Docker image用于创建 Docker Container;Container是独立运行的一个或一组应用;Docker Registry用来保存镜像。大部分情况下,docker服务端和客户端运行在一台机器上。
【container使用】
(1)docker run container command 运行一个应用程序:
docker run ubuntu:15.10 /bin/echo “Hello world”
docker run -i -t ubuntu:15.10 /bin/bash
-t:在新容器内指定一个伪终端或终端
-i:允许你对容器内的标准输入 (STDIN) 进行交互
docker run -d ubuntu:15.10 /bin/sh -c “while true; do echo hello world; sleep 1; done”
-d:让容器在后台运行
docker run -v $PWD/myapp:/usr/src/myapp -w /usr/src/myapp python:3.5 python helloworld.py
-v $PWD/myapp:/usr/src/myapp:将主机中当前目录下的myapp挂载到容器的/usr/src/myapp
-w /usr/src/myapp :指定容器的/usr/src/myapp目录为工作目录
python helloworld.py :使用容器的python命令来执行工作目录中的helloworld.py文件
(2)运行Web应用:
docker run -d -P training/webapp python app.py
-P:将容器内部使用的网络端口随机映射到主机端口上
docker run -d -p 5000:5000 training/webapp python app.py
-p:将容器内部使用的网络端口绑定到主机指定的端口上,:前为主机,后为容器
docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
-p:指定容器绑定的网络地址
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
-p:默认都是绑定 tcp 端口,可绑定udp端口
docker run -d -P - -name runoob training/webapp python app.py
- -name:为容器指定名称
【container查看】
(1)docker ps 查看正在运行的容器:
-a:查看过去所有的容器
(2)docker top 查看指定容器内部运行的进程:
docker top determined_swanson
(3)docker logs 查看指定容器内的标准输出:
docker logs -f amazing_cori
(4) docker inspect 查看指定容器的底层信息:
docker inspect determined_swanson
(5)docker port 查看指定容器的某个确定端口映射到宿主机的端口号:
docker port determined_swanson
docker port determined_swanson 5002
(6)docker stats –help 查看指令具体使用方法
(7)docker info 显示 docker 系统信息,包括镜像和容器数
(8)docker version 显示 docker 版本信息
【container操作】
(1)docker attach 连接到正在运行中的容器:
docker attach --sig-proxy=false mynginx
(2)docker events 从服务器获取实时事件:
docker events -f “image”=“mysql:5.6” --since=“1467302400”
(3)docker wait 阻塞运行直到容器停止,然后打印出它的退出代码:
docker wait CONTAINER
(4)docker export 将文件系统作为一个tar归档文件导出到STDOUT:
docker export -o mysql-date +%Y%m%d.tar a404c6c174a2
(5)docker cp 拷贝容器与主机之间的数据:源 -> 目标
docker cp /www/runoob 96f7f14e99ab:/www/ #目录到目录
docker cp /www/runoob 96f7f14e99ab:/www #目录到容器后目录重命名
docker cp 96f7f14e99ab:/www /tmp/
(6)docker diff 检查容器里文件结构的更改
(7)docker stop / start / restart / rm停止、启动、重启、删除指定容器:
docker stop amazing_cori
docker start amazing_cori
docker restart amazing_cori
docker rm amazing_cori # 删除不需要的容器,容器必须是停止状态
(8)docker pause / unpause 暂停、恢复容器:
docker pause db01
docker unpause db01
(9)docker kill 杀掉运行中的容器:
docker kill -s KILL mynginx
(10)docker create / exec 创建、执行容器
docker create --name myrunoob nginx:latest # 创建新容器,但不启动
docker exec -it mynginx /bin/sh /root/runoob.sh
【image创建】
(1)docker images 查看本地主机的镜像。
(2)docker pull 下载本地主机不存在,但仓库存在的镜像:
docker pull ubuntu:13.10
(3)docker search 查找https://hub.docker.com/上的镜像:
docker search httpd
docker pull httpd
(4)docker commit 从已创建的容器中更新镜像,已得到新镜像
docker run -t -i ubuntu:15.10 /bin/bash
sudo apt-get update #等自定义操作
docker commit -m=“has update” -a=“runoob” e218edb10161 runoob/ubuntu:v2
-m:提交的描述信息
-a: 指定镜像作者
e218edb10161: 容器ID
runoob/ubuntu:v2: 指定要创建的目标镜像名
(5)docker build 创建新的镜像:
编写或修改Dockerfile文件
docker build -t runoob/centos:6.7 .
-t:指定要创建的目标镜像名
. : Dockerfile 文件所在目录
【image管理】
(6)docker tag 为镜像添加一个新的标签:
docker tag 860c279d2fec runoob/centos:dev
860c279d2fec:镜像ID
runoob/centos:镜像源名
dev:新的标签名
(7)docker push 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
(8)docker login / logout 登陆、登出Docker镜像仓库,默认为官方仓库 Docker Hub:
docker login -u 用户名 -p 密码
(9)docker rmi 删除本地镜像:
docker rmi -f runoob/ubuntu:v4
-f:强制删除
--no-prune:不移除该镜像的过程镜像,默认移除
(10)docker history 查看指定镜像的创建历史
(11)docker save 将指定镜像保存成 tar 归档文件:
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3
(12)docker import 从归档文件中创建镜像:
docker import my_ubuntu_v3.tar runoob/ubuntu:v4
reference:
教程文档:https://download.csdn.net/download/qccz123456/10546233
教程文档PDF:https://download.csdn.net/download/qccz123456/10546239
很全很好的文档:https://download.csdn.net/download/qccz123456/10546259
https://legacy.gitbook.com/book/yeasy/docker_practice/details
参考资料:http://www.runoob.com/docker/docker-tutorial.html
http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
https://legacy.gitbook.com/book/yeasy/docker_practice/details
https://hub.docker.com/