【docker系列】docker深入浅出之使用教程及常用命令

Docker 客户端

docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。

可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。

例如我们要查看 docker stats 指令的具体使用方法:

docker stats --help

Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。

输出Hello world

docker run ubuntu:15.10 /bin/echo "Hello world"

各个参数解析:

  • docker: Docker 的二进制执行文件。

  • run:与前面的 docker 组合来运行一个容器。

  • ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。

  • /bin/echo "Hello world": 在启动的容器里执行的命令

以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。


运行交互式的容器

我们通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力

docker run -i -t ubuntu:15.10 /bin/bash
root@dc0050c79503:/#

各个参数解析:

  • -t:在新容器内指定一个伪终端或终端。

  • -i:允许你对容器内的标准输入 (STDIN) 进行交互。

此时我们已进入一个 ubuntu15.10系统的容器

我们尝试在容器中运行命令 cat /proc/versionls分别查看当前系统的版本信息和当前目录下的文件列表

我们可以通过运行exit命令或者使用CTRL+D来退出容器。


启动容器(后台模式)

使用以下命令创建一个以进程方式运行的容器

docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

在输出中,我们没有看到期望的"hello world",而是一串长字符

2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

这个长字符串叫做容器ID,对每个容器来说都是唯一的,我们可以通过容器ID来查看对应的容器发生了什么。

首先,我们需要确认容器有在运行,可以通过 docker ps 来查看

docker ps

CONTAINER ID:容器ID

NAMES:自动分配的容器名称

在容器内使用docker logs命令,查看容器内的标准输出

docker logs 2b1b7a428627 或 docker logs wavefar-nginx

停止容器

我们使用 docker stop 命令来停止容器:

docker stop 2b1b7a428627 或 docker stop wavefar-nginx

通过docker ps查看,容器已经停止工作:

 

常用命令

#【-------------------查看docker版本信息-------------------------】
$docker version
$docker -v
$docker info


#【--------------------image镜像操作命令-------------------------】
#检索image
$docker search image_name 

#下载镜像
$docker pull image_name  

#列出本地镜像  -a, --all=false Show all images; --no-trunc=false Don't truncate output; -q, --quiet=false Only show numeric IDs
$docker images            

#删除一个或者多个镜像; -f 强制删除; 
$docker rmi -f image_name 

#显示一个镜像的历史; 
$docker history image_name

#将本地的镜像上传到镜像仓库,要先登陆到镜像仓库,如上传本地镜像nginx:v1到镜像仓库中。
$docker push nginx:v1

#登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
#docker login [OPTIONS] [SERVER]  
#OPTIONS说明:
#-u :登陆的用户名
#-p :登陆的密码

$docker login -u 用户名 -p 密码

#登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
$docker logout 



#【--------------------容器操作--------------------------------】
# 在容器中运行"echo"命令,输出"hello word"
$docker run image_name echo "hello word"

# 交互式进入容器中
$docker run -i -t image_name /bin/bash

# 后台启动镜像 并更改镜像名字
$docker run -d --name myImage centos

# 在容器中安装新的程序
$docker run image_name yum install -y app_name

# 列出当前所有正在运行的container
$docker ps
# 列出所有的container
$docker ps -a
# 列出最近一次启动的container
$docker ps -l

# 保存对容器的修改; -a, --author="" Author; -m, --message="" Commit message
$docker commit ID new_image_name


# 删除所有容器
$docker rm `docker ps -a -q`

# 删除单个容器; -f, --force=false; -l, --link=false Remove the specified link and not the underlying container; -v, --volumes=false Remove the volumes associated to the container
$docker rm Name/ID

# 停止、启动、杀死一个容器
$docker stop Name/ID
$docker start Name/ID
$docker kill Name/ID

# 从一个容器中取日志; -f, --follow=false Follow log output; -t, --timestamps=false Show timestamps
$docker logs Name/ID

# 列出一个容器里面被改变的文件或者目录,list列表会显示出三种事件,A 增加的,D 删除的,C 被改变的
$docker diff Name/ID

# 显示一个运行的容器里面的进程信息
$docker top Name/ID

# 从容器里面拷贝文件/目录到本地一个路径
$docker cp Name:/container_path to_path
$docker cp ID:/container_path to_path

# 重启一个正在运行的容器; -t, --time=10 Number of seconds to try to stop for before killing the container, Default=10
$docker restart Name/ID

# 附加到一个运行的容器上面; --no-stdin=false Do not attach stdin; --sig-proxy=true Proxify all received signal to the process
$docker attach ID

#访问另一个容器的命名空间 进入另一个容器
#安装Linux工具包
$ yum install -y util-linux
#获取容器的Pid
$docker inspect --format "{{.State.Pid}}" containerName
#进入容器
$ nsenter --target Pid --mount --uts --ipc --net --pid

#容器网络配置
#随机生成container到host端口映射
$docker run -d -P --name myNginx nginx
#指定特定端口 将container 80到host91端口的映射
$docker run -d -p 91:80 --name myNginx imageName
# -p ip: hostPort:containerPosrt
$docker ps -l


#【--------------------------docker数据管理-------------------】
# -v 绑定挂载一个数据卷 -h 给容器指定一个主机名
$docker run -it --name volume-test1 -h nginx -v /data/ imageName

#或着手动设置映射
$docker run -it --name volume-test1 -h nginx -v /opt:/opt imageName

#挂载另一容器, 另一容器volume-test2(即使容器已经停掉)来做volume-test1的专门的存储
$docker run -it --name volume-test1 -h nginx --volumes-from volume-test2 imageName

#显示数据卷到host主机的映射关系
$docker inspect -f {{.Volumes}} volume-test1

猜你喜欢

转载自blog.csdn.net/xia296/article/details/89925368