Docker学习

1 分钟读完

Docker 学习过程

1.实践

Docker入门,参考官方入门Docker 入门实战

Mac下载,双击打开,将Docker拖到Applications中完成安装,再启动Docker,右上角看到鲸鱼

#安装
docker version    #同时显示client和server的版本号
docker info       #Containers/Images/Storage/Registry等信息
docker run hello-world  #运行hello-world,没有image会自动下载,name是随机起的,退出后会留有一个Stopped状态的Containers,此时image是不能删除的
docker run -d -p 80:80 --name webserver nginx  #此时web可以访问
docker images  #已经安装的image
docker ps       #正在运行的进程,可以看到nginx
docker ps -a  #可以看到所有进程,包括已经退出的
docker stop webserver  #停止,webserver前面的name,ps中可以看到
docker start webserver #启动,webserver是前面指定的name
docker rm   #删除container,全部删除后对应的image才可以删除
docker rmi  #删除不用的image

docker search learn/tutorial  #查找image
docker pull learn/tutorial    #获取对应的image,镜像基于ubuntu系统
docker run learn/tutorial echo "hello word"  #在镜像中执行echo命令
docker run learn/tutorial apt-get install -y ping  #安装ping命令
docker commit 698 learn/ping #提交容器修改,698是容器ID,后面是name
docker run lean/ping ping www.google.com #新镜像可以ping
docker inspect  1cc  #检查镜像/容器,1cc是镜像ID或容器ID
docker push learn/ping  #发布镜像


2. 入门资料

学习笔记 《Docker入门实战》

3.加速器

下载mysql,指定8.0,不是latest。latest镜像会不断更新。

docker  pull mysql:8.0

国内比较慢,点击桌面顶栏的 docker 图标,选择 Preferences ,在 Advanced 标签下的 Registry mirrors 列表中加入加速器地址,比如

http://4cc89515.m.daocloud.io

点击 Apply & Restart 按钮使设置生效。 再试试速度。

4. 制作镜像

mkdir ~/docker;cd ~/docker
export GOOS=linux
go build zerodollar.go        # fmt.Println("vim-go at ", os.Getenv("HOME"))
cat Dockerfile
    FROM scratch
    ADD  ./zerodollar  /home/zerodollar
    CMD ["/home/zerodollar"]
docker build -t z29759/zerodollar .
docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    z29759/zerodollar   latest              31f39c2b0a14        8 minutes ago        1.646 MB
docker tag z29759/zerodollar:latest z29759/zerodollar:1
docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    z29759/zerodollar   1                   31f39c2b0a14        8 minutes ago        1.646 MB
    z29759/zerodollar   latest              31f39c2b0a14        8 minutes ago        1.646 MB
docker login -u z29759
docker push z29759/zerodollar:1
docker rmi --force 31
docker run z29759/zerodollar:1
    Status: Downloaded newer image for z29759/zerodollar:1
    vim-go at  /

如果报 unauthorized: authentication required, 将~/.docker/config.json中的url修改成”https://index.docker.io/v1/”

5.启动mysql并访问

还有一个优化版本mysql/mysql-server,开发方便还是用mysql了,参考官方文档如何启动/连接

docker run --name malldb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=rootpw -v $HOME/workspace/mall/malldb_volume:/var/lib/mysql -d mysql:8.0 
docker cp  容器ID:/etc/mysql/mysql.cnf my.txt
docker exec -it malldb bash     #本容器交互式访问
/# mysql -u root -prootpw               
mysql> create database mall DEFAULT CHARACTER SET utf8;

设置mysql支持utf8, 容器中拷贝出的配置文件my.txt中添加以下配置:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

拷贝该文件到容器(原因是容器中没有vim)

docker cp my.txt 容器ID:/etc/mysql/mysql.cnf
docker stop  容器ID
docker start 容器ID

查看最后10行日志

docker logs --tail 10 malldb            

另外容器访问malldb ,首先查询mysql服务容器的ip地址,赋值给MYSQLIP。 同时-p将3306映射到宿主机的3306,也可用访问。

export MYSQLIP=`docker inspect malldb|jq ".[0].NetworkSettings.IPAddress"`
export MYSQLIP=`docker inspect --format  malldb`
docker run -it --link malldb:mysql --rm mysql:8.0 sh -c 'exec mysql -h"$MYSQLIP" -P3306 -uroot -prootpw'    
> show variables like '%char%';   #查看编码

查看mount点

docker inspect malldb|jq ".[0].Mounts"

如果后面有mallapi的程序需要访问mysql,可用这样启动

docker run --name mallapi --link malldb:mysql -d z29759/mallapi:1   

直接进入容器内部

nsenter --target `docker inspect --format   3002e553d996` --mount --uts --ipc --net --pid

标签:

分类:

更新时间:

留下评论

您的电子邮箱地址并不会被展示。请填写标记为必须的字段。 *

正在加载...