dockerhub地址
登录
docker login
最常用命令
-v 本地目录:容器内的目录
-p 外部端口:容器内的端口
-u 指定用户
-d 后台进程守护
--entrypoint /bin/sh 设置默认的进入容器后的执行命令
# /e对应的就是window的e盘
docker run -itd -p 9528:9528 -v /d/work/vue:/std/vue node:12.16.1 /bin/bash
docker run -d -p 9528:9528 -v /d/work/vue:/std/vue node:12.16.1 /bin/bash
docker run -v /tmp/skeleton:/hyperf-skeleton -p 9501:9501 -u root -it --entrypoint /bin/sh hyperf/hyperf:7.4-alpine-v3.11-swoole
容器(container)
获取容器
docker pull ubuntu
导出容器
docker export 1e560fca3906 > ubuntu.tar
导入容器,从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1
cat docker/ubuntu.tar | docker import - test/ubuntu:v1
指定目录或url导入容器
docker import http://example.com/exampleimage.tgz example/imagerepo
删除容器
docker rm -f 容器id或name
docker rm $(docker ps -aq) 删除所有容器
查看容器
docker ps # 正在运行的容器
docker ps -a # 查看所有容器
启动停止运行的容器
docker start 容器id或name
进入到运行的容器内部
attach
进入容器后使用exit
退出容器同时会停止该容器(下面有退出容器并不停止的命令)
exec
进入容器使用exit
退出容器不影响容器运行
如何退出正在运行的容器内部而不停止容器运行
ctrl + p + q
docker attach 容器id或name
docker exec -it 容器id或name /bin/bash
挂载目录和端口映射(重要)
-v 本地目录:容器内的目录
-p 外部端口:容器内的端口
# /e对应的就是window的e盘
docker run -itd -p 9528:9528 -v /d/work/bufan/student_manager_vue:/std node:12.16.1 /bin/bash
docker run -d -p 9528:9528 -v /d/work/bufan/student_manager_vue:/std node:12.16.1 /bin/bash
停止容器
docker stop 容器id或name
docker stop $(docker ps -aq) # 停止所有容器
重启容器
docker restart 容器id或name
更新容器自重启
docker update xxx --restart=always
查看某个容器日志
docker logs -f 容器id或name
进入容器进行交互模式(-i -t
可以写为-it
)
--rm 参数可以在退出容器是自动删除容器,测试常用
docker run -i -t --rm ubuntu:15.10 /bin/bash
后台模式运行容器
docker run -d ubuntu:15.10 xxx
在使用 -d 参数时,容器启动后会进入后台,此时想要进入容器,推荐大家使用 docker exec 命令,因为此命令退出容器终端时,不会导致容器的停止
参数 -m 50M 可以限定容器使用内存
docker exec -it 243c32535da7 /bin/bash
端口映射
docker run -d -p 5001:5000 training/webapp python app.py # 将内部的5000端口映射到外部的5001端口
查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号
docker port id或name
查看指定容器的进程
docker top id或name
容器联通(不推荐,可能已经废弃)
docker run -it --name busybox1 busybox
dokcer run -it --link busybox1:busybox1 --name busybox2 busybox
容器保存为镜像
docker commit 68899a950e98(容器名称或ID) lbw153(dockerhub的用户名)/testProject(新的镜像名称)
镜像(image)
列出本机镜像
docker images
查询镜像
docker search xxx
删除镜像
docker rmi xxx
docker rmi $(docker images -q) 删除所有镜像
基于已有容器上创建自定义的容器
docker commit -m="update" -a="sorry" e218edb10161 sorry/ubuntu:v2
-m: 提交的描述信息
-a: 指定镜像作者
e218edb10161:容器 ID或名字
runoob/ubuntu:v2: 指定要创建的目标镜像名
通过Dockerfile
创建一个镜像
docker build -t sorry/test:0.1 .
-t :指定要创建的目标镜像名
. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
- 给镜像打上标签
docker tag 镜像id sorry/test0.1:dev
- 推送镜像到dockerhub
docker push 镜像名称
端口映射
- 映射外部端口
docker run -d -P training/webapp python app.py
docker run -d -p 5000:5000 training/webapp python app.py
-P :是容器内部端口随机映射到主机的高端口。
-p : 是容器内部端口绑定到指定的主机端口。
- 指定映射地址
docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
- 指定连接类型,默认是tcp连接,可以加上udp参数
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
容器互联
新建网络
docker network create -d bridge test-net
-d 或 --driver:参数指定 Docker 网络类型,有 bridge、overlay。
运行一个容器并连接到新建的 test1 网络:
docker run -itd --name test1 --network test1 ubuntu:15.10 /bin/bash