先谈一下对镜像、容器的理解,镜像是个程序,是静止的,启动后就变为容器,容器与镜像之间可以互相转换;docker在下载镜像时,是从某个源下载的,默认是docker官方源,官方源在外国下载慢,通常使用国内源。镜像是有路径的,如果镜像有路径,那么拉取时要指定路径。
docker-compose是容器的编排工具,比如先启动哪个容器,后启动哪个容器,容器之间的依赖顺序,是干这些的。compose[kəmˈpəʊz]的意思是作曲、创作(音乐)的意思,恰如其分的展示了它的作用。
指定镜像源
编辑/etc/docker/daemon.json
,
{
"registry-mirrors": ["https://reg-mirror.qiniu.com"]
}
然后,重启docker,重启docker后,正在运行的容器也会关闭,需要重新启动。
systemctl restart docker
搜索镜像
docker search imageName
下载镜像
docker pull imageName
下载某版本镜像
docker pull imageName:tag
查看镜像
docker images
查看运行的容器
docker ps
查看全部容器(包含停止的)
docker ps -a
这里的-a
是-all
的意思。
创建容器并运行
创建容器并运行有两种,一种是运行后进入交互模式,一种是后台运行不进入交互模式。
- 有交互
//进入交互模式
docker run -it --name containername imagename /bin/bash
-i,interactive, 保持标准输入打开,进入交互模式
-t,tty,分配pseudo-tty
-e,设置环境变量key=value格式
-p,指定host与container的端口映射,格式 hostport:containerport
-it
一般与 /bin/bash
同时使用,如退出交互模式,ctrl+p+q
- 无交互
//容器在后台运行并打印容器id
docker run --name containername -d imagename
停止容器
docker stop cotianername/containerid
启动容器
docker start cotianername/containerid
删除容器
docker rm cotianername/containerid
进入容器
docker exec -it containername/containerid /bin/bash
退出容器
exit
这张图对docker命令总结的比较全,容器与镜像之间互相转换、容器与宿主机之间传输文件、根据dockerfile创建镜像、从私服推送/拉取镜像、
查看端口映射
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}"
会输出类似以下结果
CONTAINER ID NAMES PORTS
1234567890AB container1 0.0.0.0:8080->80/tcp
9876543210BA container2 0.0.0.0:8000->8000/tcp, 0.0.0.0:9000->9000/tcp