一,Ubuntu22.04安装docker
Ubuntu22.04安装docker - 知乎 (zhihu.com)
关于ubuntu 无法 与windows相互复制粘贴文字
sudo apt-get autoremove open-vm-tools
sudo apt-get install open-vm-tools-desktop
然后重启 就可以成功解决问题
二.Ubuntu22.04安装mysql
Ubuntu22.04安装mysql_人生短短几个秋啊的博客-优快云博客
三.docker镜像
1.镜像查找
docker search 镜像名
sudo docker search redis
2.镜像拉取
docker pull 镜像名
sudo docker pull redis
3.镜像列表查看
docker images
4.镜像删除
docker rmi 镜像名称:标签或镜像id
sudo docker rmi redis
四.容器管理
1.容器运行
docker run [options] image [command] [agrs]
- -d :表示后台运行
- --name :容器名
- -p :表示端口:宿主机(Linux主机)端口:容器端口
- -e : 环境变量
-
sudo docker run -d --name mysqlDocker -p 3307:3306 -e MYSQL_ROOT_PASSWORD=861127 mysql:latest
2.容器查看
sudo docker ps
查看日志:
docker logs 容器ID
3.容器登入
docker exec [options] container command [args]
docker exec -it mysqlDocker /bin/bash
- -i :表示保持标准输入开放,允许该容器通过标准输入进行交互
- -t : 表示为该容器分配一个伪终端,供用户交互
- -it :表示显示在linux上
- mysqlDocker:表示容器名
- /bin/bash:表示command
- exit :表示退出
docker attach [options] container :也可以用于登入
4.容器启停
停止容器:
docker stop [options] container [container]
- -t :表示停止该容器前等待的秒数
启动容器:
docker start [options] container [container]
5.容器自启动
systemctl start docker //启动
systemctl status docker //查询
systemctl stop docker //停止
systemctl restart docker //重启
6.容器删除
docker rm [options] container [container]
例子:docker rm mysqlDocker
7.容器数据拷贝
docker cp [options] container:src_path dest_path 容器向宿主机拷贝
docker cp [options] src_path container:dest_path 宿主机向容器拷贝
- -a:复制前用户与组信息
- src_path:源路径
- dest_path:目标路径
- container:容器名
8.容器导出与镜像导入
容器导出本地文件:
docker export [options] container
- -o:容器导出到本地文件中
将容器所导出的本地文件导入为本地镜像
docker import file [repository[:tag]]
- [repository]:由本地文件导入生成的镜像仓库名
- [:tag]:生成镜像的标签
9.自定义镜像创建
docker commit [options] container [repostory[:tag]]
- -a:作者信息
- -m:提交时的备注说明
- -p:后面给出true时,则在提交创建自定义镜像时暂时当前容器运行
- container:容器名
- [repostory]:镜像仓库源
- [:tag]:生成镜像的标签
五.Docker卷与绑定挂载
(作用:持久化存储,文件共享)
1.创建卷(首先要先启动容器)
sudo docker volume create 卷名
2.卷列表查看
sudo docker volume ls
3卷列表内容查看
sudo docker inspect 卷名
4.卷删除
sudo docker volume rm 卷名
移除所有未被使用的本地卷
sudo docker volume prune
5.绑定挂载(需要先停止你需要的镜像,然后删除,在执行下面的操作)
sudo docker run -d --name mysqlDocker --mount type=bind,source=/home/dhy/data_bind,target=/var/lib/mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=861127 mysql:latest
6.Docker对象查询
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
-f 选项参数
六.自定义镜像构建
1.Dockerfile基本结构
#1.基础镜像信息
FROM centos
#2.维护者信息
MAINTAINER studk
#3.镜像操作命令
RUN yum install -y wget
#4.容器启动时执行指令
CMD touch /root/hello && ls -la /root/
2.Dockerfile镜像构建流程
- 编写dockerfile脚本
- 使用dockerfile指令构建
1 . 在宿主机中创建一个空的文件夹 course06 : mkdir course06
2. cd course06
3. touch dockerfile
4. 使用ls指令就会看到course06 出现dockerfile
5. vim dockerfile 编辑dockerfile
6. FROM nginx
RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html
复制进入dockerfile
7. :wq保存退出
8. 使用docker build -t nginx:v3 . 运行然后构建镜像.
9. 等待镜像构建完成,使用docker images指令查看新创建的镜像.
七.多容器项目
docker network create todo-app
在创建的⽹络当中新建⼀个mysql容器
docker run -d \
--network todo-app --network-alias mysql \
-v todo-mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=todos \
mysql:latest

docker run -it --network todo-app nicolaka/netshoot
启动第三个容器
新建一个course07
git clone https://github.com/docker/getting-started-app.git
docker run -dp 127.0.0.1:3000:3000 \
-it \
-w /app -v "$(pwd):/app" \
--network todo-app \
-e MYSQL_HOST=mysql \
-e MYSQL_USER=root \
-e MYSQL_PASSWORD=123456 \
-e MYSQL_DB=todos \
node:18-alpine \
sh -c "yarn install && yarn run dev"
docker run -dp 127.0.0.1:3000:3000 \
-it \
-w /app -v "$(pwd):/app" \
--network todo-app \
-e MYSQL_HOST=mysql \
-e MYSQL_USER=root \
-e MYSQL_PASSWORD=123456 \
-e MYSQL_DB=todos \
node:18-alpine

复制以下内容:
registry "https://registry.npm.taobao.org"
sass_binary_site
"https://npm.taobao.org/mirrors/node-sass/"
phantomjs_cdnurl "http://cnpmjs.org/downloads"
electron_mirror
"https://npm.taobao.org/mirrors/electron/"
sqlite3_binary_host_mirror "https://foxgis.osscn-shanghai.aliyuncs.com/"
profiler_binary_host_mirror
"https://npm.taobao.org/mirrors/node-
inspector/"
chromedriver_cdnurl
"https://cdn.npm.taobao.org/dist/chromedriver"
查看数据库
之后新建⼀个终端:
docker exec -it <mysql-container-id> mysql -p
todos
在mysql终端输⼊如下指令
select * from todo_items;
八. 使用 Docker Compose
1.创建 Compose 文件
在目录中,创建一个名为 .getting-started-app,
compose.yaml
2.定义应用服务
services:
app:
image: node:18-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- 127.0.0.1:3000:3000
working_dir: /app
volumes:
- ./:/app
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_DB: todos
mysql:
image: mysql:8.0
volumes:
- todo-mysql-data:/var/lib/mysql
volumes:
todo-mysql-data:
运行:
docker compose up -d