Docker容器常用操作命令(镜像的上传、下载、导入、导出、创建、删除、修改、启动等)详解

时间:2024-03-07 15:53:25

1、docker镜像下载

docker pull [options] name [:tag@digest]

 name后边可以跟镜像标签或者镜像摘要(其实就是镜像的版本),如果不加任何东西,则会默认是在docker hub中下载:latest(最新版)的

 参数详情:

名称

默认

描述

--all-tags, a

 

下载仓库所有镜像

--disable-content-trust

true

跳过镜像校验

--platform

 

设置镜像所属平台, 如果有多个镜像服务.

 

2、查看当前docker镜像

docker images [options] [repository[:tag]]

 images后边可以加要查看的镜像名称和版本

 

3、运行镜像

docker run [options] image [:tag] [command] [arg...]

建议使用:docker run -dit [id]

参数说明:

 -d, --detach=false 指定容器运行于前台还是后台,默认为false

 -i, --interactive=false 打开STDIN,用于控制台交互

 -t, --tty=false 分配tty设备,该可以支持终端登录,默认为false

 -u, --user="" 指定容器的用户

 -a, --attach=[] 登录容器(必须是以docker run -d启动的容器)

 -w, --workdir="" 指定容器的工作目录

 -c, --cpu-shares=0 设置容器CPU权重,在CPU共享场景使用

 -e, --env=[] 指定环境变量,容器中可以使用该环境变量

 -m, --memory="" 指定容器的内存上限

 -P, --publish-all=false 指定容器暴露的端口

 -p, --publish=[] 指定容器暴露的端口

 -h, --hostname="" 指定容器的主机名

 -v, --volume=[] 给容器挂载存储卷,挂载到容器的某个目录

 --volumes-from=[] 给容器挂载其他容器上的卷,挂载到容器的某个目录

 --cap-add=[] 添加权限,权限清单详见:http://linux.die.net/man/7/capabilities

 --cap-drop=[] 删除权限,权限清单详见:http://linux.die.net/man/7/capabilities

 --cidfile="" 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法

 --cpuset="" 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU

 --device=[] 添加主机设备给容器,相当于设备直通

 --dns=[] 指定容器的dns服务器

 --dns-search=[] 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件

 --entrypoint="" 覆盖image的入口点

 --env-file=[] 指定环境变量文件,文件格式为每行一个环境变量

 --expose=[] 指定容器暴露的端口,即修改镜像的暴露端口

 --link=[] 指定容器间的关联,使用其他容器的IP、env等信息

 --lxc-conf=[] 指定容器的配置文件,只有在指定--exec-driver=lxc时使用

 --name="" 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字

 --net="bridge" 容器网络设置:

 bridge 使用docker daemon指定的网桥

 host //容器使用主机的网络

 container:NAME_or_ID >//使用其他容器的网路,共享IP和PORT等网络资源

 none 容器使用自己的网络(类似--net=bridge),但是不进行配置

 --privileged=false 指定容器是否为特权容器,特权容器拥有所有的capabilities

 --restart="no" 指定容器停止后的重启策略:

 no:容器退出时不重启

 on-failure:容器故障退出(返回值非零)时重启

 always:容器退出时总是重启

 --rm=false 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)

 --sig-proxy=true 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理

 

4、查看正在运行的docker容器

docker ps

 -a :显示所有的容器,包括未运行的。

 -q :静默模式,只显示容器编号。

 -f :根据条件过滤显示的内容。

 --format :指定返回值的模板文件。

 -l :显示最近创建的容器。

 -n :列出最近创建的n个容器。

 --no-trunc :不截断输出。

 -s :显示总的文件大小。

 

5、进入docker容器内部的shell

docker exec -it [name] bash

 -d,以后台方式执行命令;

 -e,设置环境变量

 -i,交互模式

 -t,设置TTY

 -u,用户名或UID,例如myuser:myusergroup

 

6、docker build 构建镜像

docker build [OPTIONS] PATH | URL | -

OPTIONS说明:

 -f :指定要使用的Dockerfile路径;

 -m :设置内存最大值;

 --tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

 --build-arg=[] :设置镜像创建时的变量;

 --cpu-shares :设置 cpu 使用权重;

 --cpu-period :限制 CPU CFS周期;

 --cpu-quota :限制 CPU CFS配额;

 --cpuset-cpus :指定使用的CPU id;

 --cpuset-mems :指定使用的内存 id;

 --disable-content-trust :忽略校验,默认开启;

 --force-rm :设置镜像过程中删除中间容器;

 --isolation :使用容器隔离技术;

 --label=[] :设置镜像使用的元数据;

 --memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;

 --no-cache :创建镜像的过程不使用缓存;

 --pull :尝试去更新镜像的新版本;

 --quiet, -q :安静模式,成功后只输出镜像 ID;

 --rm :设置镜像成功后删除中间容器;

 --shm-size :设置/dev/shm的大小,默认值是64M;

 --ulimit :Ulimit配置。

 --network: 默认 default。在构建期间设置RUN指令的网络模式

 

7、docker删除容器

1)首先查看系统现有的容器

docker ps -a

很多是测试产生的容器,现在将他们删除,执行:

docker rm [c9b077c1e8b2 97b22f5efeca]

 c9b077c1e8b2、97b22f5efeca为要删除容器的id

 

2)删除正在运行中的容器

此时id为 ae32dddeadbf 的容器正在运行中

我们直接删除它是会报错的:

 

这时加上参数 -f (强制删除)即可

docker rm -f ae32dddeadbf

 

 

3)删除所有的容器

先停止所有运行中的容器:

docker stop $(docker ps -q)

 

再查看所有的容器:

docker ps -aq

 

删除所有的容器:

docker rm $(docker ps -aq)

 

8、docker删除镜像

先查看当前镜像:

docker images

 

删除镜像:

docker rmi ceshicopy2

 ok,已经删除

需要注意的是,删除镜像时,必须保证没有容器正在基于此镜像运行着,所以需要先删除基于此镜像的容器,再删除镜像

 

9、docker镜像的导入导出

先查看当前镜像

docker images

 

1)docker镜像的导出

docker save

用法:docker save > 【目标文件】 【源镜像名】

示例:

docker save > nginx.tar hub.c.163.com/library/nginx

 

2)docker镜像的导入

docker load

用法:docker load < 【导入的镜像】

示例:

docker load < nginx.tar

 

10、docker容器的导入导出

查看当前容器

docker ps -a

 

1)容器的导出

docker export

用法:docker export > 【目标文件】 【源镜像名】

示例:

docker export > jpress.tar 8bf49fa5ca97

 

2)容器的导入

docker import

用法:docker import 【导入的容器】 【导入后修改的名字】

示例:

docker import jpress.tar jpress:1

注意:

容器导入后也会形成镜像,然后再运行此镜像即可!

 

11、保存修改后的容器内容

docker commit  [容器id]  [修改后的名字:tag]

示例:

docker commit 03b79d8cef9d jpmysql

已经生成新的镜像,基于修改后的容器。

直接运行即可

 

12、镜像上传至私有仓库

docker push [OPTIONS] NAME[:TAG]

示例:

1、首先登录docker hub

docker login

 

2、上传镜像

docker push runningrookie/ubuntu:16.04

注意:上传此镜像前,需要先把镜像的名称改为[用户名]/ubuntu:[tag]格式,前边一定要是自己登录账号的用户名;

注意:[用户名]表示你的用户名,/ubuntu表示这个叫ubuntu的存储库,后边的:[tag]才是你上传到docker hub后显示的标签名称。

 

3、进入docker hub查看

 

13、docker容器设置开机自启

1、用法:

启动时加--restart=always参数

 

2、示例:

docker run --restart=always .....

如果创建时未指定 --restart=always ,可通过update 命令设置:

docker update --restart=always xxx

若想要关闭自启动,可执行

docker update --restart=no xxx

 

3、参数:

 no  不自动重启容器. (默认值)

 on-failure  容器发生error而退出(容器退出状态不为0)重启容器,可以指定重启的最大次数,如:on-failure:10

 unless-stopped  在容器已经stop掉或Docker stoped/restarted的时候才重启容器

 always  在容器已经stop掉或Docker stoped/restarted的时候才重启容器,手动stop的不算