初识docker

初识docker

1. 安装docker

Linux 复制代码
 sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" && sudo apt-get update && sudo apt-get install -y docker-ce                     

查看docker版本
docker -v

2. 启动docker

Linux 复制代码
 systemctl start docker
 systemctl status docker
 systemctl restart docker
 systemctl stop docker

启动docker之前,最好将防火墙关闭,为后期访问docker中部署的服务做准备
sudo ufw disable
sudo ufw status

3. 配置镜像加速器

Linux 复制代码
## 为后期快速下载docker镜像做准备,以阿里云镜像站举例
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://mlbe5lel.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

阿里云配置详情

4.docker基本操作

镜像操作

镜像的命名

  • 镜像名称一般分两部分组成:repository:tag。例:MySQL:5.7
  • 在没有指定tag时,默认是Latest,代表最新版本的镜像

镜像操作命令

Linux 复制代码
docker images  #查看镜像
docker rmi   #删除镜像
docker pull  #拉取镜像,从镜像服务器或者私服
docker push  #推送镜像到镜像服务器
docker bvild #使用本地文件去构建镜像
docker save  #保存镜像为一个压缩包
docker load  #加载压缩包为镜像

命令举例

Linux 复制代码
docker pull nginx   #拉取Nginx镜像
docker images  #查看镜像拉取是否成功
docker save -o nginx.tar nginx:latest
# 将Nginx镜像保存成压缩包 Nginx.tar
docker rmi nginx:latest
#将拉取的Nginx镜像删除
docker load -i nginx.tar
# 加载Nginx.tar的镜像

容器操作

Linux 复制代码
docker run #创建容器(运行状态)
docker start #运行容器
docker stop #停止容器
docker pause #暂停容器
docker unpause #恢复暂停的容器
docker Logs #查看容器运行日志
docker ps  #查看所有运行的容器及状态
docker ps -a #可以查看没有运行的容器状态
docker exec #进入容器执行命令
docker rm #删除指定容器
docker rm -f #强制删除指定容器

docker logs -f container1
添加-f参数可以持续查看日志

命令举例

  1. 创建运行一个Nginx容器
Linux 复制代码
docker run --name container1 -p 80:80 -d nginx

命令解读:

  • docker run:创建并运行一个容器
  • -name:给容器起一个名字,比如叫做container1
  • -p:将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
  • -d:后台运行容器
  • nginx:镜像名称,例如nginx
  • 创建容器之后,生成容器的ID,显示出来
  1. 进入Nginx容器,修改HTML文件内容。
Linux 复制代码
docker exec -it container1 bash

命令解读:

  • docker exec:进入容器内部,执行一个命令
  • -it:给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
  • container1:要进入的容器的名称
  • bash:进入容器后执行的命令,bash是一个inux终端交互命令
    修改文件内容
Linux 复制代码
cd /usr/share/nginx/html/
apt-get update
apt-get install vim -y 
或者
sed -i -e 's#Welcome to nginx#初识docker#g' -e 's#<head>#<head><meta charset="utf-8">#g' index.html

exit 可以退出容器

Linux 复制代码
exc命令可以进入容器修改文件,但是在容器内修改文件是不推荐的

数据卷(容器数据管理)

  1. 数据卷操作的基本语法
Linux 复制代码
docker volume create 创建一个volume
docker volume inspect 显示一个或多个volume的信息
docker volume prune  删除未使用的volume
docker volume ls 列出所有的volume
docker volume rm 删除一个或多个指定的volume

操作举例

Linux 复制代码
docker volume create trick
创建数据卷
docker volume ls
查看所有数据卷
docker volume inspect trick
查看数据卷详细信息
  1. 数据卷挂载
  • 基本语法
Linux 复制代码
-v html::root/htm:把html数据卷挂载到容器内的/root/html这个目录中
  • 操作举例

    新创建一个容器,将html数据卷挂载到/usr/share/nginx/html目录中

Linux 复制代码
docker run --name trick -p 80:80 -v html:/usr/share/nginx/html -d nginx

如果没有创建html数据卷,使用上述命令也是可以的,docker会自动创建数据卷
/usr/share/nginx/html 是Nginx镜像中的HTML所在目录
可以在https://hub-stage.docker.com/_/nginx 查到
然后,通过docker volume inspect html 目录查看数据卷的挂载点。

就可以进入这个目录,去修改index.html文件(实现了没有进入容器去修改容器里面的文件)

  • 将宿主机的目录或文件挂载到容器
Linux 复制代码
-V [宿主机目录][容器内目录]
-V「宿主机文件][容器内文件]

案例:创建并运行一个MySQL容器,将宿主机目录直接挂载到容器

  • 1.拉取MySQL的镜像
  • 2.创建目录/tmp/mygl/data
  • 3.创建目录/tmp/myql/conf,将准备的MySQL配置文件hmy.cnf文件使用远程工具上到/tmp/mygl/conf
  • 4.去DockerHub查阅资料,创建并运行MySQL容器,要求:
    • 挂载/tmp/myql/data到mysql容器内数据存储目录
    • 挂载/tmp/myql/conf/hmy.cnf到mysql容器的配置文件
    • 设置MySQL密码
Linux 复制代码
docker pull mysql

mkdir -p /tmp/mysql/data
mkdir -p /tmp/mysql/conf

docker run --name mysql -e MYSQL_ROOT_PASSWORD=密码 -p 3306:3306 -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf -v /tmp/mysql/data/:/var/lib/mysql -d mysql

## -e : 环境变量

测试

连接成功

相关推荐
日常筹谋记43 分钟前
工业厂房 TPO 防水卷材:技术需求如何传导到配方层面?
运维·网络·html
迷途之人不知返1 小时前
【文件系统】-4-软硬连接
linux
Linux_cy1 小时前
服务器管理工具哪个好用?我用了七八个
运维·服务器·javascript·python·ssh·面板·gmssh
1234567890@world3 小时前
正点原子 ATK-DLRK3568 嵌入式Linux系统开发手册V1.3 详细总结
linux·stm32·单片机
sun_weitao3 小时前
极简版 MCP 工具实现方案
java·linux·服务器
发量惊人的中年网工4 小时前
抗DDoS服务哪家比较靠谱?选DDoS防护服务重点看哪几点?
运维·ddos
Meta Luo5 小时前
页面改版后自动化用例大量失败,应该怎么维护?
运维·功能测试·测试工具·自动化
爱和冰阔落5 小时前
【Linux】线程安全进阶:单例模式、可重入函数与死锁排查
linux·运维·安全·单例模式
dk_tjy5 小时前
迪康网络运维故障自愈的自动化闭环技术路径分析
运维·网络·自动化