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 无论退出状态如何都