Docker基础命令安装大全

1.安装
yum  -y install  gcc
yum  -y install  gcc-c++
yum  update(可不执行)
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast(可不执行)
yum -y install docker-ce docker-ce-cli containerd.io
安装完成
查看版本  docker -v
2.启动
systemctl start docker
ps -er|grep docker
docker version
3.卸载
systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io
rm -rf/var/lib/docker
rm -rf/var/lib/containerd
4.(安装阿里云镜像加速器: 登录阿里云容器镜像服务查看镜像加速服务
sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [""]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker)
======================================
5.镜像命令(image)


docker  images  [-aq]   #查看所有镜像 a:所有 q:只显示镜像ID
docker  [--limit 5] search  镜像名 #查找镜像
docker  rmi   --f 镜像名[:TAG]/镜像ID     //${docker imagers -aq #全部} #删除镜像
docker  pull   镜像名[:TAG] // #拉镜像TAG版本号    docker  pull  nginx:latest
docker  push   镜像名[:TAG] // #推镜像TAG版本号
docker  system df #查看镜像容器/数据卷所占内存空间
(虚悬镜像 仓库 标签名都是<none> 没什么用)
docker  export 容器id >  文件名.tar  #容器备份
cat  文件名.tar | docker  import -  镜像用户/镜像名:TAG版本号  #导入镜像
docker     save -o 文件名.tar   镜像名[:TAG]   //导出      docker save -o nginx.tar nginx:latest
dockers load -i 文件名.tar                   //创建镜像     dockers load -i nginx.tar    

6.容器命令(containers)
创建容器并启动
============================
docker run
--name=容器名称

-i  #以交互式运行容器 通常与-t一起使用
-t  #为容器重新分配一个伪输入终端
-it  /bin/bash

-d   #后台运行,创建一个守护式

-p  80:80  #端口映射 [宿主机端口:docker暴露的端口]
-P   #随机端口映射不用

-v  宿主机路径:容器内路径[:rw]  #挂载数据卷不加在/var/lib/registry下;相当于备份数据,实现数据持久化;可以挂载多个
--privileged=true   //怕文件不安全被禁止,放开权限
--restart  always  //参数能够使我们在重启docker时,自动启动相关容器。
-e   #配置环境变量

镜像名[:TAG]
==============================

docker ps  [-a]  #罗列出所有的运行容器实例  
docker logs  [-f]   容器名/容器ID  #日志监控

docker attach -it    容器名/容器ID                   #重新进入容器内部 直接进入容器终端 不会创建新的进程 exit退出容器停止
docker exec -it   容器名/容器ID   /bin/bash      #重新进入容器内部 在容器中打开新的终端  创建新的进程,exit 退出容器不会停止 (推荐使用)


docker start    容器名/容器ID
docker restart  容器名/容器ID
docker stop        容器名/容器ID
docker kill        容器名/容器ID
docker rm          容器名/容器ID   //删除已经停止的容器
docker pause       容器名/容器ID  //暂停
docker unpause  容器名/容器ID  //恢复
docker top      容器名/容器ID  #
docker cp         容器id:容器内路径    /拷贝到的路径  // 容器复制
docker  export     容器id >  文件名.tar  //容器备份
cat  文件名.tar | docker  import -  镜像用户/镜像名:TAG版本号  //导入镜像


退出容器(run 进入容器)
exit   容器停止
ctrl+q+p  容器不停止

7.创建镜像
docker  export 容器id >  文件名.tar  #容器备份
cat  文件名.tar | docker  import -  镜像用户/镜像名:TAG版本号  #导入镜像

docker  commit -m="镜像信息" -a="作者" 容器ID  包名/镜像名[:TAG]  #创建镜像

docker cp 容器id:容器内路径    /拷贝到的路径  # 容器复制


8.数据挂载

-v  宿主机路径:容器内路径[:rw]  #挂载数据卷不加在/var/lib/registry下;相当于备份数据,实现数据持久化;实时生效;没有目录自行创建;可以挂载多个
[:rw]读写 [:ro]只读
--privileged=true   #怕文件不安全被禁止,放开权限
docker inspect  容器ID      #查看容器信息 mounts 下就是容器挂载消息
--volumes-from     容器名      #继承;
docker volume  creat    //创建数据卷
docker  volume inspect   数据卷名   //查看数据卷信息
docker volume ls   //查看所有信
docker volume  rm  //删除指定数据卷
docker volume prune //删除所有没有使用的数据卷


===================================================
9.镜像推送到远程仓库
登录阿里云在容器镜像服务创建仓库选择仓库管理复制命令
docker login --username=  姓名    registry.cn-hangzhou.aliyuncs.com
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/URL/远程仓库名:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/URL/远程仓库名:[镜像版本号]


10.镜像拉取从远程仓库到本地
docker pull registry.cn-hangzhou.aliyuncs.com/URL/远程仓库名:[镜像版本号]
=====================================================
11.本地仓库
docker pull registry  #拉取本地仓库镜像

docker run -d  -p 5000:5000 -v 卷名:本地位置  --privileged=true   registry  #运行

curl -XGET http://ip:5000/v2/_cartalog  #查看本地仓库镜像
docker tar  镜像名[:TAG]  ip:5000/镜像名[:TAG]
vim etc/docker/daemon.json


"registry-mirrors": ["阿里云镜像地址"],  #不要忘记逗号
"insecure-registries":[ip:5000]   #插入这一行,允许http访问,重新启动docker


docker  push  ip:5000/镜像名[:TAG]    #推送到本地仓库镜像
curl -XGET http://ip:5000/v2/_cartalog  #查看本地仓库镜像
docker  pull  ip:5000/镜像名[:TAG]    #拉取到本地
============================
12.常用软件安装
tomcat
docker pull tomcat:TAG
docker images
docker run  -it  -p 8080:8080 tomcat  #最新版本需要删除webapps文件夹;把webapps.dist修改为webapps  
docker exec -it 容器ID
mv webapps.dist webapps

2 docker run  -d  -p 8080:8080  --name  mytomcat8 billygoo/tomcat8-jdk8
=========================================
mysql
docker pull mysql:5.7

=====================
docker run  --name  mysql  -p 3306:3306   --privileged=true\
-v /主机目录/mysql/log:/var/log/mysql  \
-v /主机目录/mysql/data:/var/lib/mysql  \
-v /主机目录/mysql/conf:/etc/mysql/conf.d\
-e MYSQL_ROOT_PASSWORD=root  \
-d  mysql:5.7  
 #运行前看看自己的mysql是否启动
=====================
docker run  --name  mysql  -p 3306:3306   --privileged=true \
-v /app/mysql/log:/var/log/mysql  \
-v /app/mysql/data:/var/lib/mysql  \
-v /app/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root  \
-d  mysql:5.7  
 #运行前看看自己的mysql是否启动
=====================
新建my.cnf 修改中文不能存储问题
cd /主机目录/mysql/conf
vim my.cnf

[client]
default_character_set=utf-8
[mysqld]
collation_server =utf-8_general_ci
character_set_server=utf-8
=======================

docker restart 容器名

docker exec -it 容器ID

mysql -uroot - p
show variables like 'character%';

=============================
redis
找到一个redis.conf 文件
mkdir  -p /app/redis  #将文件放到目录下
修改redis.conf文件
1. requirepass  1234  #开启redis 验证 可选
2.#bind 127.0.0.1   #允许远程连接
3. daemonize  no   #会与-d 命令冲突
4.appendonly yes  #开启数据持久化
5.protected-mode no #允许外部访问

docker pull redis:6.0.8

docker run  -p  6379:6379    --name  redis    --privileged=true\
-v /app/redis/redis.conf:/etc/redis/redis.conf\
-v /app/redis/data:/data\
-d\
redis:6.0.8\
redis-server  /etc/redis/redis.conf
==============================
docker run -p 6379:6379  --name redis --privileged=true  -v /usr/local/docker/app/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/app/redis/data:/data -d redis:6.0.8 -redis-server /etc/redis/redis.conf
===========================
docker exec -it 容器名 /bin/bash
redis-cil
=====================
13.dockerfile  构建工具;文本文件;在文本文件中写指令
FROM 如果不以任何镜像为基础,那么写法为:FROM scratch。
MAINTAINER  指定作者
LABEL  功能是为镜像指定标签
ADD  一个复制命令,把文件复制到镜像中。
COPY 看这个名字就知道,又是一个复制命令
EXPOSE 功能为暴漏容器运行时的监听端口给外部
ENV    功能为设置环境变量
RUN   功能为运行指定的命令
CMD   功能为容器启动时默认命令或参数
ENTRYPOINT :容器启动时运行得启动命令
VOLUME 可实现挂载功能,可以将宿主机目录挂载到容器中
USER 设置启动容器的用户,可以是用户名或UID,所以,只有下面的两种写法是正确的
WORKDIR 设置工作目录,对RUN,CMD,ENTRYPOINT,COPY,ADD生效。如果不存在则会创建,也可以设置多次。
ARG 设置变量命令,ARG命令定义了一个变量,在docker build创建镜像的时候,使用 --build-arg =来指定参数
ONBUILD 此时有一个镜像B是基于A镜像构建的,那么这个ls -al 命令会在B镜像构建的时候被执行。
STOPSIGNAL STOPSIGNAL命令是的作用是当容器停止时给系统发送什么样的指令,默认是15
HEALTHCHECK 容器健康状况检查命令
更新详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/builder
=====================================================
新建一个空文件夹docker-demo
拷贝docker-demo.jar文件到docker-demo这个目录
拷贝jdk8.tar.gz文件到docker-demo这个目录
拷贝Dockerfile到docker-demo这个目录
dockerfile
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local

# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar

# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8

# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

步骤5:进入docker-demo
将准备好的docker-demo上传到虚拟机任意目录,然后进入docker-demo目录下
docker build -t javaweb:1.0
最后访问 http://IP:8090/hello/count
=====================
14.dockercompose  通过指令定义集群中的每个容器如何运行
Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。格式如下:
version: "3.8"
 services:
  mysql:
    image: mysql:5.7.25
    environment:
     MYSQL_ROOT_PASSWORD: 123
    volumes:
     - "/tmp/mysql/data:/var/lib/mysql"
     - "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
  web:
    build: .
    ports:
     - "8090:8090"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

20岁30年经验的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值