一、docker基本使用

一、基本命令

容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]

                        —docker [create|start|stop|pause|unpause]   新增命令

             create只创建容器,不运行
容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
容器rootfs命令 — docker [commit|cp|diff]
镜像仓库 — docker [login|pull|push|search]
本地镜像管理 — docker [images|rmi|tag|build|history|save|import]
其他命令 — docker [info|version]

1.使用search 命令搜索镜像

docker search ubuntu

2.使用pull命令下载镜像

docker pull ubuntu:latest

dock pull <镜像名称>:<标签>

3.使用images 命令列出镜像目录

docker images

4.使用run 命令创建容器

docker run -i -t --name hello ubuntu /bin/bash

-i(interactive)    -i: 以交互模式运行容器,通常与 -t 同时使用;

 -t(Pseudo-tty)    为容器重新分配一个伪输入终端,通常与 -i 同时使用;
 -d docker run 后追加-d=true 或-d,那么容器将会运行在后台模式
  docker exec 来进入到该容器中,或者attach重新连接容器的回话,但不推荐使用attach,因为直接退出会停止容器的运行,可以用ctrl + p,ctrl + q退出容器 
--name 选项可以指定容器名称。若不指定名称,Docker会自动生成名称并进行指定。docker run时没有指定--name,那么deamon会自动生成一个随机字符串UUID
Docker时有自动化的需求,可以将containerID输出到指定的文件中(PIDfile): --cidfile=""
Docker的容器时没有特权的,例如不能再容器中再添加启动一个容器。意识因为默认情况下容器是不能访问任何其他设备的。但是通过"privileged",容器就拥有了访问任何其他设备的权限。
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/Container: 四种类型;

--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;

 

5.使用ps 命令查看容器列表

docker ps -a

6.使用start命令启动容器

docker start hello

7.使用restart命令重启容器

docker restart hello

8.使用attach 命令连接容器

docker attach hello

9.使用exec命令从外部运行容器内的命令

docker exec hello echo "Hello World"

10.使用stop命令终止容器

docker stop hello

11.使用rm命令删除容器

docker rm hello

12.使用rmi命令删除镜像

dockere rmi ubuntu:latest

13.使用history命令查看镜像历史

$ sudo docker history hello:0.1    

        dock history <镜像名称>:<标签>,也可使用镜像ID代替镜像名称。

14.从docker容器中赋值文件

$docker cp hello-nginx:/etc/nginx/nginx.conf ./    #将docker容器中的nginx.conf文件复制到本地

15.使用commit命令从容器的修改中创建镜像

 

二、docker build文件

创建Docker镜像

1)创建Docker文件

vi dockerbook/Chapter04/Dockerfile

"""

FROM ubuntu:14.04                                                            #指定基于的基础镜像。Docker镜像基于已创建的镜像。指令格式为<镜像名称>:<标签>

MAINTAINER Foo Bar <foo@bar.com>                #维护者信息

RUN apt-get update                          #运行shell脚本的命令

RUN apt-get install -u nginx

RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf

RUN chown -R www-data:www-data /var/lib/nginx

VOLUME ["/data","/etc/nginx/site-enabled","/var/log/nginx"]          #要与主机共享的目录.也可以在docker run 命令中使用-v 选项进行设置。例如,-v /root/data:/data将主机的/root/data目录连接到Docker容器的/data目录。

WORKDIR /etc/nginx                              #为CMD中设置的可执行文件设置运行目录。

CMD ["nginx"]                             #指定容器启动时执行的文件或shell脚本。

 

EXPOSE 80                              #与主机相连的端口号

EXPOSE 443

"""

docker build --tag hello:0.1 .   

命令格式为docker build <选项><Dockerfile路径>  使用--tag选项可以设置镜像名称与标签。若只设置镜像名称,标签就会设置为latest。

尝试运行

docker run --name hello-nginx -d -p 80:80 -v /root/data:/data hello:0.1

-d  在后台运行

-p 80:80 选项将主机的80号端口与容器的80号端口连接起来,并暴露到外部。这样设置后,连接http://<主机ip>:80就会连接到容器的80号端口。

-v /root/data:/data选项将主机的/root/data目录连接到容器的/data目录。若将文件放入/root/data目录,则能从容器读取相应文件。

 

posted @ 2017-01-03 16:08  jidi_78  阅读(108)  评论(0)    收藏  举报