1、启动交互式容器
docker run -i -t IAMAGE /bin/bash
-i --interactive=true|false 默认是false (用来告诉docker守护进程打开标准输入)
-t --tty=true|false 默认是false (用来告诉docker守护进程为容器分配一个tty终端)
--rm 这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash
例: docker run -t -t ubuntu /bin/bash
注意-i -t 可以合在一起写-it
2、查看容器
docker ps [-a] [-l]
docker ps 查看正在运行的容器
docker ps -a 查看所有的容器(包括运行的和非运行的)
docker ps -l 查看最新创建的容器
3、检查一个容器
docker inspect [name] [id]
name、id分别是一个容器的name和id
此命令返回的是容器的所有的状态信息
4、启动容器时指定容器的名字
docker run --name=container_01 -i -t ubuntu /bin/bash
启动一个容器并将容器的名字指定为container_01
5、启动已经停止的容器
docker start [-i] 容器名或ID
6、删除已停止的容器
docker rm 容器名
注意docker rm 命令不能删除运行的容器,只能删除已经停止的容器
7、什么是守护是容器
1、能够长期运行
2、没有交互式会话
3、适合运行运行程序和服务
8、启动守护式容器
1、
docker run -i -t IMAGE /bin/bsah
Ctrl + P Ctrl + Q 注意先按Ctrl + P 再按Ctrl + Q
2、
docker run -d 镜像名 [CONMMAND] [ARG....]
docker run --name abc -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
启动一个名字为abc的守护式容器
9、附加到运行中的容器
docker attach 容器名或ID
注意退出容器时使用Ctrl + P Ctrl + Q 退出,如果使用exit退出会导致容器终止运行
10、查看容器日志
docker logs [-f] [-t] [--tail] 容器名
-f --follows=true|false 默认为flase (一直跟踪日志的变化并返回结果)
-t --timestramps=true|false 默认为flase (是否在每一条日志2前加上时间戳)
--tail="all" (返回结尾处多少数量的日志)
在(8)创建的abc容器, 查看它的日志命令
docker logs -f -t --tail 10 abc 首先展示日志的后十行并动态返回日志新的输出,并在每一行日志上加上时间戳
11、查看容器中的进程
docker top 容器名
12、在运行中的容器启动新的进程
docker exec [-d] [-i] [-t] 容器名 [COMMAND] [ARG...]
docker exec -i -t abc /bin/bash
13、停止守护式容器
docker stop 容器名(以信号的方式停止)
docker kill 容器名(强制停止,快速结束容器)
14、设置容器的端口映射
docker run [-P] [-p]
-P --publish-all=true |false 默认为false
docker run -P -i -t ubuntu /bin/bash
-p --publish=[]
containerPost
docker run -p 80 -i -t ubuntu /bin/bash
hostPort:containerPort
docker run -p 8080:80 -i -t ubuntu /bin/bash
ip:containerPort
dokcer run -p 0.0.0.0:80 -i -t ubuntu /bin/bash
ip:hostPort:containerPort
docker run -p 0.0.0.0:8080:80 -i -t /bin/bash
15、查看容器的端口映射
docker port 容器名
或
docker ps
注意docker重启docker的端口映射和ip地址都会发生改变
16、查看镜像
docker images [OPTIONS] [REPOSITORY]
-a --all=false 在没有指定-a参数时是不显示中间层的镜像
-f --filter=[] 指定显示时的过滤条件
-no-trunc=false 不使用截断的方式显示数据(默认情况下显示的镜像的ID是截断的)
-q --quiet=false
查看所有的镜像docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 452a96d81c30 8 days ago 79.6MB
REPOSITORY 镜像仓库,即一系列镜像的集合
TAG 镜像的标签名
REPOSITORY 加上 TAG 就构成一个完整的镜像名,对应一个镜像的ID
docker 可以对同一个镜像(镜像id一样)打上不同的TAG
显示镜像完整的ID字符串
docker images --no-trunc
显示所有的镜像(包括中间层镜像)
docker images -a
中间层镜像都REPOSITORY 和 TAG 都是node
只显示镜像的ID
docker images -q
查看某个仓库名下的所有镜像
docker images centos
查看centos仓库下所有的镜像
查看镜像的详细信息
docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE]
-f --format=""
镜像名查看镜像的详细信息
docker inspect ubuntu:latest
镜像ID查看镜像的详细信息
docker inspect 镜像的ID
17、删除镜像
docker rmi [OPUTIONS] IMAGE [IMAGE...]
-f --force=false 强制删除镜像
---no-prune=false 保留镜像中被打标签的副镜像
以镜像名删除镜像
docker rmi centos:latest
以镜像ID删除镜像
docker rmi e934aafc2206
批量删除
docker rmi $(docker images -q ubuntu)
删除ubuntu仓库下所有的镜像
18、查找镜像
Docker Hub
https://registry.hub.docker.com
docker search [OPTIONS] TERM
--automated=false 只显示自动化构建的镜像
--no-trunc=false 不以截断的方式显示
-s --stars=0 显示至少有几个心的镜像
最多返回25个结果
搜索ubuntu镜像
docker search ubuntu
显示至少有几个心
docker search ubuntu -s 6
显示搜索的全部的信息
docker search ubuntu --no-trunc
19、拉取镜像
docker pull [OPTIONS] NAMES [:TAG]
-a --all-tags=false 拉取搜索到的所有的镜像
拉取ubuntu14.04
docker pull ubuntu:14.04
20、推送镜像
将本地的镜像push到Docker Hub中
21、构建本地镜像
1、构建镜像的作用
保存对容器的修改,并再次使用
自定义镜像的能力
以软件的形式打包并分发服及其运行环境
2、docker 构建镜像的方式
1、docker commit 通过容器构建
2、docker build 通过DockerFile文件构建
3、通过容器构建
docker commit [OPTIONS] COMTAINER [REPOSITORY][:TAG]
-a --author="author, XXX@qq.com" 指定作者信息
-m --message= "" 指定描述信息
-p --pause=true 由于commit时默认会暂停执行容器,-p可以指定不暂停构建容器
4、使用docker commit构建一个容器
docker commit -a "chao" -m "nginx container" nginx chao/nginx_container
将容器名为nginx的容器构建成镜像。并指定镜像的仓库为chao/nginx_container
测试
运行nginx镜像
docker run -d --name nginx_01 -p 80 chao/nginx_container nginx -g "daemon off;"
详见:
https://yeasy.gitbooks.io/docker_practice/content/image/commit.html
5、使用DockerFile文件创建镜像
创建Dockerfile
使用docker build命令
mkdir -p dockerfile/df_test01
vim Dockerfile
输入
# first dockerfile for test
FROM ubuntu:14.04
MAINTAINER chao
RUN apt-get update
RUN apt-get install -y nginx
EXPOSE 80
:wq保存
建立镜像
docker build -t="chao/df_test01" . (注意 末尾有个点)
查看镜像docker images
运行镜像 docker run --name="df_nginx" -p 80 -d chao/df_test01 nginx -g "daemon off;"