1、基本概念
Docker 三个重要概念:镜像 (image) 和 容器 (Container)、仓库 (Repository)、
格式:docker run [选项] 镜像
docker run --name nginx -p 80:80 -d nginx:1.22.1
下载进行格式:docker pull 用户名 仓库名 :tag标签-操作系统
docker pull datedog/nginx:1.24.0-alpine3.17
注:不带用户名的为官方镜像,带用户名的为非官方镜像。
2、docker命令行参数
Docker 操作命令分为: 管理命令与普通命令
1) 管理命令:为区分每个项目的命令, 比如说镜像操作, 就是以docker image 开头
2) 普通命令:是在docker 命令之后直接的命令, 比如说删除镜像 docker rmi
3) 管理命令相对于普通命令更清晰、严谨
# docker help
3、基础命令
docker info 守护进程的系统资源设置
docker search Docker 仓库的查询
#docker search nginx 仓库里跟nginx有关的镜像
docker pull Docker 仓库的下载
#docker pull nginx:tag(标签),不跟标签默认为latest(最新)
#docker pull registry.cn-beijing.aliyuncs.com/xxhf/mysql:5.7
仓库地址(域名或IP) 用户名/仓库名:tag标签
docker tag 旧镜像名 新镜像名 修改镜像名
#docker tag nginx:1.24.0-alpine rongan369/nginx:1.24.0-alpine
docker login 登录仓库(默认是官方仓库)
#登录仓库的验证信息存放在家目录下的 .docker/config.json文件
echo “config.json中登录仓库的加密字符串” | base64 -d
#还原非加密密码。
echo -n "root123" | base64
#base64方式加密
docker push 用户名/ 仓库名:tag 上传镜像到仓库
#docker push rongan369/nginx:1.24.0-alpine
注:只有镜像名在前面和仓库地址、用户名一致才可以push上传
docker images(image ls) Docker 镜像的查询(查看本地存储的镜像)
docker images 镜像名 查看单个镜像
docker images --no-trunc 查看容器的完整ID号
docker rmi 容器ID Docker镜像的删除
docker ps 查看正在运行的容器
docker ps -a 查看所有的容器(包括已结束退出的容器)
docker start/stop 容器名字/ID 容器启动停止
docker run [选项] 镜像名 容器的创建启动
docker save 镜像名 -o 镜像名的tar包 导出镜像
docker save 镜像名 > 镜像名.tar 导出镜像
docker load < 镜像名.tar 导入镜像
docker load -i 镜像名.tar 导入镜像
docker run --name MyWordPress --link db:mysql -p 8080:80 -d wordpress
命令提示符,命令关键字,起名字叫MyWordPress ,跟容器db做链接并且起个别名叫mysql,访问物理机8080会被端口映射到80,放到后台运行,镜像名字wordpress
#创建并启动容器
$ docker run [选项] IMAGE [COMMAND] [ARG]
#run:从镜像运行为容器
选项:
#--name=“容器新名字”:为容器指定一个名称
#-d:后台运行容器,并返回容器ID,也即启动守护式容器
#-i:以交互模式运行容器,通常与 -t 同时使用
#-t:为容器重新分配一个伪输入终端,打开一个tty终端通常与 -i 同时使用
#-P:随机端口映射
#-p:指定端口映射
#--restart=always 容器自动启动
#-h x.xx.xx 设置容器主机名(域名)
#--dns xx.xx.xx.xx 设置容器使用的 DNS 服务器
#--dns-search hongfu.com DNS 搜索设置,当无法解析域名时自动补齐搜索域
#--add-host 将新增解析记录自动添加到hosts文件中和
#--rm 服务停止时自动删除
例:docker run --name test -it --rm 镜像ID /bin/bash,进入test容器,执行完命令退出后容器自动删除
#--link 被链接容器名 使得容器和被链接容器之间可以相互通信
删除所有的容器:
方法一:
docker rm $(docker ps -a | awk '{print $1}' |grep -v CONTAINER ) --force
方法二:docker rm $(docker ps -a -q) --force
4、单一容器管理命令
每个容器被创建后,都会分配一个 CONTAINER ID 作为容器的唯一标示,后续对容器的启动、停止、修改、删除等所有操作,都是通过 CONTAINER ID 来完成,偏向于数据库概念中的主键
docker ps --no-trunc 查看容器完整ID
docker stop/start CONTAINERID 启动、停止容器
docker inspect NAME|ID 查看容器所有基本信息
精确查找:
#docker inspect -f "{{.NetworkSetings.Networks.bridge.IPAddress}}" 容器ID号
docker logs NAME|ID 查看容器日志
docker stats NAME|ID 查看容器所占用的系统资源
docker exec 容器名 容器内执行的命令 容器执行命令
docker exec -it 容器名 /bin/bash 登入容器的bash
docker attach 容器名| ID 登入容器,但是退出后容器也退出了
注:容器运行在后台时,需要是持续运行的应用程序,不然执行完后会结束进程。容器里面的进程一般都在前台运行。
5、#容器自动启动
对照组
$ docker start $(docker ps -a -q)
$ docker run --name always --restart=always -d 4a46
$ systemctl restart docker.service
$ docker ps -a
6、配置镜像加速器(如果文件不存在先创建)
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://ung2thfc.mirror.aliyuncs.com",
"https://mirror.ccs.tencentyun.com"
]
}
systemctl restart docker
docker info
7、容器生命周期管理
启动容器
查看正在运行的容器
停止容器
查看已停止的容器
启动已停止的容器
删除容器
8、什么是容器化的应用
所谓的“容器化的应用”,或者“应用的容器化”,就是指应用程序不再直接和操作系统打交道,而是封装成镜像,再交给容器环境去运行。
镜像就是静态的应用容器,容器就是动态的应用镜像