Docker - 常用命令

发布时间 2023-05-23 17:24:37作者: 疯狂的妞妞
1、Docker的启动和停止
启动docker:systemctl start docker
停止docker:systemctl stop docker
重启docker:systemctl restart docker
查看docker状态:systemctl status docker
开机启动:systemctl enable docker
 
2、容器相关
查看容器
 
查看正在运行的容器:docker ps
查看所有容器:docker ps -a
查看停止的容器:docker ps -f status-exited
查看最后一次运行的容器:docker ps -l
 
停止容器
docker stop [container_id]
 
启动容器
docker start [container_id]
 
重启容器
docker restart [container_id]
 
移除所有容器
docker rm $(docker ps -aq) 
 
移除单个容器
docker rm [container_id]
 
3、镜像相关
 
查看镜像
docker images 
 
移除镜像
docker rmi [image_id]
 
拉取镜像 有点类似于git检出项目
docker pull [iamge_name]
 
4、创建容器、镜像
创建容器
 
docker run -di --name=容器名称 -p 宿主机端口:容器端口 -e 环境变量
 
        --name:为创建的容器命名
        -i:表示运行容器
        -t:表示容器启动后会进入命令行。加入这两个参数后,容器就能登录进去,即分配一个伪终端
        -v:将主机的目录映射到容器内部
        -d:表示会创建一个守护式容器在后台运行(该方式创建容器后不会自动登录)
        -p:将容器端口映射到主机,可以同时做多个端口映射
-e:环境变量,环境变量不是必需的,根据镜像不同决定
 
创建容器的方式(三种):
        1、交互式方式创建:docker run -it --name=容器名称 镜像名称:标签
        2、守护式方式创建:docker run -di --namee=容器名称 镜像名称:标签
        3、登录守护式容器方式:docker exec -it 容器名称(或容器id)
 
迁移和备份
 
容器保存为镜像 :docker commit [容器名称] [镜像名称]
镜像备份(镜像保存为tar文件): docker save -o 名称.tar 镜像名称
镜像恢复和迁移:docker load -i 名称.tar
 
 
5、操作容器
 
进入容器内部
使用docker exec进入容器内,这种方法是最通用的方法。
docker attach 容器id,这种方法进入容器会存在一个问题,当多个终端同时进入容器时,所有窗口会同步显示,所以不太适合生产环境使用。
 
 
文件拷贝
将文件拷贝到容器:docker cp 需拷贝的文件或目录 容器名称:容器目录
将文件从容器内拷贝出:docker cp 容器名称:容器目录 需拷贝的文件或目录
目录挂载(详见 -v 命令,创建容器时将宿主机目录和容器目录映射,通过修改宿主机影响容器)
 
添加 -v 后面宿主机目录:容器目录
docker run -di -v 宿主机目录:容器目录 --name:容器名称 镜像名称:标签
 
如果共享多级目录,可添加-priviliegged=true解决权限不足的问题
 
 
查看容器运行的各种数据(IP等等):
docker inspect [containter_id/name]
 
直接输出ip地址:
docker inspect --format='{{.NetworkSettings.IPaddress}}' [containter_id/name]
 
 
6.容器设置开机自启
 
 
1、使用 docker run 命令运行时
 
增加 --restart=always 参数即可
 
2、使用 docker-compose 命令运行时
 
在 yml 文件中,需要自启动的 service 下
增加 restart: always 项目即可
 
3、已运行的容器修改其自启动策略
 
执行命令:
 
docker update --restart=always [containter_id]
docker container update --restart=[容器策略] [containter_id]
 
       # no 容器退出时不重启容器
       # on-failure 只有在非零状态退出时才重新启动容器
              --restart=on-failure:【重启次数】
       # always 无论退出状态如何都