docker教程,猴子都能学会的教程

docker

参考地址:https://yeasy.gitbook.io/docker_practice/

docker的用处

搭建测试环境
搭建各类基础服务 (比如用例管理、流程管理等的软件)
搭建测试执行环境 (本地自动化代码环境)

docker和虚拟机的区别

docker不虚拟化内核
docker的关键技术
Namespace
联合文件系统
Cgroups

docker常用命令

  1. 拉取镜像
docker pull [image_name]
  1. 推送镜像
docker push [image_name]
  1. 查看所有镜像
docker image ls
  1. 删除镜像
docker rmi [image_name] or docker rmi [container_id]
  1. 为镜像打tag
docker tag {source_images_name:tag your_image_name:tag}
  1. 将一个镜像保存为.tar文件
docker save [image] > [image].tar

eg:

docker save jenkins/jenkins > jenkins.tar
  1. 将一个.tar文件转为镜像
docker load < jenkins.tar
  1. 运行容器
docker run -d --name={your_name} -p {port}:{port} -e TZ=Asia/Shanghai [image]

-d: 后台运行
{your_name}: 容器名称
-p: 暴露端口;第一个port为外网可访问的端口,第二个port为容器内部的端口
-e: TZ=Asia/Shanghai,设置时区为东八区

  1. 查看当前所有容器
docker ps -a

-a: 显示停止中的容器

  1. 停止容器

docker stop [container_name] or docker stop [container_id]

  1. 杀死容器
docker kill [container_name] or docker kill [container_id]
  1. 删除容器
docker rm -f [container_name] or docker rm -f [container_id]

-f: 强制删除容器,可以直接删除运行中的容器

  1. 重启容器(重新启动正在运行启动中的容器)
docker restart [container_name] or docker restart [container_id]
  1. 启动容器(处于停止中的容器)
docker start [container_name] or docker start [container_id]

15.进入容器命令

docker exec -it [container_name] bash or docker exec -it [container_id] bash
  1. 修改容器配置
    docker cp [container_name]:[container_path] [host_path] 把容器的文件拷贝到宿主机中

eg: docker cp laradock_mysql_1:/etc/test.txt /Downloads/

docker cp [host_path] [container_name]:[container_path] 把宿主机的文件拷贝到容器中

eg: docker cp /Downloads/test.txt laradock_mysql_1:/etc

  1. 一个容器的生命周期可涉及到的命令
// -d表示后台启动,-p 表示暴露端口;创建一个名字为myjenkins的jenkins容器,其暴露的端口为8080
1. docker run -d --name=myjenkins -p 8080:8080 jenkins

// 停止容器名为myjenkins容器
2. docker stop myjenkins 

// 启动一个名为myjenkins的处于停止中的容器
3. docker start myjenkins

// 删除名为myjenkins的容器
4. docker rm myjenkins

docker使用事例

  1. 启动mysql
# 拉取官方5.6版本的mysql镜像(若不加上版本号表示拉取最新的)
docker pull mysql:5.6
# docker image ls 可以查看已经拉取的镜像
# 启动一个mysql镜像
docker run -d --name local_mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai \
--mount type=bind,source="$(PWD)"/data,target=/var/lib/mysql  mysql:5.6 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --explicit_defaults_for_timestamp=false

docker run -d --name my_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai mysql:5.6  --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

注:一定要指定密码,时区、字符集,是否要将数据持久化到本地,可根据需要处理

-e MYSQL_ROOT_PASSWORD=123456 指的是密码
-e TZ=Asia/Shanghai 表示时区
--character-set-server=utf8mb4 和 --collation-server=utf8mb4_unicode_ci 表示字符集

#进入容器
docker exec -it [container_name] bash
eg:docker exec -it [container_name] mysql bash

# 在容器内使用mysql命令
登陆:mysql -u [user] -p 
eg: mysql -u root -p
  1. 启动redis
# 拉取官方镜像
docker pull redis
# 启动一个redis镜像
docker run -d --name my_redis -p 6379:6379 redis
  1. 启动rabbitmq
# 拉取官方镜像
docker pull rabbitmq
# 启动一个rabbitmq镜像
docker run -d --name my_rabbitmq -p 5672:5672 rabbitmq

docker定制镜像

1.创建目录:mkdir my_nginx
my_nginx下执行touch Dockerfile
编辑Dockerfile内容

FROM nginx
RUN echo '<h1>hello,Docker!</h1>' > /usr/share/nginx/html/index.html
CMD echo 'hello world'

在Dockerfile目录下执行docker build -t my_nginx:v3 .;创建名为my_nginx,tag为v3的镜像
运行镜像 docker run my_nginx:v3,结果会打印出hello world

dockerfile编写

1.常用指令

From:镜像源
WORKDIR:工作目录
COPY:将指定目录复制给容器的指定目录
RUN:运行时执行的命令
EXPOSE:暴露的端口
ENV:指定环境变量
ARG:构建时才有效的参数
CMD:运行时才有效的命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值