> 文档中心 > Docker系列教程(5)Docker 容器

Docker系列教程(5)Docker 容器


Docker 容器

运行容器

新建并启动容器

docker run -p 80:80 --name nginx \-e TZ="Asia/Shanghai" \-v /mydata/nginx/html:/usr/share/nginx/html \-d nginx:1.17.0
  • -p:将宿主机和容器端口进行映射,格式为:宿主机端口:容器端口;
  • –name:指定容器名称,之后可以通过容器名称来操作容器;
  • -e:设置容器的环境变量,这里设置的是时区;
  • -v:将宿主机上的文件挂载到宿主机上,格式为:宿主机文件目录:容器文件目录;
  • -d:表示容器以后台方式运行。
  • – link 容器互连
  • –restart =always 容器启动策略

创建容器

docker create

启动容器

docker start  $ContainerName

重启容器

docker restart $ContainerName

列出容器

  • 列出运行中的容器:
$ docker ps
  • 列出所有容器:
$ docker ps -a

停止容器

注意:$ContainerName表示容器名称,$ContainerId表示容器ID,可以使用容器名称的命令,基本也支持使用容器ID,比如下面的停止容器命令。

$ docker stop $ContainerName(or $ContainerId)

例如:

$ docker stop nginx#或者$ docker stop c5f5d5125

强制停止容器

$ docker kill $ContainerName

删除容器

  • 删除指定容器
docker rm $ContainerName
  • 按名称通配符删除容器,比如删除以名称mall-开头的容器
docker rm `docker ps -a | grep mall-* | awk '{print $1}'`
  • 强制删除所有容器
docker rm -f $(docker ps -a -q)

同步宿主机时间到容器

docker cp /etc/localtime $ContainerName:/etc/

报错****解决方法:

docker cp /usr/share/zoneinfo/Asia/Shanghai 2c87bcc41378:/etc/localtime

查看容器状况

资源情况

  • 查看指定容器资源占用状况,比如cpu、内存、网络、io状态:
docker stats $ContainerName
  • 查看所有容器资源占用情况:
docker stats -a
  • 容器进程
docker top name
  • 查看容器磁盘使用情况
docker system df
  • 查看所有网络
docker network ls

查看容器的日志

  • 查看容器产生的全部日志:
docker logs $ContainerName
  • 动态查看容器产生的日志:
docker logs -f $ContainerName

查看容器的IP地址

docker inspect --format '{{ .NetworkSettings.IPAddress }}' $ContainerName

导入和导出容器

 docker export -o name.tar name docker import name.tar  - test/tag 导入命令变成镜像

进入容器

docker exec -it $ContainerName /bin/bash

文件复制

复制容器内容到外部

docker container cp nginx:/etc/nginx /mydata/nginx/

复制外部内容到容器内

docker cp /mydata/nginx/ nginx:/etc/nginx

日志配置

设置日志文件最大容量、最大日志文件数

docker run ...... --log-opt max-size=10m --log-opt max-file=1

也可以在docker的配置文件中进行全局修改:新建或修改/etc/docker/daemon.json,添加log-dirver和log-opts参数

 { "log-driver":"json-file",  "log-opts": {"max-size":"10m", "max-file":"1"} }
 create ,只创建一个容器,处于created状态,未start

资源限制

内存

与操作系统类似,容器可使用的内存包括两部分:物理内存和swap

-m或者--memory:设置内存的使用限额--memory-swap:设置内存+swap的使用限额docker run -it -m 200M --memory-swap=300M ubuntu如果只有 -m 没有 --memory-swap,这后者默认为前者的两倍使用progrium/stress镜像来测试,该镜像可用于对容器执行压力测试docker run -it -m 200M --memory-swap=300M progrium/stress --vm 1 --vm-bytes 280M--vm 1:启动1个内存工作线程--vm-bytes 280M:每个线程分配280M内存

CPU限额

-c 或者 --cpu-shares,设定权重,不设定的话默认值为1024docker run --name "container_A" -c 1024 ubuntudocker run --name "container_B" -c 512 ubuntu当争抢CPU时,则A能抢到B的两倍。不争抢都是正常跑满docker run --name container_A -it -c 1024 progrium/stress --cpu 1docker run --name container_B -it -c 1024 progrium/stress --cpu 1--cpu 1 用来设置工作线程数量,只有1个cpu的话,1个工作线程就能将CPU压满此时,A分得66的cpu资源,B只有33。如果关掉A,则全部分给B。

更新容器

  • 将容器启动方式修改为always
docker container update --restart=always $ContainerName
  • 在容器启动时设置退出时总是重启容器
docker run -d --restart=always 

Docker 仓库

Docker Hub

目前 Docker 官方维护了一个公共仓库 Docker Hub。

大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。

注册

在 https://hub.docker.com 免费注册一个 Docker 账号。

登录和退出

登录需要输入用户名和密码,登录成功后,我们就可以从 docker hub 上拉取自己账号下的全部镜像。

$ docker login

退出

退出 docker hub 可以使用以下命令:

$ docker logout

拉取镜像

你可以通过 docker search 命令来查找官方仓库中的镜像,并利用 docker pull 命令来将它下载到本地。

以 ubuntu 为关键词进行搜索:

$ docker search ubuntu

使用 docker pull 将官方 ubuntu 镜像下载到本地:

$ docker pull ubuntu 

推送镜像

用户登录后,可以通过 docker push 命令将自己的镜像推送到 Docker Hub。

以下命令中的 username 请替换为你的 Docker 账号用户名。

$ docker tag ubuntu:18.04 username/ubuntu:18.04$ docker image lsREPOSITORY      TAG IMAGE ID     CREATED    ...  ubuntu   18.04      275d79972a86 6 days ago ...  username/ubuntu 18.04      275d79972a86 6 days ago ...  $ docker push username/ubuntu:18.04$ docker search username/ubuntuNAME      DESCRIPTIONSTARS  OFFICIAL    AUTOMATEDusername/ubuntu

妊娠纹产品大全