镜像加速器的制作:
将这个地址加入到如下文件中:
https://oso90hdr.mirror.aliyuncs.com
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://oso90hdr.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
docker info 查看docker的相关信息
systemctl status docker 查看DOCKER的运行状态
systemctl stop docker 停止DOCKER
systemctl start docker 启动DOCKER
systemctl restart docker
docker images -q
docker rmi `docker images -q` ---删除所有镜像
docker rmi -f 9a27f125f56b ---强制删除镜像9a27f125f56b,加上-f参数即可
容器相关的命令:
-it : 创建的容器一般为交互式容器,容器退出时,容器自动关闭
-id :创建的容器一般为守护式容器
docker run -it --name=c1 mysql /bin/bash ----运行容器
docker run -id --name=c2 redis ----后台运行容器
docker exec -it c_mysql /bin/bash ----如果你退出容器后,想再次进入容器就用这个命令
exit -----退出不会关闭容器
docker ps -a ----查看所有容器,包括停止的容器
docker ps ----查看正在运行的容器
docker stop c_mysql ---关闭,停止容器
docker start c_mysql ---启动容器
docker inspect c_mysql ---查看容器的详细信息
docker rm c_mysql ---删除容器
docker rm `docker ps -aq` ---删除所有的容器
docker stop c2
docker start c2
docker rm c2
docker ps -a
docker ps -aq
在DOCKER中部署mysql:
1、docker search mysql ---搜索MYSQL镜像
2、docker pull mysql ---拉取MYSQL镜像
3、创建容器
docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql
4、进入容器:
docker exec -it c_mysql /bin/bash
在DOCKER中部署REDIS:
1、docker search redis ---搜索REDIS镜像
2、docker pull redis ---拉取REDIS镜像
3、docker run -id --name=c_redis -p 6379:6379 redis ---创建REDIS容器
4、docker exec -it c_redis /bin/bash ---进入容器
在DOCKER中部署NGINX:
docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx
-v $PWD/html:/usr/share/nginx/html \
nginx
在DOCKER中部署TOMCAT:
1、docker search tomcat
2、docker pull tomcat
mkdir ~/tomcat
cd ~/tomcat
创建容器:
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat
然后在网页中访问!
docker commit c_tomcat tomcat:1.0 ---容器c_tomcat转为镜像tomcat:1.0
将镜像转化为文件:
docker save -o ben_redis.tar ben_redis:1.0
docker save -o mysql.tar mysql
将文件恢复到镜像:
docker load -i ben_redis.tar
docker load -i mysql.tar
运行镜像:
docker run -it --name=new_redis ben_redis:1.0 bash
DOCKER COMPOSE是一个服务编排工具
安装DOCKER COMPOSE:
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose -version
核心配置文件:docker-compose.yml
docker-compose up ---启动所有docker-compose 服务
docker-compose up -d ---启动所有docker-compose 服务,并后台运行
docker-compose down ---停止并删除容器,镜像
docker-compose ps ----显示当前运行过的所有容器
docker-compose top ----显示编排过的容器进程
docker-compose config ----检查配置
docker-compose config -q ----检查配置,有问题才有输出
docker-compose start ----启动服务
docker-compose restart ----重启服务
docker-compose stop ----停止服务
docker-compose logs yml里面的服务ID ----查看容器输出的日志
docker-compose exec yml里面的服务ID ----进入容器的内部
在公司内部构建一个私有仓库:Docker Registry是官方提供的工具,可以用于构建私有镜像仓库
Docker搭建私有仓库:
1、docker pull registry ---拉取私有镜像
2、docker run -id --name=registry -p 5000:5000 registry ---启动镜像,生成容器
3、curl -XGET http://192.168.43.95:5000/v2/_catalog ---执行命令
4、vi /etc/docker/daemon.json 加入下面的内容:
"insecure-registries": ["192.168.43.95:5000"] ---docker默认不容许http方式推送镜像,通过配置选项来取消这个限制,修改后建议重启Docker
5、systemctl restart docker ---重启DOCKER的服务
6、docker start registry ---启动容器
将镜像上传到私有仓库:
1、docker tag redis 192.168.43.95:5000/redis ---将REDIS打个标签
2、docker start registry ---启动私有仓库
3、docker push 192.168.43.95:5000/redis ---上传到私有仓库
将私有仓库的镜像拉取到本地:
1、docker rmi -f 192.168.43.95:5000/redis ---删除已经存在的镜像
2、docker pull 192.168.43.95:5000/redis ---拉取镜像
查看镜像的详细信息:
docker image inspect ubuntu:latest
docker image inspect nginx ---查看镜像的详细信息
docker image inspect centos
docker image ls --no-trunc ---完整显示IMAGE ID
docker image ls -q ---显示所有的镜像ID
容器退出时自动删除:
docker container run -it --name="sdfsdfsr4343" --rm 43434343
8080是对外提供服务的端口:
docker run -d -p 8080:80 --name="nginx_80" nginx:1.14
容器的端口映射:
docker container run -d -p 33060:3306 -p 2222:22 -p 12345:80 nginx:1.14
docker container ls -a
docker container start -i c_tomcat ---交互式启动容器
docker container start c_tomcat ---启动守护式容器
docker container stop c_tomcat ---停止容器
docker container ls -a ---查看容器
docker restart c_tomcat ----重启容器
docker stop c_tomcat ----停止容器
docker kill c_tomcat -----强制停止容器
docker start c_tomcat ---启动容器
docker rm c_tomcat ---删除停止的容器
docker rm -f c_tomcat ---强制删除正在运行的容器
docker logs c_tomcat ---查看容器的日志
docker top c_tomcat ----查看容器内运行的进程
docker inspect c_tomcat ----查看容器的具体内容
一次性删除多个容器:
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
子进程的方式登录容器,推荐用这个方法,exit退出时不会使容器停止:
docker exec -it 容器名 /bin/bash
docker exec -it c_redis /bin/bash
docker attach 容器名 ---登录容器,用EXIT退出容器会导致容器停止,尽量不要用这个命令,不推荐使用
镜像的导出导入:
docker image save nginx >/tmp/nginx.tar ----导出镜像
docker image rm nginx ----删除镜像
docker image load -i /tmp/nginx.tar ---导入镜像
docker image tag nginx nginx:latest ---给Nginx镜像打标签
docker image rm -f nginx ----删除镜像
交互式容器,启动并且登录进去:
docker container run -it 4343434343
docker container ls
docker container ls -a
守护式启动容器:没有就自动拉取
docker run -d --name="nginx" nginx:1.14
Dockerfile 关键字:
FROM 基础镜像,指定父镜像
MAINTAINER 作者信息
LABEL 标签
ARG 构建参数
RUN 执行命令,执行一段命令,默认是 /bin/bash
COPY 复制文件
ADD 添加文件
EXPOSE 向外暴露端口
VOLUME 定义外部可以挂载的数据卷
WORKDIR 工作目录,指定容器内部的工作目录,如果没有创建则自动创建
ENV 定义环境变量
CMD 容器启动时运行的命令
ENTRYPOINT 入口,一般在制作一些执行就关闭的容器中会使用
USER 指定执行用户
ONBUILD 触发器
SHELL 指定执行的SHELL
HEALTHCHECK 健康检查
STOPSIGNAL 发送信号量到宿主机
build run
dockerfile---------->docker镜像---------->docker容器
仓库---------->镜像---------->容器
虚悬镜像:TAG,REPOSITORY都为NONE则为虚悬镜像,这种镜像最好要删除
docker image prune ----删除虚悬镜像
docker image ls -f dangling=true ----查询虚悬镜像
通过dockerfile定制企业镜像:
vi Dockerfile
FROM centos:6.9
RUN mv /etc/yum.repos.d/*.repo /tmp
RUN /etc/init.d/sshd start && /etc/init.d/stop && echo "123456" | passwd root --stdin
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]
docker image build -t "centos6.9-sshd:v1.0" ./
docker run -it 44343erere /bin/bash
docker container run -d 434546tyrtrtr
docker container ls -a
docker container inspect e4354546ewre
Dockerfile 构建LAMP:
vi Dockerfile
FROM centos:6.9
RUN mv /etc/yum.repos.d/*.repo
RUN /etc/init.d/sshd start && echo "123456" | passwd root --stdin && /etc/init.d/mysqld start && /etc/init.d/httpd start
RUN mysql -e "grant all on *.* to root@'%' identif
DOCKER容器的数据卷:
数据卷是宿主机中的一个目录或者文件。
当容器目录和数据卷目录绑定后,对方的修改会立即同步。
一个数据卷可以被多个容器同时挂载。
一个容器也可以被挂载多个数据卷。
数据卷作用:
1、容器数据持久化
2、容器之间数据交换
3、外部机器和容器间接通信
4、卷中的更改是可以实时生效的
如果宿主机的目录不存在,则自动创建
配置数据卷:
创建启动容器时,使用-v 设置数据卷
docker run -v 宿主机绝对目录:容器内目录
docker run -it --name=c1 -v /root/data:/root/data_container centos:7 /bin/bash
同时挂载多个数据卷:
docker run -it --name=c2 \
-v ~/data2:/root/data2 \
-v ~/data3:/root/data3 \
centos:7
多个容器挂载同一个数据卷:
容器A <---- 数据卷 ----> 容器B
docker run -it --name=c3 -v ~/data:/root/data centos:7
docker run -it --name=c4 -v ~/data:/root/data centos:7
可以挂载多个数据卷
数据卷容器:创建一个容器,挂载一个目录,让其他容器继承该容器
配置数据卷容器:
1、创建启动C3数据卷容器,使用-v参数设置数据卷
docker run -it --name=c3 -v /volume centos:7 /bin/bash
2、创建启动C1,C2容器,使用--volumes-from参数设置数据卷
docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash
docker build -t zzyy_docker:1.6 . ---生成镜像
docker system df ----查看所有的资源
docker stats ----查看统计信息
docker network ls ----查看网络情况
docker network create aa_network -----创建一个网络
docker network rm aa_network -----删除一个网络
docker network inspect brige -----查看网络源数据
docker网络模式:
bridge模式,默认为这个模式
host模式,
none模式,表示禁用网络功能
container模式
宿主机端口:容器内端口
docker run -it -p 8080:8080 32039erewe /bin/bash ----/bin/bash可以替换dockerfile中的CMD命令
exit ---退出容器,容器停止
ctrl+p+q ---退出,容器不停止
同一个镜像可以生成多个容器。
只有通过这个镜像文件才能生成DOCKER容器实例(类似JAVA中NEW出来一个对象)
将容器内的文件拷贝到外部主机:
docker cp 容器ID:容器内路径 目的主机路径
docker cp 32039erewe:/tmp/a.txt /xjb
将容器导出:
docker export 32039erewe >abcd.tar
将包导入成镜像:
docker rm -f 32039erewe
cat abcd.tar | docker import - atguigu/ubuntu:3.7
DOCKER镜像层是只读的,容器层是可写的。
当容器启动时,一个新的可写层被加载到镜像的顶部,这一层通常被称作容器层,容器层之下的都叫镜像层。
docker commit提交容器副本使之成为一个新的镜像
docker commit -m="信息的描述" -a="作者信息" 容器ID 要创建的目标镜像名:[标签名]
docker commit -m="vim cmd add ok" -a="xjb" aabcc2322i atguigu/myubuntu:1.3
portainer ----轻量级的可视化工具,用于方便管理DOCKER环境