Skip to content
On this page

docker

常用命令

基础命令

bash
docker version              # 显示Docker的版本信息
docker info                 # 显示Docker的系统信息,包括镜像和容器的数量
docker 命令 --help          # 帮助命令

镜像命令

bash
# 查看所有已安装的镜像
docker images

# 搜索镜像
docker search images_id     
docker search images_id --filter=STARS=3000     # 搜索STARS大于3000的镜像

# 下载镜像 示例:docker pull mysql:8.0
docker pull images_id:tag   

# 删除镜像
docker rmi -f 镜像id
# 删除多个镜像
docker rmi -f 镜像id 镜像id 镜像id
# 删除全部的镜像
docker rmi -f $(docker images -aq)

容器命令

bash
# 查看容器元信息
docker inspect 容器id

# 进入运行中的容器
docker exec -it 容器id /bin/bash    # 进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach 容器id                # 进入容器正在执行的终端,不会启动新的进程!

# 设置容器自启动
docker update --restart=always 容器id

# 新建容器并启动
docker run [可选参数] image
|---------------------|------------------------------------------------------|
| --name="Name"       | 容器名字,用来区分容器                                   |
|---------------------|------------------------------------------------------|
| -d                  | 后台方式运行                                           |
|---------------------|------------------------------------------------------|
| -it                 | 使用交互方式运行,进入容器查看内容                         |
|---------------------|------------------------------------------------------|
| -it 容器id /bin/bash | 测试,启动并进入容器                                    |
|---------------------|------------------------------------------------------|
| -p                  | 指定容器的端口 示例: -p ip:主机端口:容器端口 -p 8080:8080 |
|---------------------|------------------------------------------------------|
bash
# 列出正在运行的容器
docker ps   

# 列出正在运行的容器+历史运行过的容器
docker ps -a

# 显示最近创建的?个容器
docker ps -a -n=?

# 退出容器且停止运行
exit

# 退出容器但不停止运行
Ctrl + P + Q 

# 删除容器
docker rm 容器id    # 不能删除正在运行的容器,如果要强制删除就是rm -f

# 删除所有的容器
docker rm -f $(docker ps -aq)         
docker ps -a -q|xargs docker rm

# 启动容器
docker start 容器id

# 重启容器
docker restart 容器id

# 停止容器
docker stop 容器id

# 强制停止容器
docker kill 容器id

网络相关

bash
# 查看网络
docker network ls

# 移除网络
docker network rm 容器id

# 创建自定义网络(指定ip段):
docker network create --subnet=172.20.0.0/16 mynet

# 创建自定义网络(不指定ip段):
docker network create mynet

其它命令

bash
# 后台启动容器
docker run -d 镜像名

# 查看容器进程信息
docker top 容器id

# 从容器内拷贝文件到主机上
docker cp 容器id:容器内路径   目的的主机路径

# 在容器内新建一个文件
touch test.java

常用安装

docker镜像库

安装php

1、先安装php对应版本的镜像

2、安装php7.3.6 容器

bash
docker run --restart=always --name php73 -v /Users/lee/www:/var/www/html -d -p 9000:9000 php:7.3.6-fpm

# 指定自定义network安装
docker run --restart=always --name php73 --network mynet -v /Users/lee/www:/var/www/html -d -p 9000:9000 php:7.3.6-fpm

# 指定自定义固定ip安装
docker run --restart=always --name php73 -v /Users/lee/www:/var/www/html -d -p 9000:9000 --net mynet --ip 172.20.0.3 php:7.3.6-fpm

安装nginx

1、先安装nginx对应版本的镜像

2、安装nginx 容器

bash
# (1)添加容器
docker run -d -p 80:80 --name nginx  nginx

# (2)复制配置文件到本地
docker cp nginx:/etc/nginx /Users/lee/docker/nginx/config/
docker cp nginx:/var/log/nginx /Users/lee/docker/nginx/logs/
docker cp nginx:/usr/share/nginx/html /Users/lee/docker/nginx/data/

# (3)删除容器
docker rm -f nginx

# (4)重新创建容器
docker run --name nginx -p 80:80 -v /Users/lee/docker/nginx/config/nginx/:/etc/nginx -v /Users/lee/www:/usr/share/nginx/html -v /Users/lee/docker/nginx/logs:/var/log/nginx -d nginx

# 重新创建容器:(指定自定义network方式)
docker run --name nginx --network mynet -p 80:80 -v /Users/lee/docker/nginx/config/nginx/:/etc/nginx -v /Users/lee/www:/usr/share/nginx/html -v /Users/lee/docker/nginx/logs:/var/log/nginx -d nginx

3、配置nginx

/Users/lee/docker/nginx/config/nginx/conf.d/default.conf中配置路由 域名映射即可。。

如果使用自定义网络的方式映射域名。可以直接使用:

bash
fastcgi_pass   php73:9000;
# 替代以下域名ip映射
fastcgi_pass   172.17.0.2:9000;

安装mysql

1、先安装mysql镜像

2、安装mysql容器

bash
# 安装命令:
docker run --restart=always -it -p 3306:3306 --name mysql -v /Users/lee/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

# 指定自定义network方式安装:
docker run --restart=always -it -p 3306:3306 --name mysql --network mynet -v /Users/lee/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

安装python

1、安装python镜像

2、安装python容器

bash
# 安装命令:
docker run  --restart=always -it --name python3 -v /Users/lee/docker/python:/usr/src/myapp  -w /usr/src/myapp -d python:latest

# 指定自定义network方式安装:
docker run  --restart=always -it --name python3 --network mynet -v /Users/lee/docker/python:/usr/src/myapp  -w /usr/src/myapp -d python:latest

3、vscode配置python

(1)安装插件:

  • docket 插件
  • remote-Containers 插件

(2)环境配置:

在vscode左下角点击"><"图标 --> Attach to running Containers … --> python3 即可进入远程的python环境。

本地的/Users/lee/docker/python既对应远程/usr/src/myapp文件夹 所有项目在该文件下操作

教程笔记

https://www.kuangstudy.com/bbs/1473206526041661442#header17 狂神视频笔记地址

创建网络(容器互联)

创建网络的目的是让容器之间互相通信时不会因为电脑重启造成ip更换。例如php中映射域名指向的容器ip一旦改变 就会失效

创建自定义网络(指定ip段):

bash
docker network create --subnet=172.20.0.0/16 mynet

创建自定义网络(不指定ip段):

bash
docker network create mynet

这样就创建了一个自定义网络mynet

详细教程:(查看容器互联章节)