Docker学习笔记-入门

创建一个新的 Docker 虚拟机

测试环境为Mac

docker-machine create --driver virtualbox default    

这就在 VirtualBox 中创建了一台新的default虚拟机。
该命令还会在~/.docker/machine/machines/default目录下生成一个 docker machine 的配置文件。只需执行一次create命令,然后可以使用docker-machine命令来开启,停止,查询并管理虚拟机。

列出所有可用的 docker machine

$ docker-machine ls
NAME                ACTIVE   DRIVER       STATE     URL                         SWARM
default             *        virtualbox   Running   tcp://192.168.99.101:2376  

获取default虚拟机的环境变量

$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.101:2376"
export DOCKER_CERT_PATH="/Users/mary/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell: 
# eval "$(docker-machine env default)"

连接到Docker VM

docker-machine ssh default

也可以在宿主机上通过ssh连接

ssh docker@192.168.99.100
user: docker
pass: tcuser

设置Docker默认镜像服务器

在/etc/docker/daemon.json添加以下配置,修改保存后重启 Docker 以使配置生效

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

查看docker镜像

docker@default:~$ docker images
REPOSITORY                     TAG        IMAGE ID         CREATED             SIZE
hub.c.163.com/library/tomcat   latest     72d2be374029     3 months ago        292MB

运行docker镜像,将docker容器的8080端口映射到宿主机的8888端口上

docker run -i -t -p 8888:8080 72d2be374029

删除镜像

docker rmi ed9c93747fe1

若镜像有运行的容器则无法删除

查看运行的docker实例

docker@default:~$ docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
1f68cb2ef5ee        72d2be374029        "catalina.sh run"   48 seconds ago      Up 47 seconds       0.0.0.0:8888->8080/tcp   modest_goldwasser
8409934c431d        72d2be374029        "catalina.sh run"   14 minutes ago      Up 14 minutes       0.0.0.0:8088->8080/tcp   practical_shirley

登录docker容器

docker exec -i -t 1f68cb2ef5ee /bin/bash

停止docker容器

docker stop --time=20 container_name

docker stop命令执行的时候,会先向容器中PID为1的进程发送系统信号SIGTERM,然后等待容器中的应用程序终止执行,如果等待时间达到设定的超时时间,或者默认的10秒,会继续发送SIGKILL的系统信号强行kill掉进程。在容器中的应用程序,可以选择忽略和不处理SIGTERM信号,不过一旦达到超时时间,程序就会被系统强行kill掉,因为SIGKILL信号是直接发往系统内核的,应用程序没有机会去处理它。在使用docker stop命令的时候,唯一能控制的是超时时间.

docker kill --signal=SIGINT container_name

与docker stop命令不一样的地方在于,docker kill没有任何的超时时间设置,它会直接发送SIGKILL信号,以及用户通过signal参数指定的其他信号。

docker stop命令,更类似于Linux系统中的kill命令,二者都是发送系统信号SIGTERM。而docker kill命令,更像是Linux系统中的kill -9或者是kill -SIGKILL命令,用来发送SIGKILL信号,强行终止进程。

查看容器的信息

docker ps命令可以查看容器的CONTAINER ID、NAME、IMAGE NAME、端口开启及绑定、容器启动后执行的COMMNAD。经常通过ps来找到CONTAINER_ID。
docker ps 默认显示当前正在运行中的container
docker ps -a查看包括已经停止的所有容器
docker ps -l 显示最新启动的一个容器(包括已停止的)

查看docker容器的IP地址

sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' 1f68cb2ef5ee

查看日志

docker logs 1f68cb2ef5ee

跟踪日志,类似 tail -f xxx.log 可以通过ctrl+c退出查看日志

docker logs -f 1f68cb2ef5ee

Docker统计信息

docker@default:~$ docker stats
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT    MEM %               NET I/O             BLOCK I/O           PIDS
1f68cb2ef5ee        modest_goldwasser   0.13%               71.8MiB / 995.7MiB   7.21%               828B / 0B           1.2MB / 0B          41
8409934c431d        practical_shirley   0.13%               69MiB / 995.7MiB     6.93%               648B / 0B           69.6kB / 0B         43

深入容器

docker inspect 1f68cb2ef5ee

删除容器

docker rm e6dd317561da

可以通过参数 -f 强制删除运行中的容器。

删除所有容器

docker rm 'sudo docker ps -a -q'

docker ps命令会列出所有运行的容器,-a表示列出所有容器,-q表示只需要返回容器的ID

Docker安装Mysql

## 创建mysql本地存储目录
mkdir -p ~/mysql/data
docker run -p 3306:3306 --name mysql -v ~/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  -d hub.c.163.com/library/mysql:5.6

-p 3306:3306 是将docker 的3306端口映射到本机3306 端口
-v ~/mysql/data:/var/lib/mysql 是将docker的/var/lib/mysql 文件夹映射到本机的/mysql/data
-e MYSQL_ROOT_PASSWORD=123456 输入密码,mysql原始密码为123456

通过Dockerfile安装Mysql

Mysql官方提供了安装Mysql的Dockerfile,地址https://github.com/mysql/mysql-docker,这里选择8.0版本,一共三个文件

在default虚拟机上的docker用户目录下新建一个文件夹mysql,然后将这三个文件放在mysql文件夹下。进入mysql文件夹,执行以下命令即可构建一个新的镜像。

sudo docker build -t="test/mysql" .

build成功后使用docker images命令即可插件镜像

docker@default:~/mysql8$ docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
test/mysql                     latest              5320750e685d        2 hours ago         295MB

构建镜像后即可通过docker run命令来启动,需要在启动参数中设置mysql的密码。

docker run -e MYSQL_ROOT_PASSWORD=123456 5320750e685d
原文地址:https://www.cnblogs.com/umgsai/p/7989005.html