docker笔记

安装docker

1.注意安装ce

yum install -y yum-utils device-mapper-persistent-data vm2

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install -y docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io

systemctl enable docker

systemctl start docker

2.编辑daemon.json,添加镜像地址

vi /etc/docker/daemon.json
添加以下代码:
{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]}

systemctl daemon-reload

systemctl restart docker

3.启动与停止docker

开启:systemctl start docker 
状态:systemctl status docker 
停止:systemctl stop docker    
重启:systemctl restart docker 
开机启动:systemctl enable docker 
查看概要:docker --help

4.镜像相关命令

查看镜像:docker images
搜索镜像:docker search centos
拉取镜像:docker pull centos:7
删除镜像:docker rmi 镜像ID
删除所有镜像:docker rmi `docker images -q`

5.容器相关命令

查看正在运行的容器:docker ps
查看所有容器:docker ps -a
查看最后一次运行的容器:docker ps -l
查看停止的容器:docker ps -f status=exited
创建容器:docker run 
    (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 之后不会进入容器内
        进入方式:docker exec -it mycentos2 /bin/bash
        退出当前容器:exit,当退出,容器还在运行
停止与启动容器:docker stop/start
     (1)停止:docker stop 容器名称(或者容器ID)
             docker stop centos2
     (2)启动:docker start 容器名称(或者容器ID)
             docker start centos2
文件拷贝:
     (1)文件拷贝到容器:docker cp 需要拷贝的文件或目录 容器名称:容器目录
                      docker cp daemon.json mycentos2:/usr/local
     (2)文件从容器拷贝出来:docker cp 容器名称:容器目录 需要拷贝的文件或目录
                          docker cp mycentos2:/usr/local/daemon.json daemon.json
目录挂载:
    创建容器 添加-v参数 后面为 宿主机目录:容器目录,例如:
    docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7
查看容器的ip地址:
    docker inspect 容器名称(容器id)
    docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器id)
删除容器:
    docker rm 容器名称(容器id)

6.应用部署

6.1 mysql部署

(1)拉取mysql镜像
    docker pull centos/mysql-57-centos7
(2)创建容器
    docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 mysql:5.7 --lower_case_table_names=1
(3)进入mysql容器
    docker exec -it tensquare_mysql /bin/bash
(4)登录mysql
    mysql -u root -p
(5)远程登录mysql:连接宿主机ip,指定端口为33306
    mysql-8.0.x连接报错问题:https://www.cnblogs.com/zhurong/p/9898675.html

6.2 tomcat部署

(1)拉取tomcat镜像
    docker pull tomcat:7-jre7
(2)创建容器
    docker run -di --name=mytomcat -p 80:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat
(3)发布应用
    cd /usr/local/webapps

6.3 Nginx部署

(1)拉取
    docker pull nginx
(2)创建容器
    docker run -di --name=mynginx -p 80:80 nginx
(3)发布应用
    docker exec -it mynginx /bin/bash
    cd /etc/engix
    cat nginx.conf
    /etc/nginx/conf.d#
    docker cp myhtml mynginx:/usr/share/nginx/

6.4 Redis部署

(1)拉取
    docker pull redis
(2)创建容器
    docker run -di --name=redis -p 6379:6379 redis

7.迁移与备份

(1)容器保存为镜像:
    docker commmit mynginx mynginx_i
(2)镜像备份
    docker save -o mynginx.tar mynginx_i
(3)镜像回复与迁移
    docker load -i mynginx.tar
    执行后再次查看镜像,可以看到镜像已经恢复

8.Dockerfile

8.1 Dockerfile 常用命令:

1)FROM  : FROM 镜像指令指明了当前镜像继承的基镜像,编译当前镜像时会自动下载基镜像 ,如果不指定映像url 则从docker hub 上获取。 e.g : FROM ubuntu 
2)MAINTAINER :MAINTAINER 指令 指定了当前镜像的作者及联系方式。e.g : MAINTAINER: caiqiufang
3)RUN : RUN 指令可以在当前镜像上执行Linux  命令并形成一个新的层,RUN 是编译时(build) 的动作,在docker 命令中运行的shell 命令,等价于docker run   示例可以是如下两种,CMD 和 ENTRYPOINT也是如此 e.g : RUN /bin/bash -c "echo helloworld"    or   RUN {"/bin/bash", "-c" ,"echo helloworld"}
4)CMD : CMD 指令指明了启动镜像容器时的默认行为(docker 容器运行时的默认命令),一个Dockerfile 里只有一个CMD 指令,CMD 指令里设定的命令可以在运行镜像时使用参数覆盖,CMD 是 运行时(run)的动作。 e.g :  CMD echo "this is a test"  正如上所说可以被运行时的参数覆盖,如下: docker  run -d imag_name echo "this is not a test"。
5)EXPOSE : 指明了镜像运行时的容器必须监听的端口  e.g : EXPOSE 8080
6) ENV : 用来设置环境变量  e.g :  ENV myname = caiqiufang   or ENV myname  caiqiufang。
7)ADD : ADD 指令是指从当前工作目录复制文件到镜像目录中去。 e.g : ADD test.txt   /mydir/
8) ENTRYPOINT : ENTRYPOINT 指令可以让容器像一个可执行程序一样运行,这样镜像运行时可以像软件一样 接收参数执行。ENTRYPOINT 是运行(run)时的动作  e.g : ENTRYPOINT {"/bin/echo"}  ,那么我们可以向镜像传递参数运行 docker run  -d image_name  "this is a test"
9) WORKDIR : 指定RUN, CMD, ENTRYPOINT  等命令运行的工作路径 

8.2 使用脚本创建镜像

sudo docker pull centos:centos7
sudo cd /usr/local/src
sudo tar zxf jdk-8u201-linux-x64.tar.gz
sudo ls
    jdk1.8.0_201  jdk-8u201-linux-x64.tar.gz
sudo mkdir /usr/local/jdk
sudo cd /usr/local/jdk
sudo cp ../src/jdk-8u201-linux-x64.tar.gz ./
sudo ls
    jdk-8u201-linux-x64.tar.gz
sudo vi Dockerfile
    FROM centos:centos7
    MAINTAINER tom
    RUN mkdir /usr/local/jdk
    WORKDIR /usr/local/jdk
    ADD jdk-8u201-linux-x64.tar.gz /usr/local/jdk
    ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_201
    ENV JRE_HOME /usr/local/jdk/jdk1.8.0_201/jre
    ENV PATH $JAVA_HOME/bin:$PATH
sudo docker build -t jdk1.8 .       

8.3 Docker私有仓库

https://www.cnblogs.com/naixin007/p/10952813.html
(1)拉取私有仓库镜像
    docker pull registry
(2)启动私有仓库
    docker run -di --name=registry -p 5000:5000 registry
(3)打开浏览器输入:http://192.168.133.10:5000/v2/_catalog看到{"repositories":[]}表示私有仓库搭建成功,并且为空
(4)修改daemon.json
    vi /etc/docker/daemon.json
    添加以下内容,保存退出,此步用于让docker信任私有仓库
    {"insecure-registries":["192.168.133.10:5000"]}
(5)重启docker服务
    systemctl restart docker

8.4 Docker私有仓库镜像上传

(1)给镜像打标签
    docker tag jdk1.8 192.168.133.10:5000/jdk1.8
(2)上传镜像
    docker push jdk1.8 192.168.133.10:5000/jdk1.8

你可能感兴趣的:(docker笔记)