docker使用yum安装,详见官方文档
docker服务管理:
systemctl restart docker
systemctl start docker
systemctl stop docker
systemctl status docker
镜像相关命令:
#镜像列表
docker images
#只查看镜像id列表
docker images -q
#镜像搜索
docker search [name]
#镜像拉取
docker pull [imageUrl:tag]
#镜像删除
docker rmi [name:tag|imageId]
#删除全部镜像
docker rmi `docker images -q`
#查看镜像详细信息
docker inspect [image:tag]
容器相关命令:
相关选项说明:
- -i:保持容器运行,通常与-t同时使用,容器创建后自动进入容,退出容器后容器自动关闭
- -t:为容器重新分配一个伪输入终端
- -d:以守护进行模式创建容器
- --name:给容器命名
#启动容器
docker run [image:tag]
#启动并进入容器内部,退出后容器也关闭 --name 设置容器名称
docker run -it --name=c1 iamge:tag /bin/bash
#查看正在运行的容器列表
docker ps
#查看所有容器列表 包括历史容器
docker ps -a
#后台启动容器(-d) 不进入容器内部
docker run -id --name=c1 image:tag
#进入容器内部
docker exec -it imageId /bin/bash
#关闭容器
docker stop [容器名或容器id]
#启动容器
docker start [容器名或容器id]
#删除容器
docker rm [容器id或容器名称]
#查看所有容器id列表
docker ps -aq
#删除所有容器
docker rm `docker ps -aq`
#查看容器参数
docker inspect [容器id或名称]
注意:正在运行的容器无法删除
容器存储卷相关命令
#启动容器时创建挂载卷 容器关闭后挂载目录依然存在
docker run -id --name=c1 -v /宿主机目录:/容器内目录 image:tag
#数据卷容器 宿主机上的挂载目录由docker自动分配
docker run -id --name=c3 -v /容器内目录 image:tag /bin/bash
#挂载数据卷容器
docker run -id --name=c2 --volumes-from c3 image:tag /bin/bash
部署应用案例
mysql
-e: 给容器环境添加环境变量
docker run -id -p 3307:3306 \
--name=mysqln \
-v /home/mysql/conf:/etc/mysql/conf.d \
-v /home/mysql/logs:/logs \
-v /home/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123123 \
mysql:5.7
镜像制作
容器转镜像
此操作不会将容器挂载的文件打包到镜像
但在容器内创建的文件会打包到镜像内
docker commit [容器id] [image:tag]
镜像导出为压缩包
docker save -o [target.tar] [image:tag]
从压缩包导入镜像
docker load -i [target.tar]
DockerFile文件创建镜像
docker build -f [dockerfile] -t [image:tag] [targetDir]
镜像打标签:上传到本地仓库
新的镜像名中一般包含仓库url和目录:192.168.18.3/library/image:latest
docker tag [oldImage:tag] [newImage:tag]
镜像推送到仓库
docker push [newImageTag]
Dockerfile编写相关
一般来说,应该会将 Dockerfile 置于一个空目录下,或者项目根目录下。如果该目录下没有所需文件,那么应该把所需文件复制一份过来。如果目录下有些东西确实不希望构建时传给 Docker 引擎,那么可以用 .gitignore 一样的语法写一个 .dockerignore,该文件是用于剔除不需要作为上下文传递给 Docker 引擎的
Dockerfile 的文件名并不要求必须为 Dockerfile,而且并不要求必须位于上下文目录中,比如可以用 -f ../Dockerfile.qf 参数指定某个文件作为 Dockerfile。
通过dockerfile的 VOLUME 指令可以在镜像中创建挂载点,这样只要通过该镜像创建的容器都有了挂载点。
还有一个区别是,通过 VOLUME 指令创建的挂载点,无法指定主机上对应的目录,是自动生成的
FROM ubuntu
MAINTAINER hello1
VOLUME ["/data1","/data2"]
docker 网络
可以查看网络列表
docker network ls
查看对应网络的配置。
docker network inspect <container id>