Docker的启动和停止
启动docker
systemctl start docker
停止docker
systemctl stop docker
重启docker
systemctl restart docker
查看docker的状态
systemctl status docker
开机自启动
systemctl enable docker
查看docker的概要
docker info
创建与启动容器
创建容器的命令docker run
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的高端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷
1.交互式方式创建容器
docker run -it --name=容器名称 镜像名称:标签 /biin/bash
打开一个容器内部的shell窗口,这时我们通过ps命令查看,发现可以看到启动的容器,状态为启动状态
而且当前页面为容器内部
退出当前容器
exit
2.守护式创建容器
docker run -di --name=容器名称 镜像名称:标签
登录守护式容器的方式
docker exec -it 容器名称(或者容器ID) /bin/bash
Docker 重启
systemctl restart docker.service
docker image ls 查看镜像
在docker-compose.yaml当前目录执行命令
docker-compose up 启动会自动下载里面配置的相关镜像,并启动
关闭docker-compose down
查看容器
查看正在运行的容器
docker ps
查看所有容器
docker ps -a
查看最后一次运行的容器
docker ps -l
查看停止的容器
docker ps -f status-exited
启动容器
docker start 容器名称(或者容器的id)
文件拷贝
docker cp 需要拷贝的文件或者目录 容器名称:容器的目录
也可以将文件从容器中拷贝出来
docker cp 容器名称:容器目录 需要拷贝的文件或者目录
目录挂载
我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而影响容器.
创建容器 添加-v参数后边为 宿主机目录:容器目录,例如,
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7
如果你共享的是多级目录,可能会出现权限不足的情况.
这是因为centos7中的安全模块selinux把权限禁掉了,我们需要添加--privileges=true 来解决挂载的目录没有权限的问题
查看容器的iP地址
我们可以通过以下命令查看容器的各种数据
docker inspect 容器名称(容器Id)
也可以直接执行下面的命令直接输出ip地址
docker inspect --format=’{{.NetworkSettingss.IPAddress}}’ 容器名称(容器id)
mysql部署
拉取镜像
docker pull centos/mysql-57-centos7
创建容器
docker run -di --name=test_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7
进入容器
docker exec -it test_mysql /bin/bash
登录mysql
mysql -u root -p
tomcat部署
docker pull tomcat
拉取nginx的镜像
docker pull nginx
创建容器
docker run -di --name=test_nginx -p 80:80 nginx
拉取redis镜像
docker pull redis
创建容器
docker run -di --name=test_redis -p6379;6379 redis
镜像的备份与迁移
容器保存为镜像
docker commit test_nginx test_nginx2
我们可以将镜像保存为tar文件
docker save -o test_nginx.tar test_nginx2
镜像恢复与迁移
docker load -i test_nginx.tar
docker 私有仓库的搭建与配置
拉取私有仓库的镜像
docker pull registry
启动私有仓库的镜像
docker run -di --name=test_registry -p 5001:5000 registry
浏览器访问地址********:5001/v2/_catalog 看到如下表示私有仓库搭建成功并且内容为空
{"repositories":[]}
修改daemon.json文件添加
{"insecure-registries": ["10.68.15.115:5001"]}
Dockerfile创建jdk1.8的镜像
当前目录创建Dockerfile文件,并拷贝jdk-8u131-linux-x64.tar.gz压缩包到当前目录
FROM centos:7
MAINTAINER unimas
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u131-linux-x64.tar.gz /usr/local/java/
ENV JAVA_HOME /usr/local/java/jdk1.8.0_131
ENV JRE_HOME $JAVA_HOME/jre
ENV CALSSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
运行命令创建镜像
docker build -t='jdk1.8' .
-t指定镜像名称 .点是指当前目录
标记镜像
docker tag jdk1.8 10.68.15.115:5001/jdk1.8
上传镜像
docker push 10.68.15.115:5001/jdk1.8
在另外一台有docker的服务器测试
修改daemon.json文件添加
{"insecure-registries": ["10.68.15.115:5001"]}
重新启动
systemctl restart docker.service
拉取镜像
docker push 10.68.15.115:5001/jdk1.8