docker入门
1. docker安装
#docker的安装
sudo apt-get install docker.io
#取消普通用户sudo的方法
#1. 创建docker组:
sudo groupadd docker
#2. 将当前用户加入docker组:
sudo gpasswd -a ${USER} docker
#3. 重启服务:
sudo service docker restart
#4. 刷新docker成员:
newgrp - docker
2. 镜像
查找并下载镜像
#查找镜像 docker search centos docker search mysql #下载镜像(lastest 为镜像的版本,不指定默认为latest) docker pull mysql:latest docker pull centos:latest
镜像的操作
1 # 列出下载的镜像
2 docker image ls
3 # 删除镜像
4 docker image rm name/id
3. 容器
创建容器
# 在指定的文件夹下创建容器
cd ~/workplace/mysql
docker run -p 3306:3306 --name yu-mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
# 命令说明:
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
-name yu-mysql:为容器创建一个名字
-v -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 start name/id
# 停止容器
docker stop name/id
# 删除容器
docker rm name/id
查看容器运行情况
#查看运行的容器
docker ps
# 查看所有容器
docker ps -a
查看创建的容器的信息
# 查看容器的信息
docker inspect name/id
向容器内部发送指令
# 进入容器内部
docker exec -it yu-mysql bash
# 或者(我的不好使)
docker attach yu-mysql
# 在容器内创建一个文件
docker exec -it yu-mysql touch 123.txt
4. 其他操作
容器和容器外拷贝文件
# 把容器中的文件拷贝到容器外 docker cp yu-mysql:/123.txt ~/workplace # 把容器外的文件拷贝到容器内 docker cp ~/workplace/456.txt yu-mysql:/
修改后的容器发布为镜像
# 将修改后的容器发布为镜像, `-a`表示作者, `-m`表示对本次修改的说明
docker commit -a "shuai_long" -m "add 123.txt" yu-mysql mysql:0.1
# 基于新建的镜像创建容器
docker run --name yu-mysql:01 mysql:0.1
私有仓库
下载仓库注册服务器的镜像,并创建出容器
# 下载私有仓库注册服务器的镜像
docker pull registry:latest
# 创建一个注册服务器容器
sudo docker run -d -p 5000:5000 --name server-registry -v /tmp/registry:/tmp/registry registry:latest
#参数说明
-d容器在后端运行
-p 5000:5000在容器的5000端口运行并映射到外部系统的5000端口,
--name server-registry容器命名为server-registry,
-v /tmp/registry /tmp/registry 把宿主机的目录/tmp/registry挂载到容器目录/tmp/registry
本地镜像添加标签,并将其归入本地仓库
# 为本地镜像增加标签
docker tag mysql:0.1 localhost:5000/mysql:0.1
#将被标记的本地镜像, push到仓库
docker push localhost:5000/mysql:0.1
测试仓库的可用性
#在虚拟机内网,开启另一台虚拟机, 该虚拟机尝试从Ubuntu获取刚刚创建的镜像mysql:0.1 ifconfig | grep inet # 获取到IP地址后 sudo docker pull 192.168.214.156:5000/mysql:0.1