Docker学习

day1

Docker安装

Ubuntu/Centos安装Docker

curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun

//后面可能会进行修改

Kali/Debian安装Docker

# 添加Docker PGP密钥
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

# 配置docker apt源 我这里用的国内阿里云的docker下载源
echo 'deb https://mirrors.aliyun.com/docker-ce/linux/debian buster stable'> /etc/apt/sources.list.d/docker.list

# 更新apt源
apt update

# 如果之前安装了docker的话 这里得卸载旧版本docker
apt remove docker docker-engine docker.io

# 安装docker
apt install docker-ce

# 查看版本
docker version

//后面可能会进行修改

开机自启

sudo systemctl enable docker
sudo systemctl start docker

Docker基础命令

搜索镜像

docker search 关键字 
eg:docker search php

下载镜像

docker pull 镜像名 
eg: docker pull demo/php5

查看已经下载的镜像列表

docker images

Docker run运行docker镜像,创建新容器

docker run -d 镜像名 //创建容器
eg: docker run -d sql
docker run --name 容器名 镜像名/镜像ID
docker run --name sql -d mysql
docker run -d 镜像名 //运行docker镜像,创建新容器
-p 映射端口 8080:80 物理机端口:容器端口 把容器的80端口映射到虚拟机的8080端口
-d 指定镜像,使用-d时,容器会自动进入后台,如果下进入容器内部
--name 为容器指定一个名称 eg: --name hhh
-e 设置环境变量 eg: -e MYSQL_ROOT_PASSWORD=root 设置mysql的root用户密码为root

docker exec -it 容器ID /bin/sh //alpine linux系统的sh启动方式
docker exec -it 容器ID /bin/bash //常见linux系统的sh启动方式


docker run -p 8080:80 --name lamps -e MYSQL_ROOT_PASSWORD=root -d lamp
docker run -p 指定端口 --name 运行之后的镜像名 -e MYSQL_ROOT_PASSWORD=root -d 指定镜像名

查看当前容器

docker ps -a

统计信息

docker status

启动容器

docker start 容器名/容器ID
eg: docker start sql/abc

重启容器

docker restart 容器名/容器ID
eg: docker restart sql/abc

终止容器 /关闭容器

docker stop 容器名/容器ID
eg: docker stop sql/abc

停止所有正在运行的容器

docker stop $(docker ps -aq)

进入容器内部/连接容器

docker exec -it 容器名/容器ID /bin/bash
eg: docker exec -it sql/abc /bin/bash //ubuntu系统
docker exec -it sql/abc /bin/sh //alpine系统

删除容器

前提: 得先关闭想要删除的容器

docker rm 容器名/容器ID
eg: docker rm sql/ab1ccc

删除所有容器

前提: 得想关闭所有正在运行的容器

docker rm $(docker ps -aq)

删除镜像

docker rmi 镜像名/镜像ID(images id)
eg: docker rmi sql/ababab11

删除所有镜像

docker rmi $(docker images -q)

容器相互复制文件

(1)复制容器的文件到虚拟机

docker cp 83db10b340c3:/etc/apache2/httpd.conf /home //虚拟机执行
docker cp 容器id:文件路径 虚拟机 路径

(2)复制物理机的文件到容器内

docker cp hss 69daf8de7c49:/var/www/localhost/htdocs/ //复制当前目录下的hss文件夹到容器的/var/www/localhost/htdocs/路径下
docker cp 文件名 容器id:复制到的路径 //前提,物理机必须进入文件的目录

端口映射

部署一个容器,并将 8080 端口映射到宿主机的 8888 端口上

# 可以使用--name 自定义部署的容器名
docker run -d -p 8888:8080 --name 容器名 镜像名
eg: docker run -d -p 8888:8080 --name sql1 sql
# 可以直接通用镜像部署
docker run -d -p 8888:8080 镜像名
eg: docker run -d -p 8888:8080 sql

dockerfile部署镜像

# 前提:得先进入dockerfile所在的文件夹内
docker build -t 自定义镜像名称 .
eg: docker build -t sql .

docker commit

docker commit 从容器创建一个新的镜像

docker commit -a "提交镜像的作者" -m "提交时的说明文字" 容器ID 镜像名称:版本
docker commit -a "dockers" -m "big demo" ghhshhhh demo1:0.1
-a //必要
-m //可选

Dockerfile编写

待补充

Docker compose

待补充