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

进大厂! 欢迎关注微信公众号,第一时间掌握最新动态!