换源
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.xuanyuan.me",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://docker.unsee.tech",
"https://dockerpull.org",
"docker.1panel.live",
"https://dockerhub.icu"
]
}hello world
docker pull hello-world
docker images
docker run hello-world常用命令
docker pull <镜像名称>:<版本> 拉取镜像
docker images 查看所有镜像
docker run <镜像名称> 运行镜像(一个镜像可以创建多个容器)
docker ps -a 查看运行中的容器(-a是查看所有容器)
docker run --name=<容器名称> 设置容器名称
docker start <容器名称/Id> 开启停止的容器
docker stop <容器名称/Id> 停止容器
docker restart <容器名称/Id> 重启容器
docker rm <容器名称/Id> 删除停止的容器
docker run --rm <镜像名称> 停止容器立即删除容器
docker rmi <镜像名称> 删除镜像(前提是没有正在使用镜像运行的容器
docker run -it centos 注意这里需要添加-it参数进行启动,其中-i表示在容器上打开一个标准的输入接口,-t表示分配一个伪tty设备,可以支持终端登录,一般这两个是一起使用,否则base容器启动后就自动停止了。
docker run -p 8080:8080 端口映射(宿主机端口:docker内部端口)
docker commit <容器名称/ID> <新的镜像名称>
docker build -t <name>:<tag> . 使用当前路径下的 dockerfile 创建镜像
docker hub 推送
docker tag ubuntu-java-file:latest <username>/ubuntu-java:1.0
docker login -u <username>
docker push <username>/ubuntu-java:1.0 `
镜像结构
使用宿主机内核的 bootfs,使用镜像的 rootfs
在一个 docker 容器中,可能有很多镜像,层层叠加,最上层是一个可写容器层,整体抽象为一个数据层。
对于文件读取,从最上层往下一次寻找该文件;文件创建修改直接创建或修改在可写容器层;文件删除是从最上层往下一次寻找该文件并标记为删除。
dockerfile
启动一个 springboot 项目:
- 使用 maven 打包为 jar 包(如果提示“没有主清单属性”则把pom.xml中plugin>org.springframework.boot的skip改为false)
- 编写 dockerfile
FROM tanphoon/ubuntu-java:1.0
COPY target/DockerTest-0.0.1-SNAPSHOT.jar app.jar
CMD java -jar app.jar- 使用 dockerfile 生成镜像
docker build springboot-test:1.0 . - 创建容器并运行:
docker run -p 8080:8080 springboot-test:1.0
docker 网络
- none 单机网络
- bright 桥接网络
- host 共享网络
在创建容器时,使用 --network= 指定网络。