拉取镜像
docker pull REPOSITORY:tag。tag为版本号,默认为latest表示最新版。
运行容器
docker run REPOSITIRY。不指定参数下运行在attach mode下,terminal被阻塞。 [-d,–detach] 容器在terminal的后台运行,此时会打印容器id [-p,–publish] -p 80:8080,在主机和dokcer容器中创建桥接网络 [–name] 只指定容器name
docker stop containerId,停止一个容器。停止的容器可以使用相同的id再次启动。
docker start containerId 重启容器,重启的容器拥有docker run时所有的属性
Docker命令
docker ps
查看所有运行的容器 [-a] 显示所有容器,包括运行和停止的
docker log [id|name]
查看容器日志
docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
在运行的容器中运行一个命令 docker exec -it 5af5c338dc81 /bin/bash 进入容器命令行。exit可以退出 [-it] 以交互式命令运行(interactive terminal)
Docker network
docker network ls
docker network create [name] 创建一个网络,让容器之间可以仅通过容器名称来通讯.在需要ip和端口的地方可直接用servicename替代
docker run
-p 27017:27017
-d
-e MONGO_INITDB_ROOT_USERNAME=admin
-e MONGO_INITDB_ROOT_PASSWORD=admin123
–name mongodb
–net mongo-network
mongo
docker run -d -p 8081:8081
-e ME_CONFIG_MONGODB_AUTH_USERNAME=admin
-e ME_CONFIG_MONGODB_AUTH_PASSWORD=admin123
–net mongo-network
–name mongo-express
-e ME_CONFIG_MONGO_SERVER=mongodb
-e ME_CONFIG_MONGODB_URL=”mongodb://mongodb:27017” mongo-express
Docker Compose
运行多容器应用的工具。配置文件中不用配置网络,Docker会自己处理
version: "3.9" # optional since v1.27.0
services:
mongodb: # name of the container
image: mongo # image
ports: # -p
- 27017:27017 # HOST:CONTAINER
environment:
- MONGO_INITDB_ROOT_USERNAME: admin
- MONGO_INITDB_ROOT_PASSWORD: admin123
mongo-express:
image: mongo-express
ports:
- 8081:8081
environment:
- ME_CONFIG_MONGODB_ADMINUSERNAME: admin
- ME_CONFIG_MONGODB_ADMINPASSWORD: admin123
- ME_CONFIG_MONGODB_SERVER: mongodb
docker-compose -f FILE COMMAND [-f] [COMMAND] up运行,down移除容器和network
Dockerfile
构建docker镜像的文件
FROM
所有dockerfile的第一个语句,基于其他镜像
ENV PROPERTY=VALUE
设置环境变量
RUN
执行Linux命令
COPY
将本机文件复制到镜像中
CMD
一个dockerfile只能有一个CMD命令,可以表示程序的entry point
镜像构建
在Dockerfile所在文件打开terminal
docker build -t my-app:1.0 . [t] tag
Dokcer Repository
登录
docker login –username={username} {url}
重命名镜像
docker tag [ImageId] domain:host/url/my-app:[镜像版本号]
推送镜像
docker push fullImageName
Volumes
将物理路径挂载到docker镜像
Run挂载
docker run -v [host-directory]:[container-directory] [image] [-v] 将物理路径挂载到镜像中 这种方式称为Host Volume
Anonymous Volumes
docker run -v [container-directory] [image] 由docker自动挂载到host目录中,自动创建名为/var/lib/docker/volumes/random-hash/_data
Name Volumes
docker run -v [name]:[container-directory] [image] 生产环境中最常用的
Volumes路径
/var/lib/docker/volumes