Docker的安装 Docker下载安装
Docker的下载与安装还是比较丝滑的,总比Tensorflow什么的需要配各种环境强。其中Docker Desktop可以直接在官网下载安装文件,并自动安装。Linux版本在官网文档中也有详细的命令行教程:官方安装教程
映像文件位置修改针对 Docker Desktop for Windows:
在启动 docker 后,其默认使用wsl2的后端,并默认创建两个子系统,名为docker-desktop 和docker-desktop-data 分别存放文件数据和系统数据,其默认在C盘中。利用下列代码改变磁盘映像文件的位置:
wsl -v -l #查看版本和wsl列表 wsl --shutdown #关闭系统 wsl --export data-desktop destDirdata.desktop.tar #移出数据 wsl --unregister data-desktop #卸载子系统 wsl --import data-desktop destDir destDirdata.desktop.tar #导入数据
然后restart docker,docker就会自动开启这两个子系统,此后docker中的文件将保存在新的目录下。
当然也可以在上面的界面中选择不使用 wsl2 这样 docker 就会通过 Hyper-V 创建虚拟环境。
安装后执行下面命令,如果正常显示版本则安装成功:
docker version # 检查版本命令修改镜像仓库
docker默认使用官方镜像仓库,这里建议使用阿里云的镜像加速网址:
"registry-mirrors": ["https://<你的id>.mirror.aliyuncs.com"]
这样 docker 的环境基本大功告成!运行下面代码,即可启动示例项目:
docker run -d -p 8080:80 docker/getting-started
其中-d代表后台执行-p代表端口号映射,将容器中的80端口对外映射为8080。
小结- 官方安装教程,官方文档十分详细完全可以满足我们安装的需要。
- Docker Desktop 默认使用WSL2作为后端,可以在设置中进行修改。
- Docker Desktop 的磁盘映像如果不希望放在C盘,可以根据上面操作修改。
- docker version验证是否安装成功。
- 更改镜像仓库,加快速度。
Docker常用命令 帮助命令
docker version # docker版本 docker info # docker系统信息 docker [opt] --help # docker的opt命令帮助
可以直接在Docker官方文档地址查询相关命令。
Docker 镜像命令docker images # 查看本机所有镜像
REPOSITORY TAG IMAGE ID CREATED SIZE tomcat 9.0 3f3cadde9a68 2 days ago 680MB docker/getting-started latest 26d80cd96d69 8 days ago 28.5MB # 可选项 -a, --all # 列出所有镜像 -q, --quiet # 列出镜像id -aq # 所有镜像id
docker search # 搜索镜像
NAME DEscriptION STARS OFFICIAL mysql MySQL is a widely used 11803 [OK] mariadb MariaDB Server is a hi 4492 [OK] ... # 可选项 --filter=STARTS=3000 # 搜索star不少于3000的
docker pull image[:tag] # 拉取镜像,默认tag为latest
docker pull 采用分层下载机制,联合文件系统可以共用部分文件,减少磁盘占用。
docker pull mysql:5.7 # 其中5.7版本必须出现于官网中 5.7: Pulling from library/mysql ffbb094f4f9e: Already exists df186527fc46: Already exists fa362a6aa7bd: Already exists 5af7cb1a200e: Already exists 949da226cc6d: Already exists bce007079ee9: Already exists eab9f076e5a3: Already exists c7b24c3f27af: Pull complete 6fc26ff6705a: Pull complete bec5cdb5e7f7: Pull complete 6c1cb25f7525: Pull complete Digest: sha256:d1cc87a3bd5dc07defc837bc9084f748a130606ff41923f46dec1986e0dc828d Status: Downloaded newer image for mysql:5.7 docker.io/library/mysql:5.7
docker rmi [id] # 删除指定id镜像,-f 强制删除
docker rmi -f id1 id2 ... # 批量删除镜像 docker rmi -f $(docker images -aq) # 删除所有镜像Docker 容器命令
新建容器并启动
docker run [opt] image # 常用参数 --name="Name" # 容器名字 -d # 后台方式运行 -p # 指定映射端口 -p ip:主机端口:容器端口 -p 主机端口:容器端口 -p 容器端口 -p # 随机指定端口 -it # 进入容器,以交互模式运行 # 启动 centos 执行bash,并进入容器(小centos系统) docker run -it centos /bin/bash
列出所有的运行的容器
docker ps # 列出当前运行的容器 # 常用参数 -a # 列出所有运行过的容器 -n=k # 显示最近k个创建的容器 -q # 只显示容器id
退出容器
exit # 容器停止并退出 ctrl+p+q # 退出容器,容器继续运行
删除容器
docker rm ConTAINER docker rm -f $(docker ps -aq) # 支持参数传递 docker ps -aq|xargs docker rm # 借用linux管道命令删除
启动与停止容器
docker start ConTAINER # 启动容器 docker restart ConTAINER # 重启容器 docker stop ConTAINER # 停止容器 docker kill ConTAINER # 强制杀死容器Docker进阶常用命令
后台启动容器
docker run -d centos # docker ps 发现censtos停止 # docker 后台运行容器时,如果发现没有应用,则自动停止容器 # 可以用 docker run -d centos /bin/bash
查看后台日志
docker logs [opt] ConTAINER # 可选参数 -f # 查看接下来输出的log -t # 显示timestamp --tail k # 显示后k个log
查看容器中进程信息
docker top ConTAINER # 查看容器内部进程信息
查看容器元数据
docker inspect ConTAINER
# 关于容器的所有元数据信息
[
{
"Id": "37e690bc3d38018588df3ead2ea8d84e30941ba418394c0a293c7f1e7627eb65",
"Created": "2021-12-11T04:06:26.049296457Z",
"Path": "/bin/bash",
"Args": [],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 4213,
"ExitCode": 0,
"Error": "",
"StartedAt": "2021-12-11T04:06:26.335814283Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
....
进入当前运行的容器
# 进入后台运行的容器并进行操作 # 命令 # 方式一: 开启新的终端 docker exec -it ConTAINER /bin/bash # 以bash命令进入 # 方式二: 进入正在运行的命令行,而非开启新的窗口 docker attach ConTAINER # docker exec 进入容器开启新的终端 # docker attach 进入正在运行的终端
从容器内拷贝文件到主机上
在容器中centos的 /home/geng.java,拷贝到主机中的/home/ 中
# 前为容器中地址,后为目的地址 docker cp CONTAINER:/home/geng.java /home/ # 未来可以使用-v卷技术小结
上图描述了docker的基本的工作命令图,docker命令实质上没有什么技术难度,实战多用,越用越熟!
实战练习 Nginx部署
一. 拉取镜像:
方法一:拉取最新版本
# 图方便可以直接pull最新版本 git pull nginx
方法二:拉取指定版本
步骤1:打开Docker Hub
步骤2:搜索Nginx,查看提供的版本号
步骤3:拉取镜像
# 拉取制定版本 如: docker pull nginx:1.21.4
二. 运行Nginx
# 在名为nginx01容器中运行,对外端口号为1314 docker run -d --name nginx01 -p 1314:80 nginx # 测试是否运行成功 curl localhost:1314 # 输出内容如下 [root@GengCloud home]# curl localhost:1314Welcome to nginx! Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.Thank you for using nginx.
!注意: 在服务器上运行这个命令的同学,可能迫不及待地想在浏览器上输入ip:1314,然后查看页面了,此时如果没有设置安全组,可能就会出现请求超时的情况,因此以阿里云为例,执行如下操作。
三. 设置安全组
以阿里云为例,打开阿里云官网,然后找到自己的服务器实例,侧栏中点击安全组:
我们可以创建安全组,也可以在目前使用的安全组上进行修改:
在里面可以看到原有的80,443等端口是默认开放的,我们只需要将我们希望开放的端口输入,即可完成配置。这样我们在浏览器中输入ip:1314即可显示出Nginx的欢迎页面!



