Docker常用的命令

1. 安装Docker

  1. yum 包更新到最新

    sudo yum update
     
  2. 安装需要的软件包

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
     
  3. 设置 yum 源为阿里云

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

    sudo yum install docker-ce
     
  5. 安装后查看 docker 版本

    docker -v

2. 设置ustc 的镜像

  1. 修改daemon.json 配置加速器

       vi /etc/docker/daemon.json

       { 

          "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]

       }

       2. 重新载入systemd

        systemctl daemon-reload
 

3. Docker 启动与停止

  1.  启动 docker

    systemctl  start docker
     
  2. 停止docker

    systemctl  stop docker
     
  3. 重启docker

    systemctl restart docker
     
  4. 查看docker状态

    systemctl status docker
     
  5. 开机启动

    systemctl enable docker
     
  6. 查看docker概要信息

    docker info

4. Docker 常用命令 

  1. 查看镜像    

    docker images
     
  2. 搜索镜像

    docker search  镜像名称
     
  3. 拉取镜像

    docker pull  镜像名称
     
  4. 导出镜像

    docker save -o  nginx.tar  nginx(镜像名称)
     
  5. 删除镜像

    docker rmi 镜像id

5. 容器相关命令

  1.  查看容器

    docker  ps
     
  2. 查看所有容器

    docker ps -a
     
  3. 查看所有容器ID

    docker ps -a -q
     
  4. 查看最后一次运行的容器

    docker ps -l
     
  5. 创建与进入容器

    docker run -it --name=容器名称 镜像名称:标签 /bin/bash
     
  6. 进入一个已经在运行的容器

    docker exec -it 容器名称 (或者容器 ID) /bin/bash
     
  7. docker容器开机自动启动(在宿主机重启后或者Docker服务重启后)

    docker run -itd --name=mycentos --restart=always  centos:7

    注: --restart
                         =no-container:  不重启
                         =on-failure-container:  退出状态非0时重启
                         =always:  始终重启

  8. 删除容器

    docker rm 容器名称(或容器ID)
     
  9. 导出容器

    docker  export  容器ID > nginx.tar
     
  10. 容器中安装vim
     

    apt-get update
    apt-get install vim

  11. 退出当前容器

    exit

6. 停止与启动容器

  1. 启动容器

    docker start 容器名称(或者容器ID)
     
  2. 停止容器

    docker stop 容器名称(或者容器ID)
     
  3. 启动所有容器

    docker start $(docker ps -a -q)
     
  4. 停止所有容器

    docker stop $(docker ps -a -q)
     
  5. 删除所有容器

    docker rm  $(docker ps -a -q)

7. 文件拷贝

  1. 将文件拷贝到容器内

    docker cp  需要拷贝的文件或目录   容器名称:容器目录
     
  2. 将文件从容器内拷贝出来

    docker cp  容器名称:容器目录  需要拷贝的文件或目录
     

8. 目录挂载

  1. 守护式方式通过 centos 镜像运行一个名称为mycentos的容器,并设置挂载目录(宿主机目录: 容器目录

    docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos centos:7


9. 获取容器 /镜像的元数据

      docker inspect  容器名称(或者容器ID)

       

10. 获取容器IP地址

         docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(或者容器ID)

11.部署MySql数据库

  1. 拉取mysql镜像

    docker pull centos/mysql-57-centos7
     
  2. 创建容器并指定端口号为 3306

    docker run -di --name=easybuy_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7:latest

    -e 表示添加环境变量 MYSQL_ROOT_PASSWORD 是root用户登录密码

12.部署Tomcat

  1. 拉取tomcat镜像

    docker pull tomcat:7-jre7
     
  2. 创建容器并挂载到宿主机目录 /usr/local/webapps下

    docker run -di --name=mytomcat -p 9089:8080  -v /usr/local/webapps:/usr/local/tomcat /webapps tomcat:7-jre7

  3. 测试tomca

    (1). 上传cas.war压缩包到宿主机目录 /usr/local/webapps下,解压;
    (2). windows浏览器上输入ip地址 192.168.187.128:9089/cas 就能访问cas单点登录页面;

13.部署Nginx

  1. 拉取nginx镜像

    docker pull nginx
     
  2. 创建容器

    docker run -di --name=mynginx -p 80:80  nginx:latest

  3. 测试nginx

    (1). 拷贝宿主机上的html资源到mynginx容器的/usr/share/nginx目录下
    docker cp /usr/local/html mynginx:/usr/share/nginx

    (2). windows浏览器上输入虚拟机的ip地址 192.168.187.128就能访问html页面

14.部署Redis

  1. 拉取redis镜像

    docker pull redis
     
  2. 创建容器

    docker run -di --name=myredis -p 6379:6379 redis:latest

15.迁移与备份(数据库)

  1. 容器保存为镜像

    docker commit easybuy_mysql(容器名称)  easybuy(镜像名称)
  2. 镜像备份
    docker save -o easybuy.tar(压缩包名)  easybuy(镜像名称)

  3. 数据库迁移
    easybuy.tar复制到另一台linux的 /home/mysql/下

  4. 镜像恢复
    docker load -i /home/mysql/easybuy.tar

    -i: 相当于input 导入的意思
     

  5. 创建mysql容器并设置开机自启动

    docker run -di --name=easybuy360 -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=123456 easybuy:latest

16. Dockerfile常用命令

命令

作用

FROM

从哪个基础镜像构建镜像

MAINTAINER 

用户信息声明

ENV 

在构建镜像过程中设置环境变量

RUN

容器构建时需要运行的命令

ADD

将宿主机的文件复制到容器内,如果是一个压缩文件,将会 在复制后自动解压

COPY  

ADD 相似,但是如果有压缩文件并不能解压

WORKDIR 

设置工作目录

  EXPOSE用来指定端口,使容器内的应用可以通过端口和外界交互

  1. 创建目录

      mkdir –p /usr/local/dockerjdk8

     下载 jdk-8u171-linux-x64.tar.gz 并上传到服务器中的 /usr/local/dockerjdk8 目录下
     
  2. 创建并编写Dockerfile文件

     vi  Dockerfile
     
  3. 编写以下内容:

    FROM centos:7
    MAINTAINER dengwq
    WORKDIR /usr
    RUN mkdir /usr/local/java
    ADD jdk-8u171-linux-x64.tar.gz /usr/local/java
    ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
    ENV JRE_HOME $JAVA_HOME/jre
    ENV CLASSPATH $JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
    ENV PATH $JAVA_HOME/bin: $PATH


     
  4. 执行命令构建镜像

    docker build -t='jdk1.8' ./
     
  5. 查看镜像是否完成

    docker images

17. 私有仓库搭建与配置

  1. 拉取私有仓库镜像

    docker pull registry

     
  2. 启动私有仓库容器

    docker run -di --name=registry -p 5000:5000 registry
     
  3. 打开浏览器输入地址 192.168.187.128:5000/v2/_catalog看到  {“repositories”:[]}  表示私有仓库搭建成功
     
  4. 修改 daemon.json (/etc/docker/daemon.json) 添加以下内容,保存退出
     

    {
       "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
       "insecure‐registries":["192.168.187.128:5000"]                   //作用是让docker信任该私有仓库地址
    }       

  5. 重启docker服务

    systemctl restart docker

18. 镜像上传到私有仓库

  1. 标记此镜像为私有仓库镜像

    docker tag  jdk1.8 192.168.187.128:5000/jdk1.8
     
  2. 再次启动私服容器

    docker start registry
     

  3. 上传标记的镜像

    docker push  192.168.187.128:5000/jdk1.8
     

19.  DockerMaven 插件自动发布

  1. 修改宿主机的docker配置,让其可以远程访问

    vi /lib/systemd/system/docker.service

    ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock


     
  2. 刷新配置,重启服务
     

    systemctl daemon-reload
    systemctl restart docker
    docker start registry

  3. 在pom文件中加入插件
     
    <build>
    	<finalName>app</finalName>
    	<plugins>
    		<!--spring-boot打包插件-->
    		<plugin>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-maven-plugin</artifactId>
    		</plugin>
    		<!-- docker的maven插件-->
    		<plugin>
    			<groupId>com.spotify</groupId>
    			<artifactId>docker-maven-plugin</artifactId>
    			<version>0.4.13</version>
    			<configuration>
    				<imageName>192.168.66.133:5000/${project.artifactId}:${project.version}
    				</imageName>
    				<baseImage>java:8</baseImage>
    				<entryPoint>["java", "-jar","/${project.build.finalName}.jar"]</entryPoint>
    				<resources>
    					<resource>
    						<targetPath>/</targetPath>
    						<directory>${project.build.directory}</directory>
    						<include>${project.build.finalName}.jar</include>
    					</resource>
    				</resources>
    				<dockerHost>http://192.168.66.133:2375</dockerHost>
    			</configuration>
    		</plugin>
    	</plugins>
    </build>
  4. 以上配置会自动生成 Dockerfile
     
    FROM java:8 
    ADD app.jar / 
    ENTRYPOINT ["java","-jar","/app.jar"]
  5. windows dos 命令 进入到项目目录下,输入以下命令,打包并上传镜像至私有仓库上

    mvn clean package docker:build -DpushImage    //clean package清除包, docker:build打包,-DpushImage传到私有仓库

    mvn clean package -Pdev -Dmaven.test.skip=true docker:build -DpushImage      //打包时跳过单元测试

20. 容器日志相关

  1.  查看docker容器日志
     

    实时查看日志: docker logs -f service-sign
    显示时间戳:  docker logs -t service-sign
    实时查看日志最后100行: docker logs -f --tail=100 service-sign
     

  2.  查看容器日志所在的位置

    docker inspect --format='{{.LogPath}}'  <容器id>

    /var/lib/docker/containers/52e5d4bb85c2f3fa1b0b359dac3d5cde458e81a33e8d4e72fb7e89c950f5a5c4/52e5d4bb85c2f3fa1b0b359dac3d5cde458e81a33e8d4e72fb7e89c950f5a5c4-json.log

  3. 清空容器日志

    echo "" > 日志路径
    echo "" > (docker inspect --format='{{.LogPath}}'  <容器id>)

21. 修改容器系统时间与宿主机时间一致

  1. 查看宿主机时间是否正确

    date
     
  2. 进入容器

    docker exec -it <容器名称> (或者容器 id)  /bin/bash
     
  3. 查看容器时间是否正确

    date
     
  4. 修改容器时间

    cd  /etc

    mv localtime localtime_bak

    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

22. 安装指定版本的Docker-CE

  1. 查找Docker-CE的版本

    yum list docker-ce.x86_64 --showduplicates | sort -r
    #   Loading mirror speeds from cached hostfile
    #   Loaded plugins: branch, fastestmirror, langpacks
    #   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
    #   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
    #   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
    #   Available Packages

  2. 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.0.ce.1-1.el7.centos)

    sudo yum -y install docker-ce-17.03.1.ce-1.el7.centos
     
  3. 注意:在某些版本之后,docker-ce安装出现了其他依赖包,如果安装失败的话请关注错误信息。例如 docker-ce 17.03 之后,需要先安装 docker-ce-selinux
    yum list docker-ce-selinux- --showduplicates | sort -r
    sudo yum -y install docker-ce-selinux-17.03.1.ce-1.el7.centos

转载请注明地址!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值