Docker-容器

263 阅读2分钟

应用程序打包生产镜像后,上传到Docker仓库,再从Docker仓库将镜像下载到本地,以镜像为模板可以创建容器,容器是一个虚拟环境,它可以运行应用实例,一个容器就可以理解为一个应用的进程。

1.容器相关命令

1.1 新建并启动容器

docker run [选项] IMAGE

1.2 启动已停止的容器

docker start CONTAINER_ID

1.3 停止容器

docker stop CONTAINER_ID

1.4 重启容器,相当于先stop再start

docker restart CONTAINER_ID

1.5 强行停止容器

docker kill CONTAINER_ID

1.6 查看容器信息

# 查看运行中的容器
docker ps
# 查看所有容器
docker ps -a

1.7 查看指定容器信息

docker inspect NAME|CONTAINER_ID

1.8 删除指定容器

docker rm CONTAINER_ID

1.9 删除所有容器

docker rm -f $(docker ps -a -q)
-f:强行删除正在运行的容器

1.10 执行容器内部命令

# 容器内执行单条命令
docker exec NAME|CONTAINER_ID 容器内部命令
# 容器内连续执行多条命令,-it:以root身份进入容器,exit:退出
docker exec -it CONTAINER_ID /bin/bash
......
exit

1.11 查看容器占用的系统资源

docker stats NAME|CONTAINER_ID

2.实例

2.1 Docker运行nginx

docker run --name nginx -d -p 80:80 -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro -v ~/nginx/html:/usr/share/nginx/html -v ~/nginx/conf:/etc/nginx nginx

需要注意的是:挂载的conf目录为nginx配置文件目录,如果没有内容nginx会启动失败,建议从其它位置复制过来。

2.2 Docker运行MariaDB

sudo docker run --name mariadb \
  -v /data/mariadb/data:/var/lib/mysql \
  -p 3307:3306 \
  -e MYSQL_ALLOW_EMPTY_PASSWORD=true \
  -e MYSQL_ROOT_PASSWORD= \
  -e MYSQL_ROOT_HOST=% \
  -d mariadb:10.2

2.3 Docker运行Jenkins

sudo docker run --name jenkins \
--privileged=true \
-p 8080:8080 \
-p 50000:50000 \
-v ~/jenkins:/var/jenkins_home \
-d jenkins

3.容器资源限制

默认情况下,Docker容器会尽可能地使用宿主机资源(CPU、内存等),如果希望限制容器能够使用的资源,可以在创建容器的时候使用一些选项对资源进行限制。

使用docker run --help命令可以查看创建容器时的选项,其中-c、-m部分为CPU、内存相关选项

--cpu-shares int                 CPU shares (relative weight)
--cpus decimal                   Number of CPUs
--memory bytes                   Memory limit
--memory-swap bytes              Swap limit equal to memory plus swap: '-1' to enable unlimited swap

3.1 设定容器允许使用的CPU数量

docker run --cpus=4 IMAGE ...

3.2 设定容器使用CPU的相对权重

容器A、B使用CPU资源的占比为1:2

docker run --cpu-shares=1 IMAGE --name CONTAINER_A
docker run --cpu-shares=2 IMAGE --name CONTAINER_B

3.3 设定容器能够使用的内存大小

docker run --memory=2G IMAGE --name CONTAINER