应用程序打包生产镜像后,上传到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