Docker引擎的安装: https://docs.docker.com/manuals/
一、Docker命令
1.启动: sudo systemctl start docker; 查看正在运行中的应用: docker ps;
2.系统开机/重启时也启动docker: systemctl enable docker;
3.镜像搜素: docker search xxx; 镜像拉取: docker pull xxx; 拉取指定版本镜像: docker pull xxx:latest;
4.查看已存在镜像: docker images; 查看镜像的不同版本可访问 http://hub.docker.com/; 删除镜像 docker rmi 镜像id/xxx:latest;
5.启动镜像时携带参数: docker run [options] xxx; 后台启动镜像: docker run -d xxx;
6.后台运行切端口映射 docker run -d -p 88:80 nginx;(88为主机端口,80为内部容器端口,内部端口可重复);
7.停止运行镜像: docker stop xxx; 运行镜像 docker start xxx; 重启镜像 docker restart xxx;
8.查看镜像运行的状态: docker stats xxx; 查看镜像日志: docker logs xxx; 删除镜像: docker rm xxx;
9.进入容器中的某个目录: docker exec -it mynginx /bin/bash; -it为交互模式;
10.提交镜像: docker commit [options] CONTAINER [REPOSITORY][:TAG];
11.保存镜像: docker save [options] IMAGE; 加载镜像: docker load [options];
12.客户端登录docker社区: docker login; 镜像改名 docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG];
13.推送镜像到社区个人主页 docker push xxx;
14.卷操作: docker volume; 列出所有卷: docker volume ls; 创建卷: docker volume create myvolume; 查看某个卷的信息: docker volume inspect myvolume;
15.查看某个容器的信息 docker container inspect 6e69c3b4cd5b;
16.网络相关命令docker network; 创建网络: docker network cerate mynet;
17.docker compose相关。批量容器管理首次上线:docker compose up -d 批量容器管理下线:docker compose down
18.compose启动 docker compose start x1 x2; compose停止 docker compose stop x1 x2;
二、Docker储存
1.目录挂载: 在docker run时通过 -v命令,将外部目录挂载到容器指定目录,以便更安全的保存数据。如: -v /my/nginx/html:/user/share/nginx/html 命令将外部的/my/nginx/html目录进行挂载。此时以修改命令修改容器内部地址,外部实体文件,也会被修改,内外部修改都生效。外部目录挂载后会覆盖内部目录中原有的文件。
2.卷映射: 在docker run时通过 -v命令,映射一个卷到内部目录,以便更安全的保存数据。如: -v ngconf:/etc/nginx,其中ngconf就是卷名。以卷映射启动时,卷中文件初始化是以内部文件为准的。如果要改卷中的配置文件,其地址在docker约定的目录,/var/lib/docker/volumes/<volume-name>中。同样改外部卷中的文件,内部也生效。
三、Docker网络
1.默认网络: docker应用有一个默认网关docker0,其内部的所有容器,都在这个默认网关内。每个容器会分配一个唯一ip,容器间可以通过这个ip访问。容器ip存在变化的可能,考虑用固定的域名访问,但默认网络docker0不支持域名访问,可以创建自定义网络,并以固定的域名进行访问。
2.自定义网络
通过docker network cerate mynet;创建网络后,docker run时,通过 --network参数可指定运行的网络,如:
容器app1: docker run -d -p 88:80 --name app1 --network mynet nginx;
容器app2: docker run -d -p 99:80 --name app2--network mynet nginx;
在app2中可以通过http://app1:80 来访问app1,即以容器名作为域名来访问容器。
四、Docker Compose
通过以上各种命令,我们配置、应用和管理容器较为不便,可以通过Docker Compose批量管理和配置容器。基于.yaml的配置文件进行管理,就是将以前的命令都写进配置文件进行管理和分享;文件编写格式参考https://docs.docker.com/compose/compose-file/。创建的多个容器默认在一个网络环境.
1.示例,如管理mysql和redis:
services:
mysql:
image: mysql:8.3.0
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
environment:
- MYSQL_ROOT_PASSWORD=asd1234
- MYSQL_LOWER_CASE_TABLE_NAMES=0
ports:
- "3306:3306"
volumes:
- ./data/mysql:/var/lib/mysql // 若使用卷挂载,需要将卷名在全局volumes属性下声明一下
restart:always // 开机自启动
redis:
image: redis:7.4
ports:
- "6379:6379"
volumes:
- ./data/redis:/data
depends_on:
- mysql //有依赖时,可设置先启动mysql
2.yaml文件修改后,可以增量更新启动:
docker compose -f compose.yaml up -d
五、Dockerfile
1.dockerfile用于制作镜像,需要编写相关指令来实现;可参考 https://docs.docker.com/reference/dockerfile/ 镜像一般包含基础环境,软件包,启动命令;
2.docker的镜像存储机制: 分层存储机制,不同镜像可共用部分只存储一份。
欢迎转载:转载时请注明本文出处及文章链接