前言
最近看了极客学院的视屏,学到了一点新的东西。在此,继续总结一下。
docker相关基本命令
- docker info
查看文件存储物理地址和docker驱动
容器基本命令
- 启动容器
docker run IMAGE [COMMAND(运行命令)][ARG(运行命令参数)]
# Ex1.
docker run ubantu echo 'Hello World'
hello world!
docker run -i -t IMAGE /bin/bash
-i --interactive=true|false 默认为false(通知守护进程为容器打开标准输入)
-t --tty=true|false 默认为false(docker为创建容器构件一个伪tty终端)
# Ex2. 进入容器内部
docker run -i -t ubantu /bin/bash
# 自定义容器名称
docker run --name=<containerName>
docker run --name=container01 -i -t ubantu /bin/bash
# port
docker run -P,--publish-all=true|false 默认为false(影射所有端口)
docker run -P -i -t ubuntu /bin/bash
docker -p,--publish=[] (指定映射部分端口)
# EX.conatinerPort(指指定容器端口 宿主机端口随机映射)
docker run -p 80 -i -t ubuntu /bin/bash
# hostPort:containerPort(经常这样使用 容器 宿主机端口都指定)
docker run -p 8080:80 -i -t ubuntu /bin/bash
# ip::containerPort
docker run -p 0.0.0.0.:80 -i -t ubuntu /bin/bahs
# ip:hostPort:containerPort
docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash
- 查看容器
docker ps [-a][-l]
-a all 所有容器
-l lastest 最新创建的容器
# 查看正在运行中的容器
docker ps
# 查看所有的容器
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1d92829fb478 zabbix/zabbix-agent:alpine-3.2.5 "/bin/bash /run_zabb…" 4 days ago Exited (0) 13 hours ago some-zabbix-agent
# docker inspect
docker inspect <containID>/<containName>
- 重启容器
docker start[-i]<containerID>/<containerName>
- 删除容器
# 只能删除停止运行的容器
docker rm <containerID>/<containerName>
守护式进程
- 守护式容器(长期运行/无交互式会话/适合应用程序与服务)
docker run -i -t ubantu /bin/bash
# 守护式运行
ctrl+p / ctrl+q
docker run -d <imageName>
-d后台运行
docker run --name dc1 -d ubuntu /bin/sh -c "while true;do echo "hello world";sleep 1; done;"
- 进入守护式容器
docker attach <containerId>
- 查看容器日志
docker logs [-f] [-t][--tail] <容器名>
-f --follows=true|false 默认false (一直跟踪logs的变化,并返还结果)
-t --timestamps=true |false 默认false(返回结果上 加上时间戳)
--tail="all"(返回logs的数量)
# Ex 1
docker logs -tf --tail 10 dc1
# Ex 2
docker logs -tf --tail 0 dc1(最新日志)
- 查看容器内进程
docker top <containerID>
- 启动新进程(不关闭旧进程)
docker exec [-d][-i][-t] 容器名[COMMAND][ARG]
# EX1
docker exec -t -t dc1 /bin/bash
ctrl+p ctrl+q
docker top dc1
- 关闭容器
docker stop <containerID> (发送stop信号 时间较长)
docker kill <containerID> (直接关闭 时间较短)
docker镜像基本命令
- 查看镜像列表
docker images [OPTIONS][REPOSITORY]
-a,--all=false
-f,--filter=[](过滤条件)
--no-trunc=false(不截断数据)
-q,--quiet=false(只显示唯一ID)
# EX.
docker images
#DOCKER REGISTRY
# REPOSITORY 仓库(多个不同TAG的image) TAG
默认为TAG(latest) 同一镜像可以打多个标签
docker images -a(可以看到中间层的镜像)
docker images centos
- 查看镜像详细信息
docker inspect [OPTINOS] CONTAINER|IMAGE [CONTAINER|IMAGE..]
-f,--format=""
#EX
docker inspect ubuntu:14.04
- 删除镜像
docker rmi [OPTIONS] IMAGE[IMAGE...]
-f --force=false Force removal of the image(强制删除镜像)
--no-prune=false Do not delete untagged parents(保留未打标签的父镜像)
# 删除镜像(如果镜像被打了其它的tag,表示并没有被完全删除)
docker rmi ubuntu:12.04
# 删除镜像(彻底删除 包括不同TAG)
docker rmi <imageID>
# 一次删除两个镜像
docker rmi ubuntu:12.04 ubuntu:precise
# 删除全部
docker rmi $(docker images -q ubuntu)
- 查找镜像(hub.docker.com/命令)
docker search [OPTIONS] TERM
--automated=false Only show automated builds
--no-trunc=false Don't truncate output
-s --stars=0 Only displays with at least x stars
最多返回25个结果
# Ex.
docker search ubuntu
docker search -s 3 ubuntu
- 拉取镜像
docker pull [OPTIONS] NAME [:TAG}
-a --all-tags=false Download all tagged images in the repository.
(下载某个仓库内不同TAG(版本))
docker pull ubuntu:14.04
docker images
# 使用国内代理
--resistry-mirror选项
1. 修改: /etc/default/docker
2. 添加: DOCKER_OPTS="--registry-mirror=https://www.xxx.daocloud.io/xxx"
3. service docker restart
- 推送镜像
docker push NAME[:TAG]
docker push username/imagesname
#仅会提交修改的内容
- 构建镜像
- docker commit 通过容器构建
- docker build 通过Dockefile文件构建
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a --author=""
-m --messgae="" COmmit message
-p --pause=true Pause container duroing commit(不暂停需要构建的容器)
docker commit -a "author" -m "message" comit_test username/commit_test1
docker images
docker run -d --name nginx_web2 -p 80 username/commit_test1 nginx -g "daemon off;"
curl http://127.0.0.1<port>
- Dockerfile文件&docker build
docker build [OPTIONS] PATH | URL |-
--force-rm=false
--no-cache=false
--pull=false
-q,--quiet=fase
--rm=true
-t,--tag=""
touch Dockerfile
vi Dockerfile
# Dockerfile文件略
docker buld -t "uasername/df_test1" .
#“.”表示dockerfile文件所在的地址
docker run -d --name nginx_web2 -p 80 username/df_test1 nginx -g "daemon off;"
构件自己的Nginx容器
docker run -p 80 --name nginx -i -t ubuntu /bin/bash
apt-get install -y nginx
apt-get install -y vim
mkdir -p /var/www/yanxml/com/html
cd /var/www/yanxml/com/html
# vi hello.html
<html>
<head>Nginx to Docker</head>
<body><h1>Hello,Irm website in docker</h1></body>
</html>
whereis nginx
vim /etc/nginx/sites-enabled/default
# 修改root行 为 "root /var/www/yanxml/com/html"
# 启动nginx
nginx
#ctrl+p
docker ps 查看端口映射
docker port <containerID>
docker top <containerID>
curl http://127.0.0.1:port
# docker inspect <查看容器的ipAddress>
docker exec ngin(容器名) nginx
# 重启容器后 容器的IP有可能会进行改变。
构件容器
# 使用dockerfile构件容器
docker build -f /path/to/a/Dockerfile .