Docker 常用的命令整理一下供大家参考
1、Docker Run
启动一个新的容器。可以通过指定镜像、容器名、端口映射等参数启动运行容器。
例子:
docker run -d -p 8080:80 --name mynginx nginx
docker run -it centos /bin/bash
这个命令会启动一个名为mynginx的容器,使用nginx镜像,并将容器内80端口映射到主机的8080端口。
参数说明:
- -d:后台运行容器。
- -p:指定端口映射,格式为主机端口:容器端口。
- -it 使用交互的方法来运行起来。进入容器查看内容
- --name:指定容器名。 # 容器的应用,tomcat01,用来区分不同的容器。
- nginx:指定使用的镜像。
[ec2-user@172.28.1.1]# docker run -it centos /bin/bash
[ec2-user@172.28.1.1/]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
2、docker stop/start/restart/kill
启停容器可采用下面docker命令
docker stop 容器id
docker start 容器id
docker restart 容器id
docker stop 容器id
docker kill 容器id
3、docker rm
删除一个或多个容器。指定容器名或容器ID即可删除容器。
例如:docker rm mynginx
4、docker ps
列出当前正在运行的容器的信息
docker ps # 就是查看当前在运行的容器
docker ps -a #表示是说查看之前运行过的容器。
docker ps -a -n=1 # 表示是说查看之前运行的容器中的一个。
docker ps -aq # 查看所有容器的id号
5、docker images
docker images
列出本地镜像,可以查看本地已经下载的镜像
6、docker pull
从远程镜像仓库拉取镜像。使用该命令可以从远程镜像仓库下载镜像。
docker pull nginx
例如从远程镜像仓库下载最新版本的nginx镜像。
7、docker build
在本地构建一个新的镜像
docker build -t mynginx .
例如在当前目录下的Dockerfile文件中构建一个新的镜像,并命名为mynginx。
参数说明:
- -t:指定镜像名。
- .:指定构建上下文路径。
8、docker inspect
查看容器或镜像的详细信息。
docker inspect mynginx
9、docker logs
查看容器日志
docker logs mynginx
docker logs -tf --tail 条数 id # 用来查看日志信息。
10、docker exec/attach
docker exec -it mynginx bash
为mynginx的容器中打开一个交互式的终端。
参数说明:
- -it:以交互式方式打开终端。
- mynginx:举例的容器名。
docker attach 容器id
11、 docker network
管理 Docker 网络
docker network create mynetwork
上面的docker举例创建一个名为mynetwork的网络
12、docker volume
docker volume create my_data_volume
创建一个名为my_data_volume的数据卷
13、docker 删除容器
docker rm 容器id
docker rm -f $(docker ps -aq) # 删除所有的容器
Docker image prune -f 清楚过多的image缓存
14、docker search
docker search 镜像名字
15、docker-compose
使用 Docker Compose 管理多个容器应用。Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。
Docker Compose可以做到以下几点:
①提供工具用于定义和运行多个docker容器应用;
②使用yaml文件来配置应用服务(docker-compse.yml);
③可以通过一个简单的命令docker-compse up可以按照依赖关系启动所有服务;
④可以通过一个简单的命令docker-compose down停止所有服务;
⑤当一个服务需要的时候,可以很简单地通过--scale进行扩容;
例如下面典型的三层架构场景:
Compose 使用的三个步骤:
1. Dockerfile 定义应用程序的环境
2. docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行
3. 执行 docker-compose up 命令来启动并运行整个应用程序
docker -compose up -d
启动Docker Compose配置文件中定义的所有容器
compose Yml文件编写
1、Compose文件是一个定义服务,网络和卷的YAML文件
2、Compose文件的默认文件名为docker-compose.yml
与docker运行一样,默认情况下,Dockerfile中指定的选项(例如,CMD,EXPOSE,VOLUME,ENV)都被遵守,不需要在docker-compose.yml中再次指定它们,可以同时使用类似Bash的$ {VARIABLE} 语法在配置值中使用环境变量
Docker Compose 的示例:
cat >docker-compose.yml<<'EOF'
version: '3'
services:
mysql-server:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_pwd
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_pwd
networks:
- zabbix-net
command: ["--character-set-server=utf8", "--collation-server=utf8_bin", "--default-authentication-plugin=mysql_native_password"]
zabbix-java-gateway:
image: zabbix/zabbix-java-gateway:alpine-5.4-latest
restart: always
networks:
- zabbix-net
zabbix-server:
depends_on:
- mysql-server
image: zabbix/zabbix-server-mysql:alpine-5.4-latest
restart: always
environment:
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_pwd
MYSQL_ROOT_PASSWORD: root_pwd
ZBX_JAVAGATEWAY: zabbix-java-gateway
networks:
- zabbix-net
ports:
- "10051:10051"
zabbix-web-nginx-mysql:
depends_on:
- zabbix-server
image: zabbix/zabbix-web-nginx-mysql:alpine-5.4-latest
ports:
- "80:8080"
restart: always
environment:
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_pwd
MYSQL_ROOT_PASSWORD: root_pwd
networks:
- zabbix-net
networks:
zabbix-net:
EOF
使用docker-compose工具管理zabbix容器
# 创建容器并启动
.docker-compose up
# 停止并删除容器
.docker-compose down
# 创建容器并后台启动
docker-compose up -d
# 容器全部启动
docker-compose start
# 仅启动abbix-server服务对应的容器
docker-compose stop zabbix-server
# 容器全部停止
.docker-compose stop
# 仅停止zabbix-server服务对应的容器
.docker-compose stop zabbix-server
# 容器全部重启
.docker-compose restart
# 要注意端口冲突的问题,指定的services不应该有ports属性
.docker-compose scale zabbix-java-gateway=3