Docker基础指令-容器相关

工具教程3天前更新 huiye
55 0

容器相关命令

新建+启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

使用镜像ubuntu:latest以交互模式启动一个容器,在容器内执行/bin/bash命令

docker run -it ubuntu:latest /bin/bash

option参数:

--name="容器新的名字":为容器指定一个名称
-d:(detache)后台运行容器并返回容器ID,也即启动守护式容器(docker容器后台运行,必须有一个前台进程)
注意:容器运行的命令如果不是那些一直挂起的命令(比如top,tail),是会自动退出的

-i:以交互模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪输入终端,通常与-i同时使用,也即启动交互式容器(前台有伪终端,等待交互)

-P:随机端口映射
-p:指定端口映射

--rm:创建一个临时容器,退出容器后自动删除容器
--restart=always:重启宿主或者重启docker的时候会自动重启容器 (不能和--rm同时使用)
--restart=策略
    no 默认值 不管如何容器都不重启
    on-failure 只有容器非正常退出才重启,重启docker服务或者系统都不会重启容器
    unless-stopped 只要手动停止容器了,重启机器和docker服务,容器都不会自动启动(比如说我stop了容器,此时重启机器或者docker,这个容器就不会自动启动)
    always 重启宿主或者重启docker的时候会自动重启容器

--network:指定网络。

若想要运行多个命令,option结尾
sh -c "命令1;命令2"

-e:指定变量
docker run -it -e aa=1 -e bb=2 ubuntu:latest /bin/bash

-u:指定用户(用户需要提前存在)

-m:限制内存大小

--cpuset-cpus=0:指定docker进程在哪个cpu上运行
--cpuset-cpus 2-4,7      指定在2、3、4、7号CPU上运行
在容器里执行4次
cat /dev/zero > /dev/null &
查看cat进程的分布
ps mo pid,comm,psr $(pgrep cat) 

-p参数说明

参数说明
-p hostPort:containerPort端口映射 -p 8080:80
-p ip:hostPort:containerPort配置监听地址 -p 10.0.0.100:8080:80
-p containerPort指定容器的端口,宿主机随机生成一个端口
-p hostPort:containerPort/UDP指定映射UDP端口

列出所有正在运行的容器

docker ps [OPTIONS]

option参数:

-a:列出当前所有正在运行的容器+历史上运行过的
-l:显示最近创建的容器
-n:显示最近n个创建的容器
-q:静默模式,只显示容器编号

退出容器

1、exit:run进去容器,exit退出,容器停止
2、ctrl+p+q:run进去容器,ctrl+p+q退出,容器不停止

启动已停止运行的容器

docker start 容器ID/容器名

重启容器

docker restart 容器ID/容器名

停止容器

docker stop 容器ID/容器名

强制停止容器

docker kill 容器ID/容器名

删除已停止的容器

docker rm [option] 容器ID/容器名

option参数:

-f:强制删除
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm

查看容器日志

docker logs 容器ID/容器名
-f 持续查看日志

查看容器内运行的进程

docker top 容器ID/容器名

查看所有对象属性

docker 对象类型(默认为容器类型) inspect 对象名称
docker container inspect 容器ID/容器名
docker image inspect 镜像名/镜像ID
docker network inspect 网络名/网络ID

进入正在运行的容器并以命令行交互

方式一:exec(推荐, 是在容器中打开新的终端,并且可以启动新的进程,用exit退出容器终端不会导致容器的停止)
docker exec -it 容器ID/容器名 bashShell

方式二:attach(直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器停止)
docker attach 容器ID/容器名

从容器内拷贝文件到主机上

docker cp 容器ID/容器名:容器内路径 主机路径

从主机拷贝文件到容器内

docker cp 主机路径 容器ID/容器名:容器内路径

export导出容器

docker export 容器ID/容器名 > 文件名.tar

import导入镜像

从tar包中的内容创建一个新的文件系统再导入为镜像

 cat 文件名.tar |docker import - 镜像用户/镜像名:镜像版本号

commit提交容器副本使之成为一个新的镜像

dockedr commit -m="描述信息" -a="作者" 容器ID/容器名 目标镜像名:tag

使用 exec 直接在容器内执行命令

在容器内执行命令前文提到使用exec来进入容器,也可以使用这个命令直接在容器内执行命令

# 例:在容器内创建文件
docker exec 容器ID/容器名 touch /root/1.txt

update 更新容器信息

# 例:将容器重启策略修改为 always
docker update --restart=always 容器ID

© 版权声明

相关文章