上一篇:无
Docker常用命令
1692 2019-07-14 2021-01-14
一、镜像管理
1、准备工作
# 添加 docker组
sudo groupadd docker
# 将当前用户添加至 docker组
sudo gpasswd -a ${USER} docker
# 设置国内docker镜像源,加入以下内容
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://cr.console.aliyun.com/"]
}
2、search
# 举例 docker search rocketmq 或 java
docker search [OPTIONS] TERM
OPTIONS说明:
- --automated:只列出 automated build类型的镜像。
- --no-trunc:显示完整的镜像描述。
- -s:列出收藏数不小于指定值的镜像。
3、pull
# 默认拉取最新的tag latest
# 关于更多tag的信息,需要自行查看docker镜像的网站
# 举例 docker pull tomcat
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
push这里暂时不作介绍。
4、images
# 举例 docker images nginx
docker images [OPTIONS] [REPOSITORY[:TAG]]
OPTIONS说明:
- -a:列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层)。
- --digests:显示镜像的摘要信息。
- -f:显示满足条件的镜像。
- --format:指定返回值的模板文件。
- --no-trunc:显示完整的镜像信息。
- -q:只显示镜像ID。
5、rmi
删除本地一个或多少镜像。
docker rmi [OPTIONS] IMAGE [IMAGE...]
OPTIONS说明:
- -f:强制删除。
- --no-prune:不移除该镜像的过程镜像,默认移除。
6、build**
使用Dockerfile创建镜像。
1、语法
docker build [OPTIONS] PATH | URL | -
OPTIONS说明:
- --build-arg=[]:设置镜像创建时的变量。
- --cpu-shares:设置 cpu 使用权重。
- --cpu-period:限制 CPU CFS周期。
- --cpu-quota:限制 CPU CFS配额。
- --cpuset-cpus:指定使用的CPU id。
- --cpuset-mems:指定使用的内存 id
- --disable-content-trust:忽略校验,默认开启。
- -f:指定要使用的Dockerfile路径。
- --force-rm:设置镜像过程中删除中间容器。
- --isolation:使用容器隔离技术。
- --label=[]:设置镜像使用的元数据。
- -m:设置内存最大值。
- --memory-swap:设置Swap的最大值为内存+swap,"-1"表示不限swap。
- --no-cache:创建镜像的过程不使用缓存。
- --pull:尝试去更新镜像的新版本。
- --quiet, -q:安静模式,成功后只输出镜像 ID。
- --rm:设置镜像成功后删除中间容器。
- --shm-size:设置/dev/shm的大小,默认值是64M。
- --ulimit:Ulimit配置。
- --tag, -t:镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
- --network:默认 default。在构建期间设置RUN指令的网络模式。
2、实例演示
# Dockerfile内容
FROM java:8
MAINTAINER huangkui
ADD demo-0.0.1-SNAPSHOT.jar demo.jar
EXPOSE 9090
ENTRYPOINT ["java","-jar","demo.jar"]
# 先切换到Dockerfile的工作目录下,注意这里有个小数点
docker build -t java-demo:1 .
# 再运行容器
docker run --name=k8s-java-demo -d -p 9091:9090 java-demo:1
7、save
将指定镜像保存成tar归档文件。
# 将nginx:laster镜像导出至当前目录
# 命令 docker save -o nginx-save.tar nginx
docker save [OPTIONS] IMAGE [IMAGE...]
OPTIONS 说明:
- -o:输出到的文件。
8、load
导入使用docker save命令导出的镜像。
# 举例1 docker load < nginx-save.tar
# 举例2 docker load --input nginx-save.tar
docker load [OPTIONS]
OPTIONS 说明:
- --input, -i:指定导入的文件,代替STDIN。
- --quiet, -q:精简输出信息。
二、容器管理
1、run**
一般用于第一次使用镜像文件来创建一个容器,可以根据同一个镜像创建出不同的容器。
1、命令用法
# 举例 docker run --name=nginx -d -p 7777:80 nginx
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:
- -a stdin:指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项。
- -d:后台运行容器,并返回容器ID。
- -i:以交互模式运行容器,通常与 -t 同时使用。
- -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用。
- -P:随机端口映射,容器内部端口随机映射到主机的端口
- -p:指定端口映射,格式为:主机(宿主)端口:容器端口
- --name="nginx-lb":为容器指定一个名称。
- --dns 8.8.8.8:指定容器使用的DNS服务器,默认和宿主一致。
- --dns-search example.com:指定容器DNS搜索域名,默认和宿主一致。
- -h "mars":指定容器的hostname。
- -e username="ritchie":设置环境变量。
- --env-file=[]:从指定文件读入环境变量。
- --cpuset="0-2" or --cpuset="0,1,2":绑定容器到指定CPU运行。
- -m:设置容器使用内存最大值。
- --net="bridge":指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型。
- --link=[]:添加链接到另一个容器。
- --expose=[]:开放一个端口或一组端口。
- --volume , -v:绑定一个卷。
2、实例演示
# 查看镜像
hk-pc@hk-pc:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 0901fa9da894 3 days ago 132MB
ubuntu latest adafef2e596e 7 days ago 73.9MB
# 将http://localhost:9999/test 映射到 http://localhost:9998
# 后台运行在宿主机9999端口上
hk-pc@hk-pc:~$ docker run --name=nginx-temp -d -p 9999:80 nginx
b9aeb520cdcd3e4470e8bc538f75465237daf52fcd7bb674f755ca553f6d1f37
# 后台运行在宿主机9998端口上
hk-pc@hk-pc:~$ docker run --name=nginx-temp1 -d -p 9998:80 nginx
# 搭建本地registry镜像仓库
docker run --name=registry -d -p 5000:5000 -v /home/hk-pc/Kind/registry:/var/lib/registry registry
# 将本地镜像tag,使之匹配本地仓库
docker tag java-demo:1 localhost:5000/huangkui/java-demo
# 推送至本地仓库
docker push localhost:5000/huangkui/java-demo
# 进入容器bash
docker exec -it nginx-temp bash
# 更新源
root@b9aeb520cdcd:/etc/nginx# apt-get update
# 安装vim,以修改nginx.conf
root@b9aeb520cdcd:/etc/nginx# apt-get install vim
root@b9aeb520cdcd:/etc/nginx# vi nginx.conf
2、ps**
# docker不会为每一个容器单独复制一份镜像文件,因此容器的大小是可以忽略
# docker占空间的主要原因是镜像大小以及挂载卷
# 可以使用命令 docker system df 来查看空间占用情况
# 使用命令 docker system prune 来清理没有被使用的容器
docker ps [OPTIONS]
OPTIONS说明:
- -a:显示所有的容器,包括未运行的。
- -f:根据条件过滤显示的内容。
- --format:指定返回值的模板文件。
- -l:显示最近创建的容器。
- -n:列出最近创建的n个容器。
- --no-trunc:不截断输出。
- -q:静默模式,只显示容器编号。
- -s:显示总的文件大小。
3、start/stop/restart/kill
# 这里CONTAINER可以是容器名称,也可以是容器ID的前缀
docker start [OPTIONS] CONTAINER [CONTAINER...]
# stop相对于kill来说更为优雅和人性化,会留出的一定时间让容器做收尾工作,而stop不会
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]
4、rm
# 不加参数可移除 非运行状态下的容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS说明:
- -f:通过 SIGKILL 信号强制删除一个运行中的容器。
- -l:移除容器间的网络连接,而非容器本身。
- -v:删除与容器关联的卷。
5、pause/unpause
# 暂停容器内所有线程
docker pause [OPTIONS] CONTAINER [CONTAINER...]
# 恢复容器内所有线程
docker unpause [OPTIONS] CONTAINER [CONTAINER...]
6、create/exec
1、create
创建一个容器,而不运行它。
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
docker create --name=nginx-2 nginx
2、exec
在运行的容器中执行命令。
# 形如 docker exec -it nginx-2 bash 或 /bin/bash
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS说明:
- -d:分离模式: 在后台运行。
- -i:即使没有附加也保持STDIN 打开。
- -t:分配一个伪终端。
三、kubernetes
1、Pod管理
2、Service管理
未完待续。
总访问次数: 296次, 一般般帅 创建于 2019-07-14, 最后更新于 2021-01-14
欢迎关注微信公众号,第一时间掌握最新动态!