DOCKER笔记

镜像加速器的制作:

将这个地址加入到如下文件中:

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环境

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一篇文章学会docker docker安装 docker在线安装 1.更新yum到最新 2.卸载旧版本 3.安装需...
    饶一熊阅读 932评论 0 1
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    小迈克阅读 3,115评论 1 3
  • Docker 简介与概述1.Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 ...
    滔滔逐浪阅读 466评论 0 0
  • 转载自:黑马程序员java课程 一、系统发展趋势:实体机——>虚拟机-——>容器 二、Docker简介 1. Do...
    ThompsonHen阅读 321评论 0 0
  • Centos7基本命令 查看CPU相关信息lscpu 查看IP地址cat /etc/hosts centOS系统更...
    singlezero阅读 1,746评论 0 0

友情链接更多精彩内容