栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker操作命令汇总

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker操作命令汇总

目录

    1、docker是什么

    2、docker中的一些概念

    3、镜像相关的命令

    4、容器相关的命令

    5、制作镜像

    6、docker中的网络

    7、docker管理

    8、docker中安装并启动mysql
    

1、docker是什么
docker可以理解为一个虚拟机。就相当于在你的电脑系统上又启动了一个系统。
2、docker中的一些概念
docker有镜像(images)和容器(container)的概念。

镜像,相当于模板,也可以理解为java中的类。

容器,镜像运行以后生成容器,就是镜像运行以后的实体,也可以理解为java中的对象。
3、镜像相关的命令

在dockerhub上搜索镜像,搜索mysql镜像

docker search mysql

获取镜像,从仓库上拉取镜像到本地

docker pull mysql:8.0

查看当前系统中的镜像

docker images

删除镜像,删除系统中存在的mysql8.0镜像

docker rmi mysql:8.0

强制删除镜像

docker rmi -f mysql:8.0

启动镜像

启动镜像使用docker run命令

docker run -d --restart=always --name mysql-service -v /mysql/data:/var/lib/mysql -p 3306:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=your_password mysql:8.0

-d 后台运行容器
--restart=always 代表自动重启
--name mysql-service 容器启动后的名称
-v /mysql/data:/var/lib/mysql 将本机的"/mysql/data"目录和容器内的"/var/lib/mysql"目录做映射
-p 3306:3306 将本机的3306端口和容器的3306端口映射
-e TZ=Asia/Shanghai 将容器的时区指定为上海,代表国内时间(一定要指定,不然时间为UTC时间)
-e MYSQL_ROOT_PASSWORD=your_password 你的数据库密码,默认用户为root
mysql:8.0 指定使用的镜像版本

执行镜像里命令

docker run -it ubuntu bash

-it 以命令行交互的模式执行 ubuntu镜像的 bash

打印hello docker!

docker run ubuntu echo 'hello docker!'

导入导出镜像,将mysql8.0镜像打包成mysql.docker存放在当前目录下

docker save mysql:8.0 -o mysql.docker

导入镜像到系统

docker load -i mysql.docker

查看镜像详情

docker inspect mysql:8.0

镜像重命名,打标签

docker tag mysql:8.0 mengmysql8.0

4、容器相关的命令

查看系统中的容器,正在运行的容器

docker ps

查看所有容器包括正在运行的容器

docker ps -a

查看正在运行的容器的id,只显示id

docker ps -q

查看所有容器id,只显示id

docker ps -a -q

删除容器,根据容器id,删除一个容器,不能删除正在运行的容器

docker rm e90f3dc1deca

强制删除容器,可以正在运行的容器

docker rm -f e90f3dc1deca

删除所有容器,包括正在运行的

docker rm -f $(docker ps -a -q)

查看容器log

docker logs e90f3dc1deca

持续查看容器log

docker logs -f a9ce4457add8

进入正在运行的容器中,以命令行交互模式执行容器里的sh,这样相当于ssh到容器里

docker exec -it a9ce4457add8 sh

查看容器详情

docker inspect a9ce4457add8

当前系统和容器相互复制文件,将某个容器中的varlogs目录复制到当前系统的logs中

docker cp a9ce4457add8:/varlogs /logs

将当前系统的demo目录复制到容器的根目录下

docker cp /home/demo a9ce4457add8

重启容器

docker restart a9ce4457add8

启动一个退出后的容器

docker start a9ce4457add8

退出一个容器,stop给容器发送退出命令,在规定时间内容器没有退出,就会执行强制退出

docker stop a9ce4457add8

强制容器退出,相当于执行了kill -9,杀掉进程

docker kill a9ce4457add8

容器生成镜像,将容器生成镜像,这里生成mengmysql的镜像

docker commit -a meng a9ce4457add8 mengmysql

-a 添加作者名称

 5、制作镜像

方法一

将一个基础镜像启动成容器,在容器里安装需要的软件和服务,然后在生成镜像。

方法二

使用Dockerfile生成镜像

创建一个目录,在目录里新建一个Dockerfile文件。

文件内容如下:

# 基础镜像
FROM ubuntu
MAINTAINER wangmcn@163.com

# 参数
ARG api_url

# 设置环境变量
ENV JAVA_HOME jdk

# 创建 testdata目录,并挂载到主机中,通过 docker inspect 查看
VOLUME testdata

# 在主机中挂载多个目录
VOLUME [work,world]

# 将相对于Dockerfile文件的scr文件复制到镜像dist目录下
COPY src dist

# ADD 先解压文件,然后在复制到镜像中
ADD demo.tar demo

# 执行命令
RUN apt update &&
    apt install nginx

# 暴露端口
EXPOSE 3306

# 切换工作目录
WORKDIR dir

# 随镜像启动一定执行
# ENTRYPOINT有两种启动方式
# Exec格式 ENTRYPOINT [binecho,hello world]
# Shell格式 ENTRYPOINT echo hello world
# Shell格式 会忽略CMD和docker run提供的参数
ENTRYPOINT [binecho, Hello] 

# 跟随镜像启动执行,可以被启动参数覆盖掉
# 有三种格式
# Exec格式,CMD格式,Shell格式
# CMD格式 CMD [hello,world]
# CMD格式只能作为给ENTRYPOINT的Exec格式提供参数
CMD [world]

生成镜像,使用当前目录下的Dockerfile文件生成newbackstage镜像

docker build --build-arg api_url='httpstoad-api.creams.ioadmin' -t newbackstage .

--build-arg 给 Dockerfile中的ARG 传参数

指定Dockerfile文件,生成镜像

docker build --build-arg api_url='httpstoad-api.creams.ioadmin' -t newbackstage -f Dockerfile

docker默认启动的容器都是通过docker0网桥和宿主机网络通信的

查看网络

docker network ls

创建一个网络,创建一个net-test网络

docker network create net-test

查看网络详情

docker network inspect net-test

启动容器指定网络,在不同网络中的docker容器不能通信

docker run -d -e MYSQL_ROOT_PASSWORD=root -p 3307:3306 --net=net-test mysql8.0

--net 指定网络

用宿主机网络,进入容器查看ip地址,可以发现ip地址就为主机ip地址

docker run -d -e MYSQL_ROOT_PASSWORD=root -p 3307:3306 --net=host mysql8.0

7、docker管理

docker version

dokcer info

docker system df

docker system prune -a -f

8、docker中安装并启动mysql

下载mysql镜像

docker pull mysql:8.0

启动镜像

docker run -d --restart=always --name mysql-service -v /mysql/data:/var/lib/mysql -p 3306:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=your_password mysql:8.0

查看启动的镜像,找到容器名称

docker ps

进入正在运行的容器中

docker exec -it cece66137605 bash

启动mysql

mysql -uroot -proot
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/963451.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号