docker

1. 安装

yum -y install gcc gcc-c++ kernel-devel

yum install -y yum-utils


yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum源
yum makecache fast 

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

systemctl start docker

docker run hello-world

#阿里云加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ba9rfkrg.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

#卸载
yum remove docker-ce docker-ce-cli containerd.io

rm -rf /var/lib/docker

2. 镜像命令

docker images 查看本地主机上所有的镜像

# 查询所有镜像
docker images -a

docker search 搜索镜像

# stars大于三千的镜像
docker search mysql --filter=STARS=3000

docker pull 拉取镜像

# 下载mysql镜像--默认版本
docker pull mysql
# 和上面等价
docker pull docker.io/library/mysql:latest
#指定版本
docker pull mysql:5.7

docker rmi 删除镜像

# 指定id/每次删除
docker rmi -f [id]

# 删除全部镜像
docker rmi -f $(docker images -aq)

3.容器命令

docker pull cetnos

新建容器并启动

docker run [可选参数] image

# 参数说明
--name="name"  	容器名称
-d				后台方式运行
-it  			使用交互方式运行,进入容器查看
-p				指定容器端口。ps: -p 8080:8080 -p 主机端口:容器端口
-P				随机指定端口

docker run -it centos /bin/bash 交互式启动centos镜像容器

docker run -d --name nginx01 -p 3344:80 nginx

docker ps 查看容器

# 正在运行的容器命令
docker ps
# 所有容器包括停止的命令
docker ps -a

退出容器

# 退出
exit
# 容器不退出
ctrl + P + Q 

删除容器

# 删除不在运行的容器
docker rm 容器id 

#删除所有容器
docker rm -f $(docker ps -aq) 

启动和停止容器的操作

docker start	容器id #启动容器
docker restart	容器id #重启容器
docker stop		容器id #停止当前正在运行的容器
docker kill		容器id #强制停止当前容器    

查看日志

# 运行
docker run  -d centos /bin/bash -c "while true;do echo kuangsheng;sleep 1;done"
# 查看日志
docker logs -tf --tail 10 0cea2869ab8b

查看容器中进程信息

docker top 容器id

查看镜像的元数据

docker inspect 容器id/镜像id

进入容器

# 方式一
docker exec -it 容器id /bin/bash
# 方式二 进入容器正在执行终端
docker attach 容器id

进入容器内拷贝

# 容器文件 -> 主机路径
docker cp 容器id:容器文件路径 主机路径

example

# docker拉取tomcat9运行,并且删除容器
docker run -it --rm tomcat:9.0

# 拉取
docker pull tomcat:9.0
# 查看镜像
docker images 
# 后台制作启动镜像
docker run -d -p 3355:8080 --name tomcat01 tomcat:9.0
# 进入容器
docker exec -it tomcat01 /bin/bash

# 拉取启动elasticsearch
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2

# 查看内存信息
docker stats

# 发现es特耗内存,故增加参数
docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"  -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
# 安装portainer
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

commit 镜像

docker commit 提交容器成为一个新的副本
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]
# 将容器变成镜像
docker commit -a="hwk" -m="add webapps" acc413b23170 tomcat02:1.0 

4.使用数据卷

方式一:直接使用命令来挂载

docker run -it -v 主机目录:容器内目录 -p

ps:
# 挂载
docker run -it -v /home/ceshi:/home centos /bin/bash
# 查看
docker inspect 容器id
ps: mysql
# 拉取mysql镜像
docker pull mysql:5.7
# 通过镜像制作启动
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

具名和匿名挂载

# 匿名挂载
# -v 容器内路径
docker run -d -P --name ngnix01 -v /etc/nginx nginx

# 具名挂载
# -v 卷名
docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx


# 指定路径挂载
# /宿主机路径:容器内路径
docker run -d -P --name nginx01 -v /opt/local:/etc/nginx nginx

方式二:Dockerfile

# docker02和docker01具有相同的挂载路径
docker run -it --name docker02 --volumes-from docker01 kuangshen/centos:1.0
FROM			# 基础镜像
MAINTAINER		# 镜像作者,姓名+邮箱
RUN       		# 镜像构建前需要运行的命令
ADD				# 步骤 --tomcat镜像需要在此增加压缩包
WORKDIR			# 镜像工作目录
VOLUME			# 挂载的路径
EXPOSE			# 保留端口配置
CMD				# 指定容器启动需要执行的命令
ENTRYPOINT		# 指定这个容器启动的时候要运行的命令
ONBUILD 		# 当构建一个被继承DockerFile 这个时候就会运行该命令
COPY			# 类似于ADD,将我们的文件拷贝到镜像中
ENV				# 构建的时候设置环境变量
FROM centos
MAINTAINER hwk<962871535@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
# 构建
docker build -f mydockerfile-centos -t mycentos:0.1 .

tomcat

# 基本镜像
FROM centos
# 作者信息
MAINTAINER hwk<962871535@qq.com>

# 复制readme到容器内部的这个路径
COPY readme.txt /usr/local/readme.txt
# ADD 命令会自动解压 将tar包解压到这个路径
ADD jdk-8u221-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.22.tar.gz /usr/local/

# 安装一些基本命令
RUN yum -y install vim    

# 设置默认的工作目录
ENV MYPATH /usr/local
WORKDIR $MYPATH

# java 环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_221
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/toos.jar
# tomcat 环境变量
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
# 暴露 tomcat 端口
EXPOSE 8080
# 启动 tomcat 可以通过 && 拼接一些参数  tail -F 显示文件新追加的内容
CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.22/bin/logs/catalina.out
docker build -t diytomcat .


docker run -d -p 9090:8080 --name hwktomcat -v /home/hwk/build/tomcat/test:/usr/local/apache-tomcat-9.0.22/webapps/test -v /home/hwk/build/tomcat/tomcatlogs:/usr/local/apache-tomcat-9.0.22/logs diytomcat

docker hub

# 取名称-生成版本号
docker tag 39014127c86a  hwkang/mycentos:1.0.0
# 推送
docker push hwkang/mycentos
docker rm -f $(docker ps -aq)

docker rmi -f $(docker images -aq)

# 清空所有
docker rm -f $(docker ps -aq)  && docker rmi -f $(docker images -aq)

docker网络

# 列出
docker network ls

NETWORK ID          NAME                DRIVER              SCOPE
bbe29fb2dff2        bridge              bridge              local
ef9c2346f073        host                host                local
04ffed7a8bca        none                null                local

# 查看bridge的详情
docker network inspect bbe29fb2dff2

默认的方式

docker run -d -P --name tomcat01 tocmat
docker run -d -P --name tomcat01 --net bridge tomcate

自定义的方式

# 创建mynet的网络
# subnet 子网 192.168.0.2 ~ 192.168.255.255
# gateway 网关
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

# 查看
docker network inspect mynet

# 制作容器
docker run -d -P --name tomcat-net-01 --net mynet tomcat

docker run -d -P --name tomcat-net-02 --net mynet tomcat

# ping测试通过
docker exec -it tomcat-net-01 ping tomcat-net-02

但是不同网卡之间无法连接,采用

# tomcat-net-03 到 mynet
docker network connect mynet  tomcat-net-03
docker build -t hwk666 .
docker run -d -P --name hwk-springboot-web hwk666
docker save -o apiserver.tar k8s.gcr.io/kube-apiserver:v1.17.2

docker load -i apiserver.tar
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值