初步
确认Docker信息:
docker info
镜像
查看镜像
docker images
镜像搜索
docker search ubuntu
获取镜像
docker pull ubuntu
构建镜像
docker commit
- DockerFile
容器
创建容器
可交互式容器
启动可交互式容器:
docker run -i -t ubuntu /bin/bash
-
-t -i
标志保证了启动的容器是一个可交互式的:-i
标志保证容器中STDIN 是开启的;-t
说明创建的容器分配一个伪tty终端。 -
ubuntu
表示一个基础镜像,容器是基于此创建的 -
/bin/bash
表示容器启动后将运行怎样的命令
守护式容器
守护式容器类似于后台进程或服务,不像是一个前台会话进程需要时刻等待键盘输入命令进行交互式会话。
docker run --name you_container_name -d ubuntu ....
使用-d
来指示该容器是一个守护石(运行于后台的)容器。
容器的命名
docker run --name your_container_name -it ubuntu /bin/bash
给容器命名(名称为your_container_name
),此后可以用容器名来代替容器,因此容器名必须是唯一的。如果没有指定容器名,则会随机分配一个容器名。
挂载本地目录到容器之中
docker run -it -v /host/dir:/container/dir ubuntu64 /bin/bash
- 通过
-v
参数,冒号前为宿主机目录,必须为绝对路径;冒号后为镜像内挂载的路径。 - 默认挂载的路径权限为读写。如果指定为只读可以用
:ro
标签,即-v /host/dir:/container/dir:ro
查看容器
docker ps -a
其中-a
选项表示显示所有容器,包括停止和正在运行的;若无此项,表示只显示正在运行的容器。
docker ps -l
列出最后一次运行的容器。
docker ps -n 5
列出最后(使用的)5个容器,不管是正在运行还是已经停止。这里5
可以指定为别的数字。
docker insepct your_container_name
表示获取容器详细信息,包括配置信息、名称、命令、网络配置等,以JSON格式。
启动容器
启动已经停止的容器
docker start your_container_name
可以使用容器名或者容器ID来指代该容器。容器ID只要输入足以确定该容器的数字位数即可。
也可以使用:
docker restart your_container_name
注意!
使用docker start
命令只是启动了容器,并且会沿用当时docker run
命令时指定的参数来运行。假若参数指定容器启动时是可交互的shell界面,docker start
无法切换到shell界面,还需要使用docker attach
命令来切换
容器附着
Docker容器重新启动的时候, 会沿用docker run
命令时指定的参数来运行, 因此,如果我们容器重新启动后是运行一个交互式会话shell,则要用docker attach
命令, 重新附着到该容器的会话上:
docker attach your_container_name
容器的自动重启
由于某种错误而导致容器停止运行,我们希望创建的容器可以按照指定的方式来自动重启
docker run --restart=always --name your_container_name -d ubuntu ...
- 关键是选项
--restart=always
,表示无论容器的退出代码是什么(包括成正常退出,退出代码0
), Docker都会自动重启该容器。 - 还可以将这个标志设为
--restart=on-failure
, 这样, 只有当容器的退出代码为非0值的时候,才会自动重启。 -
--restart=on-failure:5
表示当容器退出代码为非0时, Docker 会尝试自动重启该容器, 最多重启5 次。
容器内进程的操作
查看正在运行的容器内的进程
docker top yout_container_name
在容器内启动新进程
在Docker命令行界面可以直接命令某个容器启动一个新的进程
docker exec -d your_container_name touch /etc/new_config_file
这表示,使命为your_container_name
的正在运行的容器执行命令touch /etc/new_config_file
(即启动进程执行命令)。-d
表示这个进程是后台进程。
docker exec -t -i your_container_name /bin/bash
表示在your_container_name
容器内部启动一个进程/bin/bash
,-i -t
(或者合起来-it
)指示是一个可交互进程。
容器的停止
docker stop your_container_name
docker kill your_container_name
docker stop
会向Docker容器进程发送SIGTERM
信号。如果想快速停止某个容器,也可以使用docker kill
命令来向容器进程发送SIGKILL
信号。
删除容器
docker rm your_container_name
注意!正在运行中的容器是无法删除的。
可以使用以下命令一次性删除所有的容器
docker rm `docker ps -a -q`
-a
标志代表列出所有(all)容器,而-q
标志则表示只需要返回容器的ID而 不会 返回容器的其他信息。
网友评论