Docker命令

查看版本
uname -r

查看系统版本
cat /etc/os-release

配置阿里云docker仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

启动docker
systemctl start docker

是否启动docker – docker版本信息
docker version

docker系统信息
docker info

hello world
docker run hello-world

查看下载的镜像
docker images

卸载docker
1.卸载依赖:sudo yum remove docker-ce docker-ce-cli containerd.io
2.删除资源:sudo rm -rf /var/lib/docker —》docker默认工作路径

阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://ew0r2gl0.mirror.aliyuncs.com”]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker帮助命令
docker --help

查看docker所有镜像
docker images

搜索镜像
例:docker search mysql

搜索过滤收藏大于3000的
docker search mysql --filter=STARS=3000

下载镜像(默认最新版)
docker pull mysql

下载指定版本
docker pull mysql:5.7

删除镜像,可以通过id也可以通过名称
docker rmi -f 容器id

批量删除镜像
docker rmi 容器id 容器id 容器id

全部删除
docker rmi -f ${docker images -aq}

容器命令
docker run [可选参数] images
–name = “name” 容器名字
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器端口
-p ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口
-P 随机指定端口

启动并进入容器
docker run -it centos /bin/bash

从容器退回主机
exit 直接容器退出并停止

列出正在运行的容器
docker ps

列出历史运行的容器
docker ps -a

列出最近运行的容器
docker ps -a -n=1

显示容器的编号
docker ps -aq

删除容器
docker rm 容器id 删除指定的容器,不能删除正在运行的容器
docker rm -f $(docker ps -aq) 删除全部容器

容器不停止退出
ctrl + p + q

启动并停止容器
docker start 容器id 启动容器
docker restart 容器id 重启容器
docker kill 容器id 强制当前正在运行的容器
docker stop 容器id 停止当前正在运行容器id
docker attach 容器id 进入已启动的容器内部,exit会停止当前的容器

后台启动容器
docker run -d 容器名字或id —前台没有操作,后台会自动关闭
docker run -d -p 3355:8080 --name tomcat01 dab3cf97dd54
docker run -d -p 3355:8080 --name tomcat01 tomcat

前台启动
docker run -it -p 8080:8080 --name tomcat01 tomcat

新开一个页面,进入后台,exit不会停止容器
docker exec -it 容器id /bin/bash

显示日志
docker logs -t -f --tail 10 b6dcc082ff85

查看容器进程信息
docker top bcfd59a4feba

进入容器
方式一 :docker exec -it bcfd59a4feba /bin/bash
进入容器后开启一个新的终端,新开一个进程
方式二 :docker attach bcfd59a4feba
进入容器正在执行的终端

从容器内拷贝文件到主机
docker cp 容器id:容器内路径 目的主机的路径
docker cp be1db0c7dea2:/home/test.java /home

官方下载tomcat,用完即删,一般测试用
docker run -it --rm tomcat:9.0

测试本机是否运行
curl localhost:端口号

查看服务器cpu
docker stats [可以加容器id]

docker解决tomcat问题
1.发现webapps下没有内容,将webapps.dist目录下的内容复制到webapps下
cp -r webapps.dist/* webapps
2.提交新生成的tomcat
docker commit -a=“sun” -m=“add webapps app” 0bbcb2710e6f tomcat01:1.0
-a作者 -m描述

容器卷技术:-v挂载 将容器内的数据同步到主机,避免删除容器导致数据丢失,容器内部改变,外部也会改变。主机改变挂载目录,容器也会改变,停止容器,在宿主机上改变,再次启动容器,会发现容器内部也会发生改变。
docker run -it -v 主机目录:容器目录
docker run -it -v /home/ceshi:/home centos /bin/bash
以后使用容器卷技术,可以在主机上操作,不用进入容器内部,容器内部也会与主机数据同步

查看容器信息
docker inspect 容器id

启动mysql挂载数据和配置目录
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql01 mysql

-d:后台运行
-p:主机端口:容器端口
-v:目录挂载 -》 主机目录:容器目录(可以多次挂载)
-e:配置其他:密码:MYSQL_ROOT_PASSWORD=root
–name 给容器起个名字

查看所有卷的情况
docker volume ls

匿名挂载
docker run -d -P --name nginx01 -v /etc/nginx nginx

具名挂载
docker run -d -P --name nginx03 -v juming01-nginx:/etc/nginx nginx

查看具名挂载挂载信息(挂载到哪)
docker volume inspect juming01-nginx

docker run -d -P --name nginx03 -v juming01-nginx:/etc/nginx ngin
ro:只读,只能在宿主机改变,容器内部无法改变
rw:可读可写

初识Dockerfile
Dockerfile就是用来构建docker镜像的构建文件,命令脚本
通过这个脚本可以生成镜像,镜像是一层一层的,脚本是一个个的命令
每个命令都是一层

1.创建一个dockerfile文件 文件名建议Dockerfile
内容(都是大写):

FROM centos

VOLUME [“volume01”,“volume02”]

CMD echo “----end----”

CMD /bin/bash

2.创建镜像
docker build -f /home/docker-test-volume/dockerfile1 -t sun/centos:1.0 .

3.启动镜像
docker run -it 946361dd3a05 /bin/bash

4.在自己构建的镜像内的操作,会将数据同步到自己挂载到的外部主机上

数据卷容器
运行两个容器docker01 docker02 将docker01与docker02进行挂载,二者进行数据共享
docker run -it --name docker02 --volumes-from docker01 946361dd3a05

即使docker01闪了,docker02中的数据仍然存在,是一种备份机制

Dockfile构建过程

基础指令:
1.FROM 指定基础镜像
2.MAINTAINER 指定维护者的信息 姓名+邮箱
3.RUN 在命令加上RUN即可,构建镜像时需要运行的命令
4.ADD COPY文件,会自动解压
5.WORKDIR 设置镜像的工作目录
6.EXPOSE 指定外部端口
7.CMD 指定这个容器启动时需要运行的命令,只有最后一个会生效,之前的会被替换
8.ENTRYPOINT 指定这个容器启动时需要运行的命令,只有最后一个会生效,可以追加
9.ONBUILD 当构建一个被继承的DockFile 这个时候就会运行ONBUILD的指令,触发指令
10.COPY 类似ADD,将文件拷贝到镜像中,但不会自动解压
11.ENV 构建时设置环境变量

实战 : 创建一个自己的CentOs

1.创建一个目录dockerfile用于存放自己创建的镜像
mkdir dockerfile
2.创建一个文件写脚本命令,创建一个增强版的的镜像(在原始的centos中加入vim 和 ifconfig命令)
vim mydockerfile-centos

FROM centos
MAINTAINER sun1066523553@qq.com

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo “—end—”
CMD /bin/bash

3.运行该镜像文件,创建镜像

docker build -f mydockerfile-centos -t mycentos:0.1 .

4.镜像创建完之后就会有vim 和 ifconfig命令
docker run -it mycentos:0.1

CMD 命令 和 ENTRYPOINT 区别

1.FROM centos
CMD [“ls”,"-a"]

创建之后执行
docker run -it 镜像id ls -l
会将ls -a替换掉

2.FROM centos
ENTRYPOINT [“ls”,"-a"]

创建之后执行
docker run -it 镜像id -l
会在ls -a后追加 -l

实战 : 创建Tomcat镜像

1.编写Dockerfile文件
FROM centos
MAINTAINER sun1066523553@qq.com

COPY readme.txt /usr/local/readme.txt

ADD apache-tomcat-8.5.59.tar.gz /usr/local/
ADD jdk-8u161-linux-x64.tar.gz /usr/local/

RUN yum -y install vim

ENV MYPATH /usr/local

WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_161
ENV CLASSPATH J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.59
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.59
ENV PATH P A T H : PATH: PATH:JAVA_HOME/bin: C A T A L I N A H O M E / l i b : CATALINA_HOME/lib: CATALINAHOME/lib:CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-8.5.59/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.59/bin/logs/catalina.out

2.运行docker build -t diytomcat .生成镜像

3.运行镜像,并挂载相应的目录
docker run -d -p 8080:8080 --name suntomcat -v /home/tomcat/test:/usr/local/apache-tomcat-8.5.59/webapps/test -v /home/tomcat/tomcatlogs/:/usr/local/apache-tomcat-8.5.59/logs diytomcat

4.这样就在test目录下的操作文件,tomcat就会同步,在tomcat写一个WEB-INF目录,在目录下创建web.xml,写入标准的web.xml内容,然后与WEB-INF同级目录下创建一个index.jsp文件写入内容,外部就能访问到了。

发布镜像到dockerhub
1.登录账号
docker login -u

2.修改tag
docker tag 25ea2e6e43c1 jieshengsun/tomcat:1.0

3.提交
docker push jiehshengsun/tomcat:1.0

Docker网络
删除所有镜像
docker rm -f $(docker ps -aq)
docker rmi -f $(docker images -aq)

解决docker exec -it tomcat01 ping tomcat02无法通过容器名字ping通
docker run -d -P --name tomcat01 --link tomcat02 ,这样只能tomcat01 ping tomcat02,不能tomcat02 ping tomcat01

自定义网络(容器互联)
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
开启两个容器使用 mynet这个网络
docker run -d -P --name tomcat-net-01 --net mynet tomcat
docker run -d -P --name tomcat-net-02 --net mynet tomcat

docker exec -it -P tomcat-net-01 ping tomcat-net-02(可以ping通)

打通不同的网络
docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat02 tomcat

上面这两个容器默认以docker0作为网络路由,无法与tomcat-net-01和tomcat-net-02联通(ping)(不在一个网段)
所以要实现联通:
docker network connect 网络 容器
docker network connect mynet d669b12e71b3

ping一下
docker exec -it tomcat01 ping tomcat-net-01

部署redis集群

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值