目 录CONTENT

文章目录

Docker常用命令

Josue
2021-02-28 / 0 评论 / 0 点赞 / 183 阅读 / 2,271 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-03-13,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Docker

官网:https://www.docker.com/

1、Docker的安装

  • 环境查看
#系统内核时3.10以上
uname -r
3.10以上
  • 查看系统版本
cat /etc/os-release

安装docker,见官网产品手册。

  • 需要安装包
sudo yum install -y yum-utils
  • 设置镜像仓库
sudo yum-config-manager \
    --add-repo \
  https://download.docker.com/linux/centos/docker-ce.repo
  • 添加软件源信息it
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 更新yum软件包索引
yum makecache fast
  • 安装docker相关内容,社区版
sudo yum install docker-ce docker-ce-cli containerd.io

启动dodcker

sudo systemctl start docker

2、Docker的原理

3、Docker的基本命令

3.1、帮助命令

docker version	#显示docker的版本信息
docker info	#显示doceker的系统信息,包括镜像和容器的数量
docker --help 		#帮助命令

3.2、镜像命令

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

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        8 months ago        13.3kB

#解释
REPOSITORY 镜像的仓库源
Tag	镜像的标签
IMAGE ID	镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小


#可选项
-a ,--all	#列出所有的镜像
-q, --quiet	#只显示镜像的id

docker search 搜索镜像

#通过收藏来过滤
--filter=stars=3000  #搜索出来的镜像时大于3000的

docker pull 下载镜像

#docker pull 镜像名[:tag]

[root@localhost docker]# docker pull mysql
Using default tag: latest   #如果不写tag,默认是latest
latest: Pulling from library/mysql
d121f8d1c412: Already exists 	#分层下载,docker image的核心,联合文件系统
f3cebc0b4691: Already exists 
1862755a0b37: Already exists 
489b44f3dbb4: Already exists 
690874f836db: Already exists 
baa8be383ffb: Already exists 
55356608b4ac: Already exists 
dd35ceccb6eb: Already exists 
429b35712b19: Already exists 
162d8291095c: Already exists 
5e500ef7181b: Already exists 
af7528e958b6: Already exists 
Digest: sha256:e1bfe11693ed2052cb3b4e5fa356c65381129e87e38551c6cd6ec532ebe0e808  #签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest  #真实地址


docker rmi 删除镜像

docker rmi -f [Image ID]

docker rmi -f [Image ID] [Image ID] [Image ID]	#删除多个镜像

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

3.3、容器命令

说明:有了镜像才可以创建容器。

3.3.1、测试下载centos镜像。linux.

docker pull centos

3.3.2、新建容器并启动

docker run  [可选参数]  image

#参数说明
--name ="name"	容器名字	tomcat01	tomcat02
-d 		后台运行
-it		使用交互方式运行,进入容器查看内容
-p		指定容器的端口 	-p 8080:8080
	-p 主机端口:容器端口(常用)
	-p 容器端口
-p 		随机指定端口



#测试
docker run -it centos /bin/bash
容器退回主机:exitdoc


3.3.3、列出所有运行的容器

docker ps

-a #列出当前正则运行的容器+历史运行的容器
-n=? #显示最近创建的容器
-q 只显示容器的编号

3.3.4、退出容器

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

3.3.5、删除容器

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

3.3.6、启动和停止容器

docker start 容器id		#启动容器
docker restart 容器id		#重启容器
docker stop 容器id		#停止容器
docker kill 容器id     	#强制停止当前容器

3.3.7、查看日志

#显示日志
-tf #显示日志
--tail number 要显示的日志条数
docker logs -tf --tail 10 容器id

3.3.8、查看容器中进程信息

docker top 

3.3.9、查看镜像的元数据

docker inspect 容器id

3.3.10、进入当前正在运行的容器

#方式一
docker exec -it 容器id bashShell

#方式二
docker attach 容器id

区别:
docker exec	进入容器后开启新的终端,可以进行操作(常用)
docker attach	进入正则运行的终端

3.3.11、从容器内拷贝文件到主机

docker cp 容器id:容器内路径 目标主机路径

3.3.12、网络

创建容器时不指定网络时默认是桥接网络,后续更改容器的网络有两种方式:

第一种:停止并删掉容器,重新创建容器指定网络连接(不建议)

第二种:直接修改容器的网络

1.创建自定义网络
docker network create 网络名称

2.解除容器所绑定的现有网络
docker network disconnect 网络名称 容器名称

3.容器重新指定网络连接
docker network connect 网络名称 容器名称

4.重启容器
docker restart 容器名称

5.查看容器详细信息
docker inspect 容器名称

4、安装nginx镜像

docker search nginx #搜索
docker pull nginx	#下载
docker images   #列出镜像
docker run -d  --name nginx01 -p 3344:80 nginx
#后台运行
-d 后台运行
--name 起别名
-p 映射端口




5、docker安装一个tomcat

docker run -it --rm tomcat:9.0	#用完即删


docker pull tomcat:9.0

后台启动+映射端口
docker run -d -p 3355:8080 --name tomcat01 tomcat

进入tomcat
docker exec -it tomcat01 /bin/bash


6、安装es+Kibana

#看官网
docker run -d --name elasticsearch  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.9.1

docker stats 查看内存容量

7、Kibana

8、portainer镜像管理

Docker的图形化管理界面,提供后台面板操控

docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

#主机:9000
密码:Aa123456

9、使用数据卷

  • 方式一
docker run -it -v 主机目录:容器目录

10、部署Mysql

  • 启动
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=a123456 --name mysql101 mysql

# -e 配置环境。添加密码
#-d 后台运行
#-p 端口映射
#-v 卷挂载
#--name 别名


测试连接:192.168.6.128:3310
  • 修改mysql8.0密码格式
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES;
  • 具名和匿名挂载
#匿名挂载
-v 容器内路径
docker run -d -P -v /ect/ngnix nginx #只声明了容器内路径,主机挂载为声明,匿名挂载
#具名挂载
docker run -d -P -v /home/ngnix:/etc/ngnix nginx

docker volume inspect 容器名 #查看容器挂载信息

11、容器数据卷容器

12、DockerFile

1、编写一个dockerfiler文件

2、docker build 构建成为一个镜像

3、docker 运行镜像

4、docker push 发布镜像

12.1、构建过程

  1. 每个保留关键字(指令)都是大写字母
  2. 执行从上而下进行执行
  3. #表示注释
  4. 每一个指令都会创建提交一个新的镜像层,并提交

12.2、指令

FROM	 		#基础镜像
MAINTAINER		#镜像是谁写的
RUN				#镜像构建需要运行的命令
ADD				#步骤,添加内容
WORKDIR			#镜像的工作目录
VOLUME			#挂载的目录
EXPOSE			#保留端口配置
CMD				#指定容器启动的时候要运行的命令
ENTRYPOINT		#指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD			#当构建一个被集成的DockerFile,这个时候就会运行ONBUILD的指令。触发指令
COPY			#类似ADD,将我们文件拷贝的镜像中
ENV				#构建的时候设置环境变量

12.3、实战测试

  • 创建自己的centos
    • 创建dockerfile文件
FROM centos
MAINTAINER jeffshaw<[email protected]>

ENV MYPATH /usr/local
WORKDIR $MYPATH
RUM yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "----end---"
CMD /bin/bash
~                                                                                                                                                                         
~           

​ 执行构建

localhost dockerfile]# docker build -f mydockerfile -t mycentos:0.1 .

12.4、实战:Tomcat镜像

  • 准备镜像
[root@localhost tomcat]# ll
总用量 150764
-rw-r--r--. 1 root root  11264531 9月  10 16:44 apache-tomcat-9.0.38.tar.gz
-rw-r--r--. 1 root root 143111803 9月  23 16:54 jdk-8u261-linux-x64.tar.gz

  • 编写dockerfile
#dckerfile文件
FROM centos
MAINTAINER jeff<[email protected]>

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

# 添加jdk、tomcat
ADD jdk-8u261-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.38.tar.gz /usr/local/

# # 工作路径
ENV MYPATH /usr/local
WORKDIR $MYPATH

# # 容器命令最高权限
RUN chmod -R 777 /usr/local

# java环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_261
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.38
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.38
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

# 暴露端口
EXPOSE 8080

# 启动指令
CMD /usr/local/apache-tomcat-9.0.38/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.38/bin/logs/catalina.out
~                                                                                                                     
  • 构建
docker build -t  diytomcat .
  • 启动
 docker run -d -p 9090:8080 --name jeffshawnewtomcat -v /home/jeffshaw/build/tomcat/test:/usr/local/apache-tomcat-9.0.38/webapps/test -v /home/jeffshaw/build/tomcat/tomcatlogs:/usr/local/apche-tomcat-9.0.38/logs newtomcat

13、Docker网络

ip addr


--link   容器网络联通ping
  • 自定义网络

网络模式:

​ bridge: 桥接

-net bridge


docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet  #自定义网络
docker run -d -p -name tomcat01 --net mynet tomcat #示例

容器与网络连通

docker network connect mynet tomcat01

13、Springboot微服务打包Docker镜像

  • 能成功运行的jar包
  • Dockerfile
FROM java:8
COPY *.jar /app.jar

CMD ["--server.port=8080"]

EXPOSE 8080

ENTRYPOINT ["java","-jar","/app.jar"]
  • Docker构建镜像
docker build -t jeffshow .
  • 启动
docker run -d -P --name jeffshaw-springboot-web jeffshow
#-P随机暴露一个端口
  • 访问即可
0

评论区