1、service docker status
查看docker守护进程运行的状态
2、service docker start
启动docker的守护进程
3、service docker stop
关闭docker的守护进程
4、docker info
返回所有容器和镜像的数量、docker使用的执行驱动和存储驱动、以及docker的基本配置信息
5、docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
docker run -i -t ubuntu /bin/bash
表示创建并启动一个容器,该容器有自己的网络、IP地址;容器中启动了一个ubuntu系统;-i表示设置STDIN,容器运行后接受输入,-t表示容器运行后启动一个tty终端,便于与用户交互,-t和-t都属于OPTIONS;ubuntu是要运行镜像的名字; /bin/bash表示容器启动后运行的初始命令。
运行命令后,会显示“root@410923f574b8:/# ”,表示容器创建并启动成功,容器的ID是410923f574b8,容器中成功运行了ubuntu系统,启动了一个root的bash,然后就可以在这个容器中的ubuntu上执行各种shell命令了;执行exit命令就回到了原宿主ubuntu上了。
执行exit后,容器就停止了,只有在制定的/bin/bash命令处于运行状态的时候,容器才会处于运行状态,一旦退出容器,/bin/bash命令也就停止了,容器也就随之停止了。
docker run --name my_ubuntu -i -t ubuntu /bin/bash
#用--name指定容器的名字为my_ubuntu,如不指定,系统会默认为容器指定一个名字。如果创建容器相同的名字,会提示失败
docker run --name my_ubuntu -d ubuntu /bin/bash -c "while true; do echo hello lzj; sleep 2; done"
创建守护式容器,没有交互终端;-d 指明创建的容器为守护容器; -c指定?
docker run --restart=always --name my_ubuntu -d ubuntu /bin/bash -c "while true; do echo hello lzj; sleep 2; done"
#--restart=always指定当my_ubuntu退出后,会自动重启。
docker run --restart=on-failure --name my_ubuntu -d ubuntu /bin/bash -c "while true; do echo hello lzj; sleep 2; done"
#--restart=on-failure 指定当容器退出代码非0值的时候,才会自动重启。
docker run --restart=on-failure:10 --name my_ubuntu -d ubuntu /bin/bash -c "while true; do echo hello lzj; sleep 2; done"
#指定最多重启次数为10
docker run -i -t --name docker_name ubuntu:13.06 /bin/bash
#创建一个docker_name容器,运行13.06版本的ubuntu镜像。当仓库中有很多版本的镜像,用此版本指定
docker run -d ubuntu:latest /bin/bash
#让docker容器在后台以守护状态运行,要想查看容器的运行日志,可以用docker logs
6、docker ps [OPTIONS]
docker ps #默认显示正在运行的容器
docker ps -a #列出所有容器,包括正在运行的和已经停止的
docker ps -l #列出最后一个运行的容器,无论这个容器是正在运行的还是已经停止的
docker ps -l -q #列出最后一个运行的容器的id,无论这个容器是正在运行的还是已经停止的
docker ps -n x #显示最后x个容器,不论容器是运行还是已经停止状态的
7、docker start docker_name(容器名)/docker_id
对于已经停止的ring器,可以用start命令启动,或者用docker restart docker_name(容器名)/docker_id
8、docker start docker_name(容器名)/docker_id 与 docker restart docker_name(容器名)/docker_id区别
docker start docker_name(容器名)/docker_id 会丢弃创建容器时指定的各种参数以及初始运行的命令,比如-i 、 -t、 、/bin/bash。
docker restart docker_name(容器名)/docker_id 会保留上述参数,只需要运行 docker attach my_ubuntu,又可以进行交互界面
9、docker stop docker_name(容器名)/docker_id #停止容器
10、docker logs [OPTIONS] CONTAINER
docker logs docker_name(容器名)/docker_id
打印容器的运行的日志,可以是运行的,也可以是已经停止的容器;尤其是对于守护式容器,可以打印出日志
dcoker logs -f docker_name(容器名)/docker_id #可以实时监控日志
docker logs --tail 10 docker_name(容器名)/docker_id #打印出最后10条日志
11、docker top docker_name(容器名)/docker_id #显示docker_name容器中进程
12、docker stats [OPTIONS] [CONTAINER…]
docker status #可以查看所有守护进程占用的CPU、内存、网络I/O及存储性能I/O的性能和指标
13、在已经启动的容器内部运行进程
docker exec -d docker_name/docker_id touch /home/test.txt
# -d表示后台进程,表示在docker_name容器中运行一个后台进程,用于创建一个test.txt文件,注意该文件存在于容器home目录下,而不是宿主机的home下
docker exec -i -t docker_name/docker_id /bin/bash
#表示创建tty终端,并捕捉STDIN,紧接着在容器内启动一个交互式命令,此时执行exit命令,会退出这个交互式窗口,并不会结束这个容器
14、docker kill [OPTIONS] CONTAINER [CONTAINER…]
docker kill docker_name/docker_id #杀死指定的容器
docker kill 与 docker stop 区别
docker stop命令会向指定容器发送SIGTERM信号
docker kill命令会向指定容器发送SIGKILL信号
15、docker inspect [OPTIONS] NAME|ID [NAME|ID…]
docker inspect docker_name/docker_id #可以查看docker_name容器的详细信息,也可以同时查看多个容器的信息
docker inspect 与 docker ps 区别
docker inspect显示指定容器的详细信息;docker ps显示指定容器的简单信息
16、docker rm [OPTIONS] CONTAINER [CONTAINER…]
docker rm docker_name/docker_id #删除指定容器
docker rm -f docker_name/docker_id #强制删除指定容器
docker rm `sudo docker ps -a -q` #删除现有的全部容器,-a会返回所有的容器,-q只返回容器的ID,而不会返回其它的信息
docker rm $(docker ps -a -q) #删除所有容器
17、docker image COMMAND
docker image ls #列出本地所有的镜像
docker image rm -f docker_name/docker_id #强制删除指定的镜像
18、docker pull [OPTIONS] NAME[:TAG|@DIGEST]
docker pull ubuntu:18.10 #从docker hub上拉取18.10版本的ubuntu系统
19、docker search [OPTIONS] TERM
docker search ubuntu #从docker hub上查找所有可用的ubuntu镜像
20、做镜像,比如在ubuntu上安装一个apache,然后做成一个镜像
1、登录docker hub
docker login
2、运行ubuntu镜像
docker run -i -t ubuntu /bin/bash
3、在容器中安装apache
apt-get update && apt-get install apache
4、退出容器,把容器做成镜像
docker commit 4fed29523119 softwarebird/apache2 #4fed29523119为容器ID,softwarebird/apache2为仓库名和镜像名
5、或者做镜像时指定更多信息
docker commit -m"my image" -a"lzj" 4fed29523119 softwarebird/apache2:0.1
#-m指定提交的信息,-a指定作者
21、docker build [OPTIONS] PATH | URL | -
docker build -i -t softwarebird/my_hello /bin/bash
22、将镜像推送到docker hub
docker push softwarebird/my_hello
23、删除镜像
格式:docker rmi [OPTIONS] IMAGE [IMAGE...]
示例:
docker rmi 48e8ec9dc407 #48e8ec9dc407为镜像ID
docker rmi softwarebird/my_hello2 #softwarebird/my_hello2 为镜像名
docker rmi -f softwarebird/my_hello2 #-f表示强制删除
docker rmi `docker images -a -q` #删除所有镜像
24、查找容器中端口对应的宿主机端口
格式:docker port CONTAINER [PRIVATE_PORT[/PROTO]]
docker port container_name 80 #查询container_name容器中80端口映射在宿主机上的端口
25、导入导出镜像
导入:docker save [OPTIONS] IMAGE [IMAGE...]
导出:docker load [OPTIONS]
示例:
docker save -o hello.zip softwarebird/my_hello
#把镜像保存到hello.zip文件中
docker load -i hello.zip
#把镜像从hello.zip提取出来,然后用docker images命令可以查看提取的命令
26、镜像打标签
docker tag可以给做好的镜像重新打标签,但是原来的镜像依旧存在。
格式:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
示例:`
docker tag ubuntu:latest ubuntu:19.04
#把latest版本的ubuntu镜像重新打包成19.04版本的ubuntu镜像,然后就存在两个版本的ubuntu镜像`
27、镜像查找
docker search默认从docker hub上查找指定镜像
格式:docker search [OPTIONS] TERM
示例:
docker search ubuntu
#查找所有的ubuntu镜像
28、创建镜像
格式:docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
示例:
docker create -it ubuntu:latest
#最新版的ubuntu镜像创建一个容器,执行命令后,立即返回创建的容器的id。创建后的容器是停止状态的,可以用docker start命令启动创建好的容器
29、进入容器
当容器以守护进程方式启动后,如果想进入容器操作,例如
docker run -idt ubuntu
要想进入容器操作,可以选择如下两种方式:
- attach
docker attach stoic_murdock
- exec
docker exec -it serene_banach /bin/bash