前言
本文是我快速入门实操docker的记录,用于作业和备忘,并不介绍基本概念。
关于docker的最好的学习文档是官方文档https://docs.docker.com/
其次可以参考每天5分钟玩转 Docker 容器技术
docker 实操记录
准备docker环境
从https://docs.docker.com/install/处可以查询各个系统的docker的安装方式,我在ubuntu18.04上测试,安装教程见官网https://docs.docker.com/install/linux/docker-ce/ubuntu/
本次直接选择从仓库中can安装,过程为:
- 更新包目录
$ sudo apt-get update
- 安装使apt能够使用https的包
$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
- 添加docker的官方GPG密钥
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 添加docker stable 仓库
$ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
- 更新包目录
$ sudo apt-get update
- 下载docker
$ sudo apt-get install docker-ce docker-ce-cli containerd.io`
- 运行helloworld判断是否成功安装docker
$ sudo docker run hello-world
docker运行时检测没有文件回自动从docker仓库里下载,运行helloworld后输出以上结果说明docker正常运行。
docker基本命令
注:如果没有配置用户权限,则docker命令应该在sudo下运行。
-
运行镜像
$ docker run -it ubuntu bash
参数-t让docker分配一个伪终端并绑定在容器的标准输入上,-i让容器的标准输入保持打开。
运行后会显示一个ubuntu容器的bash界面,可以在上面敲命令。
-
显示本地镜像库
$ docker images
-
获取帮助
$ docker --help
以下是显示的管理命令,望文生义即可
Management Commands: builder Manage builds config Manage Docker configs container Manage containers context Manage contexts engine Manage the docker engine image Manage images network Manage networks node Manage Swarm nodes plugin Manage plugins secret Manage Docker secrets service Manage services stack Manage Docker stacks swarm Manage Swarm system Manage Docker trust Manage trust on Docker images volume Manage volumes
-
显示运行中的容器
$ docker ps
-
显示所有容器(包括已停止)
$ docker ps -a
MySQL与容器化
-
拉取mysql镜像
$ sudo docker pull mysql:5.7
根据网络环境,可能会下载很长时间
下载完后截图: -
Dockerfile介绍
Dockerfile 给出了docker的构建过程,如上述mysql的Dockerfile为https://github.com/docker-library/mysql/blob/master/5.7/Dockerfile
一般有如下字段:FROM base_image RUN shell_commands ENV env_vars VOLUME path COPY source destination ENTRYPOINT [“executable”,”parm1”, ”parm2”,…] EXPOSE ports CMD [“executable”,”parm1”, ”parm2”,…]
可以自行配置Dockerfile来构建自己需要的容器。
-
使用MySQL容器
sudo docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
注意:如果出现端口占用的问题,可以更改监听端口或使用命令
netstat -tunlp | grep 端口号
查看占用端口的进程pid,如netstat -tunlp | grep 3306
,查到占用端口的进程后杀进程即可。杀进程可以使用kill -9 [pid]
来解决,如进程1234占用端口则直接‘kill -9 1234’(此做法过于暴力,建议通过正常途径关闭进程)
另外,如果出现多次运行后提示docker名已被使用,要求改名或删除,可以通过docker ps -a
查看所有容器,然后通过·docker rm [container id]`来删除,container id不需要输入完整,只需要输入能够与其他container区别的长度即可。
运行mysql后结果;
-
启动 MySQL 客户端
docker run -it --net host mysql:5.7 "sh"