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 [email protected]

# 参数
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

6、docker中的网络

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

精彩推荐

面试笔试系列

思维导图系列

Linux常用命令壁纸

接口Requests系列

测试框架pytest系列

Jmeter快速上手之接口测试

自动化测试框架结构图

移动安全框架(MobSF)

你可能感兴趣的:(软件测试,常用命令,docker,容器,mysql)