Docker基本使用
容器使用
- 获取镜像
$ docker pull ubuntu
- 启动容器
$ docker run -it ubuntu /bin/bash
- -i: 交互式操作。
- -t: 终端。
- -d:不进入容器
- ubuntu: ubuntu 镜像。
- /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
- 其他常用命令
docker ps 查看当前正在运行的容器
docker ps -a 查看所有容器的状态
docker start/stop/restart id/name 启动/停止/重启某个容器
docker attach id 进入某个容器(使用exit退出后容器也跟着停止运行)
docker exec -ti id 启动一个伪终端以交互式的方式进入某个容器(使用exit退出后容器不停止运行)
docker images 查看本地镜像
docker rm id/name 删除某个容器
docker rmi id/name 删除某个镜像
docker run --name test -ti ubuntu /bin/bash 复制ubuntu容器并且重命名为test且运行,然后以伪终端交互式方式进入容器,运行bash
docker search name 查找镜像docker build -t soar/centos:7.1通过当前目录下的Dockerfile创建一个名为soar/centos:7.1的镜像
docker run -d -p 2222:22 --name test soar/centos:7.1 以镜像soar/centos:7.1创建名为test的容器,并以后台模式运行,并做端口映射到宿主机2222端口,P参数重启容器宿主机端口会发生改变
安装mysql
- 在根目录下创建mysql镜像文件
mkdir mysql
- 下载mysql镜像
sudo docker pull mysql
- 使用mysql镜像
sudo docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
命令说明:
-p 3306:3306
:将容器的 3306 端口映射到主机的 3306端口。
-v $PWD/conf:/etc/mysql/conf.d
:将主机当前目录下的 conf/my.cnf
挂载到容器的 /etc/mysql/my.cnf
。
-v $PWD/logs:/logs
:将主机当前目录下的 logs 目录挂载到容器的 /logs
。
-v $PWD/data:/var/lib/mysql
:将主机当前目录下的data目录挂载到容器的 /var/lib/mysql
。
-e MYSQL_ROOT_PASSWORD=123456
:初始化 root 用户的密码。
- 查看容器启动情况
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a69977b153e5 mysql "docker-entrypoint.s…" 13 seconds ago Up 11 seconds 0.0.0.0:3306->3306/tcp mymysql
- 测试数据库是否正常运行
sudo docker exec -it mymysql bash(docker exec是docker镜像的连接命令,)
查看数据库状态
service mysql status
如果没有启动就将它启动:
service mysql start
输入:mysql -u root -p
Enter password:
进入成功
查看数据库
show databases;
制作ubantu镜像
- 选择基础镜像
$ docker pull ubuntu:16.04
- 创建容器并进入
$ docker run -t -i ubuntu /bin/bash
- 进入容器,添加工具
$ apt update
$ apt install python3
$ apt install pip3
$ apt install vim
...
- 将此容器打包成自己的镜像
$ docker commit -m "add a ubuntu16.04 image with pyhon3 and vim" -a "lmx" 9d498869c227 lmx4098/demo:ubuntu16.04_python3_vim
-m:注释
-a:作者 容器id
lmx4098/demo:ubuntu16.04_python3_vim:lmx4098/demo:Repositories名称且必须要和自己docker hub上的Repositories一致,ubuntu16.04_python3_vim:版本号。
- 上传推送
$ docker push lmx4098/demo:ubuntu16.04_python3_vim
更换镜像源
vi /etc/docker/daemon.json
{ "registry-mirrors": ["https://registry.docker-cn.com"] }
systemctl daemon-reload
systemctl restart docker
卸载
yum remove docker* -y
rm -rf /var/lib/docker/