Docker常用命令个人总结
关于安装
(1) 安装 Docker (如果使用的是 Docker 镜像,这步可省略)
yum install docker
systemctl start docker
systemctl enable docker
(2) 安装 Portainer 容器
docker volume create portainer_data
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
cd /usr/libexec/docker/
sudo ln -s docker-runc-current docker-runc
( 3 )在浏览器输入 公网IP:9000 就可以打开 Portaniner 安装界面。只需要设置管理员账户和密码,点击下一步;
( 4 )在新页面选择 Local 即可完成安装。
关于启动:
systemctl start docker //启动docker
systemctl stop docker //停止docker
systemctl restart docker //重启docker
systemctl status docker //查看docker状态
systemctl enable docker //开机启动
docker info //查看docker概要信息
关于镜像:
docker images //查看镜像
docker search 镜像名称 //搜索镜像
docker pull 镜像名称 //拉取镜像
例如:我要下载centos7镜像
docker pull centos:7
docker rmi 镜像ID //按镜像ID删除镜像
docker rmi `docker images -q` //删除所有镜像
关于容器:
docker ps //查看正在运行的容器
docker ps -a //查看所有容器
docker ps -l //查看最后一次运行的容器
docker ps -f status=exited //查看停止的容器
docker start/stop CONTAINER ID //开始/停止容器(CONTAINER ID 是容器的ID)
docker rm CONTAINER ID //删除容器
docker kill CONTAINER ID //直接关闭容器
创建与启动容器:
创建容器命令: docker run
-i: 表示运行容器
-t: 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登陆进去。即分配一个伪终端
–name: 为创建的容器命名
-v: 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机的目录),可以使用多个-v做多个目录或文件映射。
注意:最好做目录映射,在宿主机上做修改,然后共享到容器上
-d: 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t 参数,创建后就会自动进入容器)
-p: 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
(1)交互式方式创建容器
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
例如:
docker run -it --name=mycentos centos:7 /bin/bash
exit //退出当前容器
(2)守护式方式创建容器
docker run -di --name=容器名称 镜像名称:标签
例如:docker run -di --name=mycentos2 centos:7
ll //查看容器目录
登录守护式容器方式:
docker exec -it 容器名称 (或者容器ID) /bin/bash
值得注意的一点是:交互式方式创建容器,exit退出后,容器运行装填相应自动退出
而守护式方式创建容器,并不会相应退出,仍然处于运行状态
停止与启动容器
docker stop 容器名称(容器ID) //停止容器
docker start 容器名称(容器ID) //启动容器
文件拷贝
docker cp 需要拷贝的文件和目录 容器名称:容器目录
例如:
docker cp get-docker.sh mycentos2:/usr/local
也可以将文件从容器内拷贝出来
docker cp 容器名称:容器目录 需要拷贝的文件或目录
例如:
docker cp mycentos2:/usr/local/get-docker.sh get-docker2.sh
MySQL部署
( 1 ) 拉取mysql镜像
docker pull centos/mysql-57-centos7
( 2 ) 创建容器
docker run -di --name=tensquare_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
-p 代表端口映射,格式为宿主机映射端口:容器运行端口
-e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的登陆密码
( 3)进入mysql容器
docker exec -it tensquare_mysql /bin/bash
( 4 ) 登陆mysql
mysql -u root -p
( 5 ) 远程登陆mysql
菜鸟教程: https://www.runoob.com/docker/docker-install-mysql.html
tomcat部署
(1)拉取镜像
docker pull tomcat:7-jre7
(2)创建容器
创建容器 -p表示地址映射
docker run -di --name=mytomcat -p 9000:8080 -V /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
Nginx部署
(1) 拉取镜像
docker pull nginx
(2)创建Nginx容器
docker run -di --name=mynginx -p 80:80 nginx
(1) 拉取镜像
docker pull redis
( 2 ) 创建容器
docker run -di --name=myredis -p 6379:6379 redis
Redis部署
(1) 拉取镜像
docker pull redis
(2) 创建容器
docker run -di --name=myredis -p 6379:6379 redis
迁移与备份
(1)将容器保存为镜像,mynginx指容器名,mynginx_image指镜像名
docker commit mynginx mynginx_image
(2)基于这个镜像,再创建一个容器
docker run -di --name=mynginx2 -p 81:80 mynginx_images
(3)镜像备份
docker save -o mynginx.tar mynginx_image
(4)将mynginx_image镜像删除之前,应该先删除mynginx2容器
docker rmi mynginx_image (失败)
docker stop mynginx2
docker rm mynginx2
最后
docker rmi mynginx (成功)
(5)镜像恢复
docker load -i mynginx.tar
Dockerflie常用命令
命令 | 作用 |
---|---|
FROM image_name:tag | 定义了使用哪个基础镜像启动构建流程 |
MAINTAINER user_name | 声明镜像的创建者 |
ENY key value | 设置环境变量(可以写多条) |
RUN command | 是Dockerfile的核心部分(可以写多条) |
ADD source_dir/file dest_dir/file | 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压 |
COPY source_dir/file dest_dir/file | 和ADD相似,但是如果有压缩文件并不能解压 |
WORKDIR path_dir | 设置工作目录 |
具体实例参考第三篇文章:https://blog.youkuaiyun.com/weixin_42467515/article/details/97031370
Docker私有仓库
私有仓库搭建和配置:请查看第四篇文章:https://blog.youkuaiyun.com/weixin_42467515/article/details/97097880
参考链接:
Docker管理工具的镜像部署和使用、运维实战指南
参考链接:http://help.websoft9.com/docker-guide/default.html(重点)
Failed to start docker.service: Unit not found(Docker服务起不来)
参考链接:https://blog.youkuaiyun.com/qq_34508530/article/details/84989990
(Job for docker.service failed because the control process exited with)的解决方案
参考链接:https://blog.youkuaiyun.com/YooFale/article/details/84900712