基础操作-镜像
- 从仓库获取镜像
搜索镜像:docker search image_name
搜索结果过滤:
是否是官方:
docker search --filter "is-official=true" image_name
是否是自动化构建
docker search --filter "is-automated=true" image_name
大于多少颗星
docker search --filter stars=3 iamge_name
下载镜像:docker pull image_name
- 本地镜像的查看:
docker iamges
- 本地镜像的删除:
docker rmi image_name
基础操作-容器
- 创建容器:
docker run -itd --name container_name image_name
-i
表示以交互模式运行容器;
-d
表示后台运行容器,并返回容器ID;
-t
为容器指定名称;
--name
为容器指定名称 - 查看容器(运行中的):
docker ps
- 查看容器(包括已停止的):
docker ps -a
- 启动容器:
docker start container_name/container_id
- 停止容器:
docker stop container_name/container_id
- 重启容器:
docker restart container_name/container_id
- 删除容器:
docker rm container_name/container_id
容器的修改及保存
- 进入容器:
docker exec -it container_name/container_id /bin/bash
- 退出容器:
exit
- 提交修改:
docker commit -a "author" -m "message" container_name/container_id new_image_name:tag_name
参数说明
-a
:参数可选,用于指定作者,可以写你的名字
-m
:参数可选,提交信息,可以说以下你做了那些修改
container_id
:该参数为被修改的容器ID
new_image_name
:此为新镜像的名字,可自定义
tag_name
:此为新镜像的标签,可不写,不写时标签默认为lastet
容器进阶操作
- 端口映射
docker run -itd -p 宿主机端口号:容器端口号
- 文件挂载
docker run -itd -v 宿主机文件路径:容器文件路径
- 将容器的文件复制到本地
docker cp 容器名:容器文件名 宿主机文件名
- 将本地的文件复制到容器
docker cp 宿主机文件名 容器名:容器文件名
- 容器互联
docker run -itd --link 被关联的容器名字:被关联容器在容器中的别名 --name container_name image_name
修改mysql密码(MYSQL8)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
Dockerfile
- 什么是Dockerfile
Dockerfile
就是名为Dockerfile
的文件,文件中包含一些linux命令,Docker
通过读取文件中的命令来组建镜像。 - Dockerfile文件结构
Dockerfile
一般分为四部分:基础镜像信息,维护者信息,镜像操作指令和容器启动时执行指令,#为Dockerfile
中的注释。 - 运行Dockerfile
docker build -t image_name:tag_name .
也可以通-f
参数来指定Dockerfile文件位置
docker build -f /path/Dockerfile -t image_name:tag_name .
搭建PHP开发环境
- 下载
mysql
,php:7.3-fpm
,nginx
镜像 - 启动mysql容器:
docker run -itd -v /宿主机目录/mysql:/var/lib/mysql -p 33066:3306 --name=mysql -e MYSQL_ROOT_PASSWORD=password mysql
- 启动php容器:
docker run -itd --link mysql:mysql -v /宿主机/代码目录:/var/www/html --name=php php
- 启动nginx容器:
docker run -itd -p 宿主机端口号:容器端口号 -v /宿主机/代码目录:/var/www/html --link php:php --name=nginx nginx