1、镜像和容器
在使用Docker安装软件应用的时候,会自动搜索下载应用镜像(image)。镜像中不仅包含应用,还包含了应用运行时需要的环境、配置、系统函数库。Docker会在运行镜像时创建一个隔离环境,叫做容器(container)。
这样设计的好处在于,镜像文件可以忽略系统的限制,在不同的系统中都可以运行,因为镜像中已经包含了应用运行时所需要的环境。
Docker官方维护了一个镜像仓库:Docker Hub
2、创建并运行容器
docker run -d \
--name [容器名称] \
-p [映射到宿主机的端口]:[容器内端口] \
-e [key]=[value] \
[镜像名称(repository)]
- docker run:创建并运行一个容器,-d 让容器后台运行
- --name [容器名称]: 设置容器名称,必须唯一
- -p [映射到宿主机的端口]:[容器内端口]:设置端口映射,比如安装多个mysql,可以通过映射到不同的宿主机端口来区分。
- -e [key]=[value]:e=environment,环境参数,可以设置多个,每个应用参数不一样,可以去对应镜像的文档中查阅。
- [镜像名称(repository)]:需要运行的镜像名称,docker根据这个名称在本地或者远程仓库寻找镜像文件,完整写法时[镜像名称repository]:[TAG],TAG是版本号,不写默认为latest,最新版本。
- nginx
docker run -d --name nginxtest -p 80:80 nginx
- mysql
docker run -d --name mysqltest -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -e TZ=Asia/Shanghai mysql:5.7.43
3、常见命令
Docker基础命令主要是为了操作镜像和容器。具体命令可以参考官方文档 Reference documentation | Docker Docs
- docker pull [repository]:从远程仓库拉取镜像
- docker images :查看本地已下载镜像
- docker rmi [repository]:删除镜像
- docker start [repository]:运行容器,只是启动容器内应用的进程,而docker run每次都会创建一个容器,相当于在磁盘上新建了一个隔离环境。所以即使计算机重启了,容器还是存在的,不用反复docker run,只需要docker start即可
- docker stop [repository]:停止运行的容器,是指停止了容器内应用的进程
- docker ps:查看容器运行状态,这里的状态是对应的start和stop。默认显示的是start状态的容器。需要查看所有状态的,可以加上option:-a,表示查看所有状态的容器
# 格式化 docker ps结果,方便查看
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}} \t{{.Status}}\t{{.Names}}"
- docker rm [repository]:删除容器,不要和docker rmi混淆了,rmi是rm image删除镜像。
- docker logs [repository]:查看容器日志
- docker exec [repository]:进入容器,查看容器内部
# 进入容器,并且以bash命令行的形式,进行交互
docker exec -it [repository] bash