Docker学习 ----常用操作命令大全及例子[陆续更新中...]

最近在学习Docke容器技术,感觉这东西好玩强大,现将我学习到的命令记录在这里,方便自己日后查阅,也希望其余的初学者可以参考~

1、拉取第一个Docker镜像ubuntu到本地

Usage:	ddocker pull [OPTIONS] NAME[:TAG|@DIGEST]
#例子:
docker pull ubuntu

 2、运行ubuntu镜像

Usage:	docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
#例子:
docker run -i -t ubunt /bin/bash

 3、通过上一步,我们得到了一个容器,他是一个ubuntu的系统,让我们检查一下容器的/etc/hosts文件

root@865277181d2c:/# cat /etc/hosts

 4、在容器中安装第一个软件包

root@865277181d2c:/# apt-get install vim

 5、每次运行docker容器,系统会默认分配一个随机的名称,如果想指定容器名称为test当然也可以,方法如下:

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

 6、退出容器

root@865277181d2c:/# exit

 7、查看最后一次运行的容器

docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
865277181d2c       ubuntu             "/bin/sh -c 'while tr"   18 minutes ago      Up 18 minutes                              test

 8、重新启动刚刚退出的容器,两个办法,容器名称,或容器ID

docker  start  test
docker  start  865277181d2c

 9、重启后发现一个问题,没有进入到shell交互模式,看不到之前的[root@865277181d2c:/#]对吧? 别担心同样有两个办法,执行下面命令,(只适用于交互式容器)

docker attach test
docker attach 865277181d2c

 10、上面我们运行容器都属于交互式运行(interactive container),这类的方式适合我们临时做一些测试,或者给镜像安装一些软件等操作,如果我们想在容器里面运行一个web服务或者程序,那么我们应该选择守护式来运行容器(daemonized container),我们来启动一个守护式容器:

docker run --name daemon_test -d ubuntu /bin/sh -c "while true;do echo I am studying docker, it is very interesting.;sleep 1;done" 

 这个容器运行后在控制台只返回了一个容器ID(e74427be6c8ce32eba6d6aec9d086774c60e78df71910d144e6440484112737f),我们需要看看他是不是在运行

docker ps

 看到结果

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
e74427be6c8c        ubuntu            "/bin/sh -c 'while tr"   27 seconds ago      Up 27 seconds                             daemon_test

 这个容器都干了啥?获取守护式容器日志

docker logs daemon_test
I am studying docker, it is very interesting.
I am studying docker, it is very interesting.
I am studying docker, it is very interesting.
I am studying docker, it is very interesting.
I am studying docker, it is very interesting.
I am studying docker, it is very interesting.
I am studying docker, it is very interesting.
I am studying docker, it is very interesting.
...

 跟踪守护式容器日志

docker logs -f daemon_test
I am studying docker, it is very interesting. I am studying docker, it is very interesting. I am studying docker, it is very interesting. ...
ctrl+c退出日志

 获取日志最后10条信息

docker logs --tail 10 daemon_test

 跟踪守护式容器日志带时间

docker logs -ft daemon_test

 11、查看容器内进程

docker top daemon_test
PID                 USER                COMMAND
6254                root                /bin/sh -c while true;do echo I am studying docker, it is very interesting.;sleep 1;done
7199                root                sleep 1

 12、在容器内部运行进程docker exec,该命令是docker1.3之后才有的

  1)在容器内部运行交互命令

docker exec -t -i daemon_test /bin/bash
root@e74427be6c8c:/# 

      2)在容器中运行后台任务,创建一个new_file_test空文件

exec -d daemon_test touch /etc/new_file_test

 13、停止守护式容器

docker stop daemon_test
docker stop e74427be6c8c

14、自动重启容器(restart 1.2.0引入)

ocker run  --restart=always --name daemon_test -d ubuntu /bin/sh -c "while true;do echo I am studying docker, it is very interesting.;sleep 1;done" 

ocker run  --restart=on-failure:5 --name daemon_test -d ubuntu /bin/sh -c "while true;do echo I am studying docker, it is very interesting.;sleep 1;done" 

15、停止容器

Usage:    docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker stop daemon_test

16、删除容器,运行中的docker容器是无法删除的,必须先停止容器

Usage:	docker rm [OPTIONS] CONTAINER [CONTAINER...]
docker rm daemon
docker rm e74427be6c8c

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

 17、查看本机镜像

docker images

 18、删除镜像,如果你本机只有一个镜像还是别删了

Usage:	docker rmi [OPTIONS] IMAGE [IMAGE...]
docker rmi ubuntu

 19、查找镜像

Usage:	docker search [OPTIONS] TERM
#例子
docker search puppet

 20、构建镜像

  注:这里说的构建镜像不是真正的“创建”镜像,而是基于一个已有的镜像构建新的镜像而已。如果你想从零构建一个镜像请移步这里

  1)docker commit(不推荐)

#第一步创建一个要修改的容器
sudo docker run -i -t ubuntu /bin/bash

root@34ec8a9bdd35:/# 
#接下来我们在容器中进行几个简单改动
root@34ec8a9bdd35:/# apt-get update
root@34ec8a9bdd35:/# apt-get -y install vim
#退出容器
root@34ec8a9bdd35:/# exit

#这回可以运行docker commit 命令了
sudo docker commit 34ec8a9bdd35 ashinliu/ubuntu

#也可以指定更多的信息进行docker commit ,例如:容器信息、容器作者、tag等
sudo docker commit -m "描述提交信息,例如安装了vim" -a "作者名字" 34ec8a9bdd35 ashinliu/ubuntu:tags

   2)Dockerfile构建镜像

   在用Dockerfile前让我们看一下我们在执行docker commit前在容器(34ec8a9bdd35)内都做了啥?

    1、创建一个要进行修改的定制容器

    2、apt-get update

    3、apt-get install vim

    4、exit

    5、docker commit

    我们是做了上面五步后才产生了一个ashinliu/ubuntu镜像。好,现在我们通过dockerfile看看如何制作一个相同功能的容器

#1、在宿主机上创建一个文件夹,如:vim
mkdir vim
#2、进入到vim文件夹,并创建Dockerfile空文件
cd vim
touch Dcokerfile
#3、编辑Dockerfile
vi Dockerfile

# Version: 0.0.1
FROM ubuntu:latest
MAINTAINER Ashin Liu "18645991023@163.com"
RUN apt-get update
RUN apt-get install -y vim
EXPOSE 80

#4、运行构建命令
sudo docker build -t="ashinliu/ubuntu" .

查看images

docker images

REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
ashinliu/ubuntu           latest              f8636a60b6c0        1 minutes ago      214.4 MB

 通过dockerfile创建镜像OK

    

 

posted @ 2016-05-14 10:46  财富自由  阅读(285)  评论(0编辑  收藏  举报