Docker容器技术—常用命令介绍
Docker常用命令
1.docker pull 镜像名称:镜像标签 拉取镜像
2.docker run 运行镜像
- –rm 容器停止之后立即删除容器
- -i 表示运行容器
- -it 运行之后进入到交互模式
- –name xxx 给容器进行命名
- -e 配置环境变量
- -d 后台运行
- -p 33060:3306 将本地的33060端口映射到容器内部的3306端口
- -v 本地路径:容器内部的路径 将本地的目录映射到容器内部
- –privileged=true 解决挂载目录没有权限的问题
- –network 网络组名称 容器之间进行相互通信
- –privileged 使用该参数,container内的root拥有真正的root权限。
否则,container内的root只是外部的一个普通用户权限。
3.docker ps 查看正在运行的容器
4.docker ps -a 查看所有的容器
5.docker logs 容器名称/容器id 查看启动日志
6.docker exec -it 容器名称/容器id bash 进入容器的内部
7.docker inspect 容器名称/容器id 分析容器的具体信息
8.docker run -d bash -c ‘要执行的命令1 && 要执行的命令2’ 运行镜像后要执行的命令(注意:启动dockerfile构建的镜像时在后面加上bash -c ‘要执行的命令1 && 要执行的命令2’,会忽略掉dockerfile中CMD的内容)
9.docker cp 本地的文件目录 镜像名称:镜像目录 ——将本地的文件拷贝到容器内
10.docker inspect 容器名称——查看容器的ip地址
11.docker load -i 镜像压缩文件——将压缩文件加载为docker镜像
镜像管理
1、docker images 查看所有镜像
2、docker search 镜像名 搜索镜像
3、docker pull 镜像名:版本号 拉取镜像
4、docker history 镜像名 查看镜像创建历史
5、docker rmi 镜像名:标签 删除镜像
6、docker tag busybox:latest busybox:test 更改镜像名
Docker镜像构建
一、Dockerfile参数详解
- FROM –依赖于哪些镜像
- WORKDIR –指定工作的上下文
- COPY –把一些文件或目录添加到镜像中
- RUN –要运行的相关命令
- CMD –最后要运行的指令
- ENV key value –设置环境变量
- ADD –将本地的文件复制到镜像内部(如果是一个压缩文件,将会在复制后自动解压)
- COPY –与ADD相似(但是如果复制的是压缩文件,不会自动解压)
二、docker build参数详解
- -t:为构建的镜像设置标签
- –build-arg:传递构建参数到Dockerfile中
- -f:指定要使用的Dockerfile的名称,如果文件名默认叫做dockerfile可以不用写
- –network:指定构建时使用的网络配置
- –no-cache:忽略缓存,强制重新构建镜像
- –pull:在构建之前尝试拉取最新的基础镜像
- –target:指定构建过程中的目标阶段
docker build官方文档:https://docs.docker.com/engine/reference/builder/
docker网络组的使用
当你在Docker中使用网络组时,可以通过以下简单的例子来理解其作用。假设你有两个容器,一个运行Web应用程序,另一个运行数据库服务。
首先,创建一个网络组:
1 | docker network create mynetwork |
接下来,运行一个容器并将其连接到这个网络:
1 | docker run --name webapp --network mynetwork -d -p 8080:80 your-webapp-image |
这会运行一个名为 “webapp” 的容器,将其连接到 “mynetwork” 网络,并将容器的端口 80 映射到主机的端口 8080。
然后,运行另一个容器,比如一个运行数据库的容器,并将其连接到相同的网络:
1 | docker run --name database --network mynetwork -d -e MYSQL_ROOT_PASSWORD=password your-db-image |
现在,你有两个容器运行在同一个网络中。它们可以通过容器名称相互通信,而无需关心它们各自的 IP 地址。
例如,在Web应用程序容器中,你可以配置数据库连接为:
1 | mysql -h database -u root -p |
这里,”database” 是另一个容器的名称,Docker网络组的内置 DNS 服务会将其解析为相应的 IP 地址。
通过这种方式,你可以轻松地创建多个容器,使它们能够在同一个网络中相互通信,而不受主机网络或其他容器的影响。这种隔离和组织方式使得构建和管理复杂的应用程序更为灵活和方便。